Как войти в режим вставки, сделав первую написанную букву заглавной?

Как войти в режим вставки, сделав первую написанную букву заглавной?

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

Существует много способов входа в режим вставки, связанных с положением курсора в тексте. Но могу ли я определить макрос, который делает заглавной первую букву, которую я пишу после входа в режим вставки, и только ее?

решение1

Ну, это немного хакерское решение, но оно, кажется, работает. Я не совсем уверен, как вы хотите это сопоставить, поэтому я сопоставил это <leader>iв своем примере. Можете свободно изменить это на то, что вам нравится.

function! Icap()
  augroup icap
    au InsertLeave * exec "normal! \<C-o>gUlgi\<esc>:augroup icap | au! | augroup END\<cr>"
    au InsertEnter * exec "normal! m`"
  augroup END
endfunction

nnoremap <leader>i :call Icap()<cr>i

Это определяет функцию "Icap" (сокращение от 'insert capitalize'), которая устанавливает две автокоманды. Первая автокоманда находится прямо перед входом в режим вставки:

Затем после вызова foo и сразу после выхода из режима вставки произойдет следующее:

  • Vim печатает <C-o>gUl. Это переместит вас в предыдущее положение в списке переходов и преобразует символ под курсором в верхний регистр. После этого vim печатает gi<esc>. Это хакерский способ вернуть курсор в предыдущее положение. Теоретически <C-i>должно работать, но во время тестирования я столкнулся со странными проблемами.

  • Vim удаляет все автокоманды, относящиеся к этой функции. Это делается для того, чтобы предотвратить будущие изменения режима вставки, которые могут привести к странным изменениям, которые вам не нужны.

Вы также можете сделать такое сопоставление:

nnoremap <leader>i :call Icap()<cr>

что затем позволит вам использовать другие команды для входа в режим вставки ( c, a, I, o, sи т. д.) и по-прежнему получать побочные эффекты от использования заглавных букв.

Связанный контент