Автозаполнение VIM — используйте $ в качестве разделителя слов

Допустим, у меня есть следующий тип в исходном файле.

var myFunction = function() { };

var anotherFunction = function() { };

var test-m

Теперь я могу нажать Ctrl + P, и в списке автозаполнения отобразится «myFunction». Это здорово и очень полезно.

Но что я хочу сделать, так это заставить VIM обрабатывать «$» так же, как он обрабатывает «-».

Итак, когда я печатаю

var myFunction = function Module$m  

и нажмите Ctrl+P, и он покажет myFunction в автозаполнении.

Я просмотрел этот вопрос и попытался установить ключевое слово $ с помощью команды iskeyword, но это не помогло не помогает.

И я знаю, что это возможно сделать, поскольку раньше у меня это работало, а потом я испортил свой VIMRC и больше не могу заставить его работать. :(

Ваша помощь приветствуется, спасибо!


person SolutionYogi    schedule 17.12.2009    source источник


Ответы (1)


Чтобы vim использовал знак доллара в качестве разделителя слов, выполните:

:set iskeyword-=\$

Если требуется обратное: (для автозаполнения слов, содержащих знак доллара, добавьте буквальный знак доллара к текущему шаблону соответствия автозаполнения, выполнив противоположные действия:

:set iskeyword+=\$

Чтобы найти текущую настройку iskeyword, выполните следующие действия:

:set iskeyword?

Это покажет вам список диапазонов ASCII, которые vim считает одним словом. Мой выглядит так:

iskeyword=@,48-57,_,192-255
person zen    schedule 18.12.2009
comment
дзен, я пробовал. Это не работает. Есть еще мысли/идеи? - person SolutionYogi; 18.12.2009
comment
Я удивлен, что это не сработало для вас. Я протестировал его перед публикацией. Даже использовали ваши ключевые слова. :( Может чувствительность к регистру? set ic! ? Вы пытаетесь автозаполнить Module$m, верно? - person zen; 18.12.2009
comment
попробуйте проверить, какое значение iskeyword установлено, выполнив :set iskeyword? - возможно, что-то переопределяет его? Вы должны увидеть знак доллара в этом выводе. (после +=\$) - person zen; 19.12.2009
comment
Дзен, я запустил команду и вот что я вижу. @, 48-57, _, 192-255, $. Итак, $ присутствует в списке. Я очень ценю вашу помощь в этом вопросе. - person SolutionYogi; 21.12.2009
comment
хорошо, попробуйте это по номерам: 1. do vim -u NONE (запустите новый vim без vimrc.) 2. на пустой странице добавьте строку 'module$m' 3. на новой строке, в режиме вставки введите control-p . (должно быть выполнено автозаполнение модуля) 4. выполните :set iskeyword+=\$ 5. снова войдите в режим вставки, введите control-p (должно быть выполнено автозаполнение «module$m» — сначала убедитесь, что это работает. Если это так, другой плагин или конфигурация переопределяют поведение по умолчанию.. Тогда это вопрос поиска плагина или записи vimrc, ответственной за это.. Вы знаете, что такое двоичный поиск? - person zen; 22.12.2009
comment
Зен, я очень ценю твою помощь в этом вопросе. Моя проблема не в том, что «module$m» не отображается в автозаполнении. Моя проблема в том, что если в моем файле есть слово «MyLongFunctionName», когда я набираю «MyNameSpace$M» и нажимаю «Ctrl + P», оно должно отображать «MyLongFunctionName» в списке автозаполнения. Дайте мне знать, если это имеет смысл. - person SolutionYogi; 22.12.2009
comment
И чтобы ответить на ваш комментарий, он правильно автозаполняет «module $ m», используя мой текущий VIMRC. Что я хочу сделать, так это то, как VIM обрабатывает дефис «-» при рассмотрении автоматического полного списка слов. - person SolutionYogi; 22.12.2009
comment
Хорошо, перечитав ваш вопрос, я полагаю, вы хотите перевернуть ответ iskeyword, который я дал. :set iskeyword-=\$ Это будет рассматривать знак доллара как РАЗДЕЛИТЕЛЬ слова, что вам нужно для автозаполнения после знака доллара. Это должно создать то же поведение, что и после дефиса. Чтобы уточнить, символы и значения ascii в iskeyword? обрабатываются как одно слово. Вы хотите использовать автозаполнение после знака доллара, поэтому он ($) НЕ должен быть в ключевом слове iskeyword. ХТН. - person zen; 22.12.2009
comment
Извините, что ввел вас в заблуждение. Ваша фраза при попытке установить $ в качестве ключевого слова с помощью команды iskeyword поставила меня на неправильный путь. Я обновил ответ и протестировал его с автозаполнением после дефиса и знака доллара с ожидаемыми (такими же) результатами. - person zen; 22.12.2009
comment
дзен, Спасибо! Теперь работает! Я очень ценю ваше терпение и всю вашу помощь в этом вопросе, и я рад, что вы получаете награду! - person SolutionYogi; 23.12.2009
comment
Рад помочь. Награда стала неожиданным сюрпризом! Спасибо!! - person zen; 23.12.2009