Author Topic: Автодополнение в Vim  (Read 10559 times)

0 Members and 1 Guest are viewing this topic.

Offline Vladn

  • Newbie
  • *
  • Posts: 40
  • Karma: +0/-0
Автодополнение в Vim
« on: August 13, 2007, 21:26:23 »
Хочу поделиться секретом, как мне удалось заставить Vim выполнять автодополнение языковых конструкций (PHP, HTML, CSS) при нажатии на Ctrl + пробел (как во многих IDE). Результат можно видеть на прикреплённом изображении.
1) В файле /etc/vim/vimrc или ~/.vimrc необходимо добавить следующие строки
Code: [Select]
syntax on- включаем подсветку синтаксиса
Code: [Select]
filetype plugin indent on- включаем плагины для разных типов файлов
Code: [Select]
imap <Nul> <C-X><C-U>- стандартно автодополнение осуществляется при нажатии на Ctrl+X Ctrl+U; заменяем эту комбинацию на Ctrl+пробел (что намного более удобно).

2) Как ни странно, выполненных действий недостаточно, чтобы автодополнение работало (по крайней мере у меня в Vim 7.0.235). Расследование показало, что необходимо внести некоторые изменения в плагины для типов файлов. Например, в плагине /usr/share/vim/vim70/ftplugin/php.vim после строчки
Code: [Select]
setlocal ofu=phpcomplete#CompletePHP необходимо поместить строчку
Code: [Select]
setlocal completefunc=phpcomplete#CompletePHP, а в плагине /usr/share/vim/vim70/ftplugin/html.vim после строчки
Code: [Select]
setlocal omnifunc=htmlcomplete#CompleteTags необходимо поместить строчку
Code: [Select]
setlocal completefunc=htmlcomplete#CompleteTags. Только тогда автодополнение работает. Может, подскажите, почему так?

В случае с PHP порадовало то, что при выборе варианта функции из списка предложенных вверху выводится список параметров (см. прикрепленный файл).
При нажатии на Ctrl+N осуществляется автодополнение текущего слова из уже использованных слов в данном файле (полезно даже в случае набора обычного текста).

Напоследок приведу несколько полезных команд (в файле /etc/vim/vimrc или ~/.vimrc ), которые я использую:
Code: [Select]
map <F2> <ESC>:w<CR>
imap <F2> <ESC>:w<CR>a
- сохранение файла при нажатии на F2
Code: [Select]
imap <C-F> <ESC>0i<CR><ESC>kddji
map  <C-F> 0i<CR><ESC>kddj
- форматирование текста при нажатии на Ctrl+F
« Last Edit: August 13, 2007, 21:30:04 by Vladn »

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Автодополнение в Vim
« Reply #1 on: August 16, 2007, 14:34:48 »
Я себе поставил плагин supertab.vim, который вешает стандартные функции вима на  Tab, позволяет менять режимы дополнения  на ходу, сам определяет, вводится ли Tab или дополняется слово.  Удобно.
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline Vladn

  • Newbie
  • *
  • Posts: 40
  • Karma: +0/-0
Автодополнение в Vim
« Reply #2 on: December 12, 2007, 15:29:14 »
Возникла такая проблема с Vim 6.4.9 в FreeBSD 6.2: при редактировании строчки если в начале строчки я нажимаю клавишу backspace, то НЕ происходит переход на предыдущую строчку. Как сделать, чтобы этот переход происходил?

А при нажатии backspace при редактировании текста стираемый текст всё-равно отображается на экране и исчезает только при переходе на другую строчку. Как сделать, чтобы текст исчезал сразу же?
« Last Edit: December 12, 2007, 15:31:40 by Vladn »

Offline Vladn

  • Newbie
  • *
  • Posts: 40
  • Karma: +0/-0
Автодополнение в Vim
« Reply #3 on: December 26, 2007, 15:23:03 »
Обновил VIM до версии 7.1.145. Проблема осталась. Помогите решить её:
Quote
при редактировании строчки если в начале строчки я нажимаю клавишу backspace, то НЕ происходит переход на предыдущую строчку. Как сделать, чтобы этот переход происходил?

А при нажатии backspace при редактировании текста стираемый текст всё-равно отображается на экране и исчезает только при переходе на другую строчку. Как сделать, чтобы текст исчезал сразу же?

Offline Vladn

  • Newbie
  • *
  • Posts: 40
  • Karma: +0/-0
Автодополнение в Vim
« Reply #4 on: December 26, 2007, 16:11:11 »
Нашёл ответ на первую часть вопроса:
Code: [Select]
set bs=2 " allow backspacing over everything in insert mode