Какие функции и расширения 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
которые обеспечивают:
При вставке текста в 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, когда захожу на серверы. Я использую пару плагинов, чтобы облегчить себе жизнь.
Я использую конфигурацию 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. Вива Вим! Настраивается в любой степени.