Недоповнення СЛОВ


13

<C-p>і <C-n>дозволити заповнення слів, знайдених у поточному документі.

Я беру кілька записок і пишу сказати {0,1}^nі (E,D)багато разів. Це Слова, складені кількома словами.

Чи є спосіб , щоб завершити слівця з <C-p>і <C-n>(або іншої відповідної ins-completionкомандою)?


1
Можливо, вам буде краще використовувати :abbreviateзамість цього. Наприклад, видайте :ab 01n {0,1}^nкоманду. Потім, кожного разу, коли ви вводите 01nсамостійне слово в режимі "Вставка", воно розширюватиметься до {0,1}^n.
200_успіх

@ 200_success, дякую. Я думав про скорочення, але все ж хотів дізнатися, чи можна це зробити ins-completion.
Гонсало Рібейро

Відповіді:


5

Вставка режиму завершення за допомогою Ctrl-n

Я не знаю, чи можна було б виконати слово WORD за межами написання власної функції (наприклад, omnifunc). Однак якщо ви не заперечуєте над тим, щоб розширити слово, яке відповідає вашим персонажам, ви можете додати цих символів до "iskeyword"

Наприклад, моє значення "iskeyword" за замовчуванням

iskeyword=@,48-57,_,192-255

Потім я встановив це плюс додаткові символи вище

:set iskeyword=@,48-57,_,192-255,{,},,,(,),^

Це додає {, }, ,, (, ), і ^до персонажів , які складають слово (на додаток до того , що вже зробив)

Після цього введення {Ctrl-nзавершується в {0,1}^n(у файлі, що містить лише ті два приклади, які ви подали)

Примітка. Було б краще робити :set iskeyword+=лише додаткові речі, як описано нижче:

:set iskeyword+={,},,,(,),^

Таким чином, ви залишаєте будь-яке інше, що складається з ключового слова, додавши нові символи до існуючих налаштувань.

Розширення за допомогою скорочень

Хоча це не є частиною оригінального питання, інший аналогічний (ish) функціонал полягає у використанні функції nvi або абревіатури Vim. На відміну від заповнення ключових слів, абревіатури не повинні виглядати як кінцевий текст. Також, на відміну від заповнення ключових слів, абревіатури розширюються автоматично, а не лише тоді, коли ви їх вимагаєте. Залежно від вашої мети та використання, це може заощадити багато набору тексту, а також дозволяє вводити багато тексту без перерви просити завершити.

Скорочення корисні для невеликого набору ключових слів, і коли ви можете їх визначити достроково (вони не виявляються з тексту, як це слово).

Основна ідея абревіатур полягає в тому, що ви пов'язуєте WORD з деяким іншим текстом, і будь-який час редактор виявить, що ви ввели це слово (тобто текст, який ви ввели, оточений пробілом, де завершення додає пробіл після ключове слово або залишаючи режим вставки), він замінюється тим іншим текстом.

Скажімо, ваш файл містить {0,1}^nбагато, а інших його варіантів немає. Typing , що це трохи пальця розтягнути, так що, може бути , ви просто хочете ввести 01nабо myvalueі він розширюватися {0,1}^n, але тільки тоді , коли 01nабо myvalueце слово саме по собі (тобто, якщо це станеться , з'явиться в іншому слові, чи не зміни це).

У nvi можна зробити :abbrev 01n {0,1}^n. Ви можете зробити те ж саме у Vim, але я рекомендую використовувати :iabbrev 01n {0,1}^nобмеження розширення лише на режим вставки.

Потім, якщо у вас є текст (де |представлений курсор)

We find that the value 01n|

А потім ви натискаєте Escабо Spaceабо Tabіншим чином переміщуєте курсори, текст замінюється, і у вас є (приклад використання місця)

We find that the value {0,1}^n |

і ви можете продовжувати вводити текст без перерви.

Зазвичай використовується для автоматичного виправлення загальних помилок (наприклад, зміни "teh" на "the"), але це може бути однаково корисно для вашого випадку використання, знову ж таки припускаючи, що ви не проти налаштувати відображення достроково.


Мені здається, :set iskeyword+={,},,,(,),^працює так, як очікувалося.
Карл Інгве Лервег

1
Справді це і є. Коли я спробував це востаннє, Вім продовжував говорити, що це синтаксична помилка. Це, мабуть, було десь ще. Оновлення моєї відповіді.
Джон О'М.

@ JohnO'M. Ви можете додати довідку про те, як abbreviateкраще підходить для цієї роботи?
Гонсало Рібейро

@ GonçaloRibeiro зроблено. Я сподіваюся, що це допомагає.
Джон О'М.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.