Хочу поделиться секретом, как мне удалось заставить Vim выполнять автодополнение языковых конструкций (PHP, HTML, CSS) при нажатии на Ctrl + пробел (как во многих IDE). Результат можно видеть на прикреплённом изображении.
1) В файле /etc/vim/vimrc или ~/.vimrc необходимо добавить следующие строки
syntax on
- включаем подсветку синтаксиса
filetype plugin indent on
- включаем плагины для разных типов файлов
imap <Nul> <C-X><C-U>
- стандартно автодополнение осуществляется при нажатии на Ctrl+X Ctrl+U; заменяем эту комбинацию на Ctrl+пробел (что намного более удобно).
2) Как ни странно, выполненных действий недостаточно, чтобы автодополнение работало (по крайней мере у меня в Vim 7.0.235). Расследование показало, что необходимо внести некоторые изменения в плагины для типов файлов. Например, в плагине /usr/share/vim/vim70/ftplugin/php.vim после строчки
setlocal ofu=phpcomplete#CompletePHP
необходимо поместить строчку setlocal completefunc=phpcomplete#CompletePHP
, а в плагине /usr/share/vim/vim70/ftplugin/html.vim после строчки setlocal omnifunc=htmlcomplete#CompleteTags
необходимо поместить строчку setlocal completefunc=htmlcomplete#CompleteTags
. Только тогда автодополнение работает. Может, подскажите, почему так?
В случае с PHP порадовало то, что при выборе варианта функции из списка предложенных вверху выводится список параметров (см. прикрепленный файл).
При нажатии на Ctrl+N осуществляется автодополнение текущего слова из уже использованных слов в данном файле (полезно даже в случае набора обычного текста).
Напоследок приведу несколько полезных команд (в файле /etc/vim/vimrc или ~/.vimrc ), которые я использую:
map <F2> <ESC>:w<CR>
imap <F2> <ESC>:w<CR>a
- сохранение файла при нажатии на F2
imap <C-F> <ESC>0i<CR><ESC>kddji
map <C-F> 0i<CR><ESC>kddj
- форматирование текста при нажатии на Ctrl+F