Можно ли определить значение const и чем попросить пользователя ввести его?

Хотя есть уловки для решения этой проблемы (например, сопоставления ESC, упомянутые в предыдущих двух сообщениях), нет последовательного способа сделать это. Причина в том, что нет способа определить метод, который использовался для входа в режим вставки. В частности, с учетом строки abcDefg с помощью курсора на D:

  • Если вы нажмете i, расположение режима вставки будет находиться между c и D. Обычный ESC поместит курсор на c; <C-O>:stopinsert<CR> (или метод обратного хода) поместит курсор на D.
  • Если вы нажмете a, расположение режима вставки будет находиться между D и e. Обычный ESC поместит курсор на D; <C-O>:stopinsert<CR> поместит курсор на e.

Если вы действительно хотите это сделать, вы можете выманить его примерно так:

let insert_command = "inoremap <ESC> <C-O>:stopinsert<CR>"
let append_command = "iunmap <ESC>"
nnoremap i :exe insert_command<CR>i
nnoremap a :exe append_command<CR>a

НО: помните, что это будет иметь дело только с i и a как методы ввода: если вы используете режим визуального блока, I или A или что-то еще, вам нужно будет придумать новые команды для (и их много). Поэтому я настоятельно рекомендую вам не делать этого.

Лично я бы рекомендовал привыкнуть к поведению по умолчанию. Вы можете легко сделать это логичным для i ИЛИ логичным для a. Если вы измените значение по умолчанию на логическое для i за счет логического для a, вы просто смутитесь, когда будете использовать стандартную установку vi / vim.

0
задан Brian Tompsett - 汤莱恩 29 November 2015 в 13:58
поделиться