
Estoy haciendo una tarea repetitiva para la cual definí una macro en una de las teclas F, pero todavía tengo que mantener presionada la tecla Mayús para escribir la primera letra cada vez que ejecuto esa macro. Me preguntaba si eso también se puede incluir en la macro, pero mi búsqueda de formas de hacerlo fue infructuosa.
Hay muchas formas de ingresar al modo de inserción, relacionadas con la posición del cursor en el texto. ¿Pero puedo definir una macro que ponga en mayúscula la primera letra que escribo después de ingresar al modo de inserción, y solo eso?
Respuesta1
Bueno, esta es una solución un poco complicada pero parece funcionar. No estoy exactamente seguro de cómo quieres mapearlo, así que lo mapeé <leader>i
en mi ejemplo. Siéntete libre de cambiar esto por lo que quieras.
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
Lo que esto hace es definir una función "Icap" (abreviatura de "insertar mayúsculas") que configura dos comandos automáticos. El primer comando automático es justo antes de ingresar al modo de inserción:
- Vim agrega la ubicación actual del cursor alsaltar lista.
Luego, después de llamar a foo, e inmediatamente después de salir del modo de inserción, sucederá lo siguiente:
Tipos de Vim
<C-o>gUl
. Esto saltará a su ubicación anterior en la lista de salto y convertirá el carácter debajo del cursor a mayúscula. Después de esto, vim escribegi<esc>
. Esta es una forma ingeniosa de hacer que el cursor vuelva a la ubicación anterior. En teoría,<C-i>
debería funcionar, pero mientras lo probaba me encontré con problemas extraños.Vim elimina todos los comandos automáticos que pertenecen a esta función. Esto es para evitar que futuros cambios en el modo de inserción realicen ediciones extrañas que no deseaba.
También puedes hacer un mapeo como este:
nnoremap <leader>i :call Icap()<cr>
lo que luego le permitiría usar otros comandos para ingresar al modo de inserción ( ,,,,, etc. c
) y aún así obtener los efectos secundarios de las mayúsculas.a
I
o
s