Vim — Vim. Базовая настройка.
Вим, как и большинство других Unix-программм, хранит свои настройки в конфиге. Системный конфиг лежит в /usr/share/vim/vimrc, но нас интересует пользовательский, хранящийся в ~/.vimrc.
Формат конфигурационного файла весьма прост. Комментарии предваряются символом ". Все остальное - опции и команды для vim'a, которые он читает при старте. Рассмотрим некоторые, наиболее полезные на мой взгляд, вещи.
set nocompatible - заставляет работать вим в "полную силу". Если вместо этой строки прописать set compatible, то вим будет работать в "режиме совместимости с vi", то есть только бибкать и портить текст.
set nobackup - по умолчанию vim создает для каждого редактируемого файла резервную копию с суффиксом ~. Эта опция запрещает подобное поведение.
set background=dark - по умолчанию вим считает фон X-терминала светлым и меняет подсветку синтаксиса соответствующим образом. Если же на самом деле терминал имеет темный фон, то происходит вынос глаз. Эта опция объясняет виму, что фон терминала - темный.
Для сравнения: background=light и background=dark.
Следующая опция наверняка является самой востребованной и массовой. Она отключает....надоедливое бибиканье! Теперь вим будет просто мерцать. set visualbell - рай для эпилептика.
set nowrap
set sidescroll=10
set listchars+=precedes:<,extends:> - этот набор опций заставляет вим не переносить строку из файла на новую строку на экране, если строка из файла не помещается в экран. Вместо этого строка продолжается за пределы экрана, и вим рисует символы < > показывающие в каком направлении можно прокрутить строку (регулируется опцией listchars). За каждое нажатие на h иди l вим прокручивает строку на 10 символов влево\вправо (регулируется опцией sidescroll).
Помимо всего этого разнообразия опций, vimrc можно использовать чтобы биндить неиспользуемые vim'ом клавиши для исполнения своихтемных ритуалов светлых целей. Поможет нам в этом ключевое слово map:
map обозначение_клавиши действие
Названия клавиш обязательно заключаются в угловые скобки. Буквенно-цифровые клавиши обозначаются как они и есть, например <j> <3> <hht>. Последняя конструкция биндит некое действие на последовательное нажатие клавиш h, h и t. Функциональные клавиши, также обозначены в соответствии с их названием - <Esc> <Enter> <F1> <F2> <Shift>. Shift и Ctrl можно сократить до S и C соответственно. Функциональные и буквенно-цифровые клавиши комбинируются так: <C-j> <S-F5> и т.п.
Действия должны быть записаны в таком виде, будто вы их выполняете в запущенном виме в командном режиме. Например для запуска grep'a - :!grep '^A.\{1,\}x$' %<CR> В конце обязателен символ перевода строки - <CR>, а вместо символа '%' будет подставлено имя текущего файла.
Если вы хотите, чтобы ваше сочетание клавиш работало не только в командном режиме - используйте nmap\imap вместо map. nmap определяет сочетание клавиш для командного режима, imap - для режима вставки. Остальной синтаксис такой же как и у map.
Для примера, приведу несколько полезных биндингов:
map <F10> :wqa<CR>
map <Esc><Esc> :q!<CR>
" save session
map <C-k> :mksession! ~/.vim/lastSession.vim<CR>
" load last session
map <C-l> :source ~/.vim/lastSession.vim<CR>
" Auto adding by Tab (use Shift-TAB unstead)
imap <Tab> <C-N>
Для каждого параметра в vimrc можно определить для каких типов файлов он будет применен. Для этого перед параметром надо написать: au FileType список_расширений_файлов_через_запятую ....параметр.... Примеры:
au FileType c,cc,cpp,h,hpp imap #m int main(int argc, char * argv[]) {
au FileType c,cc,cpp,h,hpp imap #d #define
" Compile program using Makefile
au FileType c,cc,cpp,h,hpp imap <F5> <Esc>:make!<CR>a
au FileType c,cc,cpp,h,hpp nmap <F5> :make!<CR>
" Use LaTeX to compile LaTeX sources
au FileType tex map <F5> :!pdflatex %<CR>
" run shell script in shell
au FileType sh,bash map <F5> :!bash %<CR>
Список ресурсов, на которых освещается тема "издевательств" над ~/.vimrc:
http://linuxforum.ru/index.php?showtopic=36820 - Тонкая настройка vim, делимся полезностями в .vimrc. Ссылка уже приводилась в комментариях к моему предыдущему посту.
http://allaboutvim.blogspot.com/ - всё о Vim.
Мой .vimrc. Там еще осталось немало интересного.
Формат конфигурационного файла весьма прост. Комментарии предваряются символом ". Все остальное - опции и команды для vim'a, которые он читает при старте. Рассмотрим некоторые, наиболее полезные на мой взгляд, вещи.
set nocompatible - заставляет работать вим в "полную силу". Если вместо этой строки прописать set compatible, то вим будет работать в "режиме совместимости с vi", то есть только бибкать и портить текст.
set nobackup - по умолчанию vim создает для каждого редактируемого файла резервную копию с суффиксом ~. Эта опция запрещает подобное поведение.
set background=dark - по умолчанию вим считает фон X-терминала светлым и меняет подсветку синтаксиса соответствующим образом. Если же на самом деле терминал имеет темный фон, то происходит вынос глаз. Эта опция объясняет виму, что фон терминала - темный.
Для сравнения: background=light и background=dark.
Следующая опция наверняка является самой востребованной и массовой. Она отключает....надоедливое бибиканье! Теперь вим будет просто мерцать. set visualbell - рай для эпилептика.
set nowrap
set sidescroll=10
set listchars+=precedes:<,extends:> - этот набор опций заставляет вим не переносить строку из файла на новую строку на экране, если строка из файла не помещается в экран. Вместо этого строка продолжается за пределы экрана, и вим рисует символы < > показывающие в каком направлении можно прокрутить строку (регулируется опцией listchars). За каждое нажатие на h иди l вим прокручивает строку на 10 символов влево\вправо (регулируется опцией sidescroll).
Помимо всего этого разнообразия опций, vimrc можно использовать чтобы биндить неиспользуемые vim'ом клавиши для исполнения своих
map обозначение_клавиши действие
Названия клавиш обязательно заключаются в угловые скобки. Буквенно-цифровые клавиши обозначаются как они и есть, например <j> <3> <hht>. Последняя конструкция биндит некое действие на последовательное нажатие клавиш h, h и t. Функциональные клавиши, также обозначены в соответствии с их названием - <Esc> <Enter> <F1> <F2> <Shift>. Shift и Ctrl можно сократить до S и C соответственно. Функциональные и буквенно-цифровые клавиши комбинируются так: <C-j> <S-F5> и т.п.
Действия должны быть записаны в таком виде, будто вы их выполняете в запущенном виме в командном режиме. Например для запуска grep'a - :!grep '^A.\{1,\}x$' %<CR> В конце обязателен символ перевода строки - <CR>, а вместо символа '%' будет подставлено имя текущего файла.
Если вы хотите, чтобы ваше сочетание клавиш работало не только в командном режиме - используйте nmap\imap вместо map. nmap определяет сочетание клавиш для командного режима, imap - для режима вставки. Остальной синтаксис такой же как и у map.
Для примера, приведу несколько полезных биндингов:
map <F10> :wqa<CR>
map <Esc><Esc> :q!<CR>
" save session
map <C-k> :mksession! ~/.vim/lastSession.vim<CR>
" load last session
map <C-l> :source ~/.vim/lastSession.vim<CR>
" Auto adding by Tab (use Shift-TAB unstead)
imap <Tab> <C-N>
Для каждого параметра в vimrc можно определить для каких типов файлов он будет применен. Для этого перед параметром надо написать: au FileType список_расширений_файлов_через_запятую ....параметр.... Примеры:
au FileType c,cc,cpp,h,hpp imap #m int main(int argc, char * argv[]) {
au FileType c,cc,cpp,h,hpp imap #d #define
" Compile program using Makefile
au FileType c,cc,cpp,h,hpp imap <F5> <Esc>:make!<CR>a
au FileType c,cc,cpp,h,hpp nmap <F5> :make!<CR>
" Use LaTeX to compile LaTeX sources
au FileType tex map <F5> :!pdflatex %<CR>
" run shell script in shell
au FileType sh,bash map <F5> :!bash %<CR>
Список ресурсов, на которых освещается тема "издевательств" над ~/.vimrc:
http://linuxforum.ru/index.php?showtopic=36820 - Тонкая настройка vim, делимся полезностями в .vimrc. Ссылка уже приводилась в комментариях к моему предыдущему посту.
http://allaboutvim.blogspot.com/ - всё о Vim.
Мой .vimrc. Там еще осталось немало интересного.