Найти тему
Блокнот математика

Рубрика "Секреты Вим". Автодополнение

Автодополнение — это автоматическое завершение начатого слова или целой строки по информации в тексте, соседних файлах, словарях или какой-либо ещё информации. Есть много режимов автодополнения, я расскажу не обо всех.

Все начинаются с <C-X> в режимах вставки или замены, но иногда можно и без <C-X>. Кроме того, можно любимые комбинации повесить на что-нибудь, например, на табуляцию:

imap <Tab> <C-N>

Саму табуляцию, если очень надо, сможете вставить через <C-K>: после него дважды табуляцию, и она вставится.

Самое простое — это автодополнение целой строки. Просто начните печатать строку и нажмите <C-X><C-L>. Вим подыщет строку с таким же началом и дополнит, а если таких строк несколько, то предложит выбрать. Бывает полезно, если вам часто надо вводит одинаковые или мало отличающиеся строки. Например

DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE, PRIVATE:: array

или

Также вынужден обратить ваше внимание на то обстоятельство, что ...

Следующий способ, наиболее полезный на мой взгляд, это автодополнение слова, <C-X><X-N> или <C-X><C-P>. В первом случае поиск выше, во втором ниже, но разница при зацикленном поиске невелика.

Просто <C-N> или <C-P> в режиме вставки — слова ищутся и в соседних файлах.

Исключительно удобно! На скриншоте вы можете увидеть, как это выглядит.

Я начал печатать "сло" и нажал <C-X><C-N>. Первым шло слово "слово", но можно выбрать и что-то другое.
Я начал печатать "сло" и нажал <C-X><C-N>. Первым шло слово "слово", но можно выбрать и что-то другое.

Можно настроить дополнение по словарю и поиск синонима. Для этого надо задать переменные dictionary и thesaurus, соответственно. Первая содержит список имен файлов через запятую, в файлах должны быть списки слов: по слову на строку или ряд слов на строке, разделенных пробелами. Длина строки ограничена 510 байтами. Если включена проверка орфографии, используется соответствующий словарь. По ходу набора текста нажимаете <C-X><C-K> и получаете предложения из словаря.

Аналогично устроена и переменная thesaurus. Только в соответствующих файлах на строке стоят разделенные пробелами синонимы, и предлагаться будут они. Например, если в файле love.th одна строка

люблю обожаю влюблен очарован сражен околдован

и вы начали набирать "люб" и нажали <C-X><C-T>, то получите этот список и можете выбрать другое слово. Но слово, а не сочетание, "не могу жить без тебя" придумывайте сами.

Третий способ позволяет упростить ситуацию, используя словарь орфографии. Нажатие <C-X>s при включенной проверке дает возможность дополнить слово из словаря. Если на строке есть готовое слово с ошибкой, курсор прыгнет на него и предложит исправление. Если же все нормально, будет предложено дополнение для начатого слова.

Бало написано "славаря", далее печаталось слово "который", после буквы "т" я нажал <C-X>s. Вим прыгнул на безобразие и предложил исправить сначала его. Потому что "кот" — нормальное слово. А если бы было "кото", то сначала дополнили бы его.
Бало написано "славаря", далее печаталось слово "который", после буквы "т" я нажал <C-X>s. Вим прыгнул на безобразие и предложил исправить сначала его. Потому что "кот" — нормальное слово. А если бы было "кото", то сначала дополнили бы его.

Еще есть <C-X><C-]> для дополнения по тэгам. Файл тэгов надо сначала создать. Зато потом легко вставлять имена процедур.

Можно дополнять имена файлов <C-X><C-F>. Вим ищет в указанном каталоге: начали писать ~/.vim, нажали комбинацию и выбрали ~/.vimrc из списка.

Есть еще многое, в том числе предусмотрен режим обращения к собственной функции для автодополнения. Об этом в другой раз.

Если хотите почитать поподробнее, ищите в help по ключам i_CTRL-X_CTRL-K и подобным, или через help dictionary

Путеводитель по каналу