Я попытался немного поэкспериментировать с вводом следующего кода:
function! Foo()
let x = input('Do input: ')
execute "normal i".x
echo "Foo called with: ".x
endfunc
command -nargs=0 Foo call Foo()
Вот следующие варианты поведения:
- Нажатие
Return
добавляет в документ значениенабирается пользователем и печатает строку echo
, - Кажется, что нажатие
Escape
имеет тот же эффект, что и ввод ничего и нажатие Return
, ничего не добавляется в документ, а строка echo
напечатано, без значения x
, - При нажатии
C-c
(Control C, похоже на escape, но не совсем. CF :help i_^c
), ввод и выполнение функции отменяются, echo
строка не выполняется.
Поэтому я бы сказал, что вы можете рассмотреть escape
(ярлык для очистки ввода и нажатия return
) и пустой ввод как одно и то же, и рассмотреть CTRL-c
и ввод отменяется.
Однако я не уверен, что, оставаясь в функции, вы можете обнаружить, что пользователь отменил ввод или нет, но, надеюсь, кто-то узнает лучше меня, чтобы подтвердить илиисправьте это.