
Я выполняю повторяющуюся задачу, для которой я определил макрос в одной из 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'), которая устанавливает две автокоманды. Первая автокоманда находится прямо перед входом в режим вставки:
- Vim добавляет текущее местоположение курсора всписок переходов.
Затем после вызова foo и сразу после выхода из режима вставки произойдет следующее:
Vim печатает
<C-o>gUl
. Это переместит вас в предыдущее положение в списке переходов и преобразует символ под курсором в верхний регистр. После этого vim печатаетgi<esc>
. Это хакерский способ вернуть курсор в предыдущее положение. Теоретически<C-i>
должно работать, но во время тестирования я столкнулся со странными проблемами.Vim удаляет все автокоманды, относящиеся к этой функции. Это делается для того, чтобы предотвратить будущие изменения режима вставки, которые могут привести к странным изменениям, которые вам не нужны.
Вы также можете сделать такое сопоставление:
nnoremap <leader>i :call Icap()<cr>
что затем позволит вам использовать другие команды для входа в режим вставки ( c
, a
, I
, o
, s
и т. д.) и по-прежнему получать побочные эффекты от использования заглавных букв.