отмена завершена

11

Обычно вставка в режиме завершения ( <C-n>) вставляет правильное слово при первом нажатии <C-n>, но не всегда. Поэтому я хотел бы, чтобы Vim вставил совпадение, которое он считает наилучшим, когда я нажимаю <C-n>, но все же позвольте мне впоследствии отменить эту вставку, если правильное совпадение не появится или будет далеко внизу списка.

Конечно, я мог бы написать такое поведение, но у меня есть ощущение, что для этого должен быть стандартный ключ (-комбинация). Может ли кто-нибудь указать мне правильное направление?

Бонусный вопрос: есть ли другой ключ, который я могу использовать, чтобы получить самый длинный матч (как это было до того, как я нажал <C-n>)?

Для чего это стоит, я использую completeopt=menu

Octaviour
источник
1
Это ctrl-uто, что вы ищете?
statox
Нет, Ctrl-U, кажется, удаляет всю строку. Я ищу комбинацию, которая удаляет только текст, который был вставлен, нажав Ctrl-N.
Octaviour
Моей первой мыслью было «не может ли здесь работать обычная клавиша отмены?», Потом я понял, что это emacs. Всего несколько дней назад я испортил мне жизнь, я искупаюсь в священной реке и очистлю себя!
sundar - Восстановить Монику

Ответы:

13

От :h complete_CTRL-E:

                                                        * Complete_CTRL-E *
Когда завершение активно, вы можете использовать CTRL-E, чтобы остановить его и вернуться к
первоначально напечатанный текст. CTRL-E не будет вставлен.

Кроме того, если вы, скажем, набираете athen ^Pи получаете очень длинный список, вы можете нажать, ^N чтобы вернуться к исходному тексту, при этом всплывающее окно завершения все еще активно. Затем вы можете ввести дополнительные символы, чтобы сузить список завершения.

Antony
источник
Это было именно то, что я искал. Я не понимал, что Ctrl-P также вернет меня к исходным данным. Спасибо.
Октябрь
2
@Octaviour, я считаю, что ctrl-p обычно более полезен, чем ctrl-n, потому что он ищет наиболее близкое совпадение до (а не после) того места, где вы находитесь. Итак, если вы только что написали слово, ctrl-p быстро покажет вам то же самое слово, если вам нужно будет повторить его (например, снова использовать ту же самую переменную в коде)
Shahbaz
Да, я написал ^Pпо привычке именно по этой причине.
Антоний