Назад | Перейти на главную страницу

Функции и расширения Vim, облегчающие вашу работу

Какие функции и расширения Vim вы используете? Что бы вы порекомендовали системному администратору Linux?

Вероятно, это не будет преобладающим мнением, но я использую vanilla vim. Я не использую никаких специальных функций (кроме подсветки синтаксиса и нумерации строк), но это здорово, потому что я могу перейти на любую машину Unix и чувствовать себя как дома с любым vi, на котором они работают.

Я чувствую, что сила vim для системного администратора в том, что он везде, и вы можете сразу же начать его использовать. Вот почему я решил не настраивать свой vim.

Тем не менее, вот небольшой .vimrc, который я стараюсь копировать:

set background=dark
syntax on
set showmatch
set ruler
set softtabstop=4
set sw=4
set tabstop=4
set expandtab
set autoindent
set pastetoggle=<F8>

Вкладки - это просто потому, что я много использую Python, и пробелы там имеют значение =)

Я прочитал книгу о vim (Изучение редактора vi) от О'Рейли, и это было все, что мне было нужно. Я извлек из этого пару вещей, которые использую все время ...

1) хранение макросов. Нажмите клавишу «q», затем клавишу, к которой вы хотите ее привязать, затем выполните команду и снова нажмите «q». Затем, если вы нажмете «@key», он выполнит эту команду. Если вы нажмете «@@», он выполнит последнюю команду. Мне иногда нравится это за «присоединение к каждой второй строке»: ваш макрос - '^ Jj' (перейти к началу строки, присоединиться к строке, перейти к следующей). Затем сделайте '@j' (j - мой макрос для этого). Затем просто удерживайте клавишу «@». Он соединит каждую строку со следующей, переместится вниз, сделает это снова и т. Д.

2) Разделение окон. Введите ': sp' (горизонтальное разделение) или ': vsp' (вертикальное разделение). Окно расколется. Затем вы можете перемещаться между окнами с помощью Ctrl + w [hjkl], чтобы перемещаться вправо, вниз, вверх или влево соответственно. ZZ или: выйти, чтобы закрыть окно. : e, чтобы открыть другой файл. Особенно полезно для различий (вертикальное разделение) или чего-то еще (копирование / вставка для простоты).

3) Если вы кодируете, сворачивание - это фантастика. Складывание, в основном, закрывает или открывает сегменты между маркерами. Определение маркеров может быть выполнено вручную, с помощью регулярного выражения, с помощью ... чего угодно. Погуглите "свертывание в vim", и вы должны получить несколько хороших руководств.

Вне всяких сомнений, вот некоторые из параметров, которые я установлю вручную, если у меня нет .vimrc на определенном сервере:

set ic
set sc
set incsearch

которые обеспечивают:

  1. поиск без учета регистра
  2. интеллектуальный поиск без учета регистра, такой, что чувствительность к регистру включается, если вы ищете шаблон с использованием символов смешанного регистра
  3. включить инкрементальные результаты поиска, где совпадения выделяются во время ввода текста

При вставке текста в vim с включенным автоматическим отступом любые начальные пробелы в вставленных символах могут привести к проблемам с форматированием, когда уровень отступа текста увеличивается с каждой строкой. В этом случае просто введите следующую команду:

set paste

и форматирование текста больше не будет страдать от проблемы отступов.

Выпуск set nopaste отключит этот режим.

Визуальный режим также невероятно полезен, позволяя выбирать блоки текста, которые затем можно извлекать, удалять, преобразовывать и т. Д.

Чтобы войти в линейный визуальный режим, нажмите shift + v а стандартные клавиши перемещения вверх / вниз будут выбирать строки текста.

Чтобы войти в визуальный режим для персонажей, нажмите ctrl + v а клавиши перемещения влево / вправо / вверх / вниз позволят выбирать блоки текста.

Еще одна распространенная функция, которую я использую: выделение текста и нажатие gq чтобы отформатировать его в строки, разбитые на 78 символов. Это особенно полезно, когда я редактирую статьи Wiki с помощью плагина Firefox "Its All Text".

Если мы говорим о функциях, вы не можете отказаться от простоты поиска и заменить :s/../.../[g]. Конечно, знание регулярных выражений абсолютно необходимо, чтобы получить максимальную отдачу от этой функции.

И если вы кодируете с какой-либо регулярностью, возможность использовать клавишу '#' для поиска предыдущего экземпляра строки значительно экономит время.

Все говорят, что избегают использования .vimrc, потому что они все время находятся на разных серверах. Я никогда не был на сервере, на котором не было wget установлены. Поместите свой .vimrc на github, и это очень просто:

wget -O ~/.vimrc http://github.com/lucasoman/Conf/raw/master/.vimrc

Тем не менее, :set number включить номера строк и :syntax on включение выделения сделает vim более дружелюбным. Также узнайте текстовые объекты.

Я считаю вкладки в vim весьма полезными. Новый файл во вкладке открывается с помощью: tabe, а навигация между вкладками осуществляется с помощью: tabprev и: tabnext. Вы можете добавить следующие строки в свой .vimrc, чтобы иметь возможность перемещаться между вкладками с помощью клавиш alt + со стрелками

map <silent><A-Right> :tabnext <CR>
map <silent><A-Left> :tabprev <CR>

Вы можете найти больше информации о вкладках здесь: www.linux.com/archive/articles/59533

au FileType c    set foldmethod=indent
au FileType c    map <F5> :w<CR>:!make<CR>
au FileType c    map! <F5> <ESC>:w<CR>:!make<CR>

Я в значительной степени перешел на TextMate, так как моя рабочая станция - Mac, и большая часть моего «администрирования» - это программирование инфраструктуры с помощью Ruby.

Однако я все еще довольно часто использую Vim, когда захожу на серверы. Я использую пару плагинов, чтобы облегчить себе жизнь.

  • FuzzyFileFinder - функция, похожая на TextMate cmd-T для Vim
  • NERDtree - предоставляет «ящик проекта».

Я использую конфигурацию Vim, которую предоставил наш технический директор, с парой моих собственных модификаций (в основном отключите hlsearch, измените цветовую схему).

Эти две команды запоминают подробности о каждом файле, который вы открываете в системе. Кроме того, он также сохранит любые данные, которые вы храните в одном из «регистров» Vim (в основном в буфере обмена).

" Reopen files where we left off
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

" Remember for 100 files: (also save every register with <1000 lines), but not for files in /mnt or /media. Save to ~/.viminfo
set viminfo='100,s1000,r/mnt,r/media,n~/.viminfo

Я стараюсь не использовать какие-либо параметры, специфичные для vim, потому что я все еще натыкаюсь на системы, в которых есть только vi. Единственное исключение - Ctrl + V для текстовых операций "по столбцам".

При этом ... Чтобы выполнить текущий файл (не буфер), вы просто:

:!%

Чтобы запустить буфер на стандартный ввод интерпретатора (без предварительного сохранения в файл):

:w !/bin/sh

Также может использоваться с python, perl -w и т. Д.

Очень полезный метод - фильтровать буфер с помощью внешней команды:

1G!Ggrep -v unwanted_regex

(скопировал мой ответ из другой вопрос vi).

Я живу и дышу этой командой:

:se nowrap

Когда код переносится на следующую строку, он становится нечитаемым и непонятным, не говоря уже о том, какая строка запуталась.

Из всех функций vim это единственная, которую я обнаружил действительно желая от vi.

Я бывший пользователь TextPad и запомнил многие клавиши ускорителя этой программы. Одним из первых вещей, которые я сделал в Vim, было изучение функции карты для сохранения согласованности (поиск F5, замена F8 и т. Д.). Я создал свою личную цветовую схему и многое позаимствовал из чужих файлов vimrc. Вива Вим! Настраивается в любой степени.