Как я могу сделать так, чтобы окно выбора проверки орфографии позволяло мне вводить мою собственную коррекцию?

14

При проверке орфографии, наборе текста z=, появляется список выбора, как показано ниже.

выберите правильный

Как вы можете видеть правильное написание; «то есть» не отображается ни в одном из вариантов. Я хотел бы расширить это меню, чтобы вместо этого можно было просто ввести «то есть» и нажать клавишу ввода и заменить его.

Было бы также неплохо, если бы в рамках одного и того же шага я мог бы начать набирать имя одного из представленных вариантов и вкладка конкурировать с этим - мой ум лучше работает над заменой слов путем ввода слов, а не путем ввода чисел.

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

Линдон Уайт
источник

Ответы:

5

Глядя на spell_suggest()функцию в spell.cэтом не представляется возможным с z=. После получения и отображения всех возможных предложений, он делает:

/* Ask for choice. */
selected = prompt_for_number(&mouse_used);

prompt_for_number()живет в misc1.c, и делает именно то, что вы ожидаете, что он делает: он запрашивает номер (также см. get_number()в том же файле). Отображения или другие входные данные не допускаются.


Второй вариант - использовать заклинание Vim «завершение» через Ctrl x+ sили Ctrl x+ Ctrl s1 в режиме вставки. Это примерно так, как вы хотите. Вы можете выбрать один из пополнений с Ctrl nи Ctrl pили клавиша со стрелками, или введите свое собственное улучшение.

Вы можете использовать плагин supertab, чтобы сделать это с вашим Tabключом. :help ins-completionтакже есть CleverTab()функция, которую вы могли бы адаптировать для этого.

Для получения дополнительной информации см :help ins-completion, :help i_CTRL-X_s


Наконец, у Vim есть spellsuggest()функция, которая возвращает список орфографических предложений:

:echo spellsuggest('hellz')
['hells', 'hello', 'hell', 'help', 'halls', 'heals', 'heels', 'hills', 'hulls', 'hell''s',
 'hellos', 'hell’s', 'held', 'helm', 'tell', 'well', 'bells', 'cells', 'dells', 'fells',
 'helot', 'helve', 'hertz', 'hilly', 'holly']

Вы можете использовать эту функцию, чтобы создать свой собственный экран с предложением заклинаний.


сноска

1 : обратите внимание, что использование Ctrl sможет не работать, как упоминают документы:

ПРИМЕЧАНИЕ. CTRL-S приостанавливает отображение во многих терминалах Unix. Используйте вместо 's'. Введите CTRL-Q, чтобы возобновить отображение.

Если вы используете gVim, использование Ctrl sдолжно работать. Или вы можете отключить это в вашем терминале с помощью stty -ixon.

Мартин Турной
источник
3

Я собираюсь расширить / закрепить ответ @ quincy-bowers:

  1. Вы не можете вводить свои собственные предложения на экране предложений заклинаний.
  2. Не имеет смысла (в VIM) вводить свои собственные предложения на экране предложений заклинаний.

VIM - это текстовый редактор. Так как это то, что он делает лучше всего, он оставляет редактирование для себя. Другими словами, ответ, чтобы заменить слово с ошибкой на собственное предложение, просто нажмите, enterчтобы закрыть список предложений, а затем вручную измените слово на правильное написание. ( ciwработает идеально для этого).

Затем (как предложено @ quincy-bowers), если вы хотите, чтобы пользовательское правильное написание отображалось в последующих списках предложений, введите zgкурсор, когда курсор находится на слове, и он будет добавлен в ваш словарь правописания (см. :help zgПодробности).

Однако после всего сказанного это не помешало умным людям, использующим VIM, найти альтернативы (говорят они, безграничные способы шкуры кошки), и поэтому вы можете попробовать альтернативный плагин, например, unite-spell-offer .

Sukima
источник
Описание текущего рабочего процесса - это скорее комментарий, чем ответ. Хотя вы и объясняете это хорошо.
Линдон Уайт
1
@Oxinabox, возможно, вы ищете что-то еще в строках: vim.org/scripts/script.php?script_id=4929 возможно?
Sukima
Да, это гораздо больше похоже на то, что я ищу.
Линдон Уайт
2

Без добавления каких-либо плагинов вы можете добавить известное доброе слово в ваш файл заклинаний. Вместо того, z=чтобы вызвать предложения по написанию, визуально выберите текст, который вы хотите добавить в файл заклинания, и нажмите zg.

Я также должен отметить, что в окне подсказки заклинаний вы можете использовать мышь, чтобы выбрать ту, которая вам нужна, если вы включили мышь в НОРМАЛЬНОМ режиме. set mouse=aНапример, я установил в своем .vimrc, который включает мышь во всех режимах, будь я в Vim или gVim.

Я не думаю, что другие вещи, которые вы хотите, могут быть выполнены без плагина или изменения самого Vim.

Куинси Бауэрс
источник
1
Это все полезные советы, но я не понимаю, как они отвечают на вопрос?
Мартин Турной
@Carpetsmoker Я мог бы сказать то же самое о твоем ответе. Я сказал ему, что это невозможно, и предложил изменить рабочий процесс в качестве возможного обходного пути. Как и вы.
Куинси Бауэрс
1
@MartinTournoij Этот ответ на самом деле дает решение проблемы: необходимо включить новое слово > zg выполняет такое включение .
Нилон