Buscar..


Introducción

La actualización de las asignaciones de teclas Vim le permite resolver dos tipos de problemas: reasignar comandos de teclado a letras que sean más fáciles de recordar o accesibles, y crear comandos de tecla para funciones que no tienen ninguno. Aquí aprenderá sobre las diversas formas de [re] mapear comandos de teclado y el contexto al que se aplican (es decir, los modos vim)

Mapeo basico

mapa general

Una secuencia de teclas puede volver a asignarse a otra secuencia de teclas utilizando una de las variantes de map .

Como ejemplo, el siguiente map típico saldrá del modo Insertar cuando presione j k en secuencia rápida:

:inoremap jk <Esc>

operador de mapas

Existen múltiples variantes de :map para diferentes modos.

Comandos Modos
:map :noremap :unmap Modo normal, visual y pendiente de operador.
:map! , :noremap! :unmap! Insertar y modo de línea de comandos
:nmap :nnoremap :nunmap Modo normal
:imap :inoremap :iunmap Insertar y reemplazar el modo
:vmap :vnoremap :vunmap Modo visual y de selección.
:xmap :xnoremap :xunmap Modo visual
:smap :snoremap :sunmap Seleccionar modo
:cmap :cnoremap :cunmap Modo de línea de comandos
:omap :onoremap :ounmap Modo operador pendiente

Por lo general, debe utilizar las variantes :noremap ; hace que el mapeo sea inmune a la reasignación y la recursión.

comando de mapa

  • Puede visualizar todas las asignaciones utilizando :map (o una de las variaciones anteriores).
  • Para mostrar la asignación actual para una secuencia de teclas específica, use :map <key> donde <key > es una secuencia de teclas
  • Las teclas especiales como Esc se asignan mediante la notación especial <> , como <Esc> . Para obtener la lista completa de códigos de clave, consulte http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes
  • :nmapclear - Borrar todos los mapas de modo normal
  • :nunmap - Desasignar un mapa de modo normal
  • Puede configurar el tiempo máximo entre las teclas de una secuencia cambiando las variables timeout y ttimeout

Ejemplos

  • imap jk <Esc> : escribir jk en el modo de inserción lo regresará al modo normal
  • nnoremap tt :tabnew<CR> : escribir tt en modo normal abrirá una nueva página de pestaña
  • nnoremap <Cj> <Cw>j : escribir <Cj> en modo normal te hará saltar a la ventana de abajo y a la izquierda
  • vmap <Cc> \cc : escribir <Cc> en modo visual ejecutará \cc (comando NERDCommenter para comentar la línea). Como esto se basa en un mapeo de complementos, no puede usar :vnoremap aquí!

leer más aquí

Combinación de teclas de líder de mapa

La clave de líder podría utilizarse como una forma de crear una asignación con un enlace de clave que el usuario final puede anular.

El líder es la clave \ por defecto. Para anularlo, el usuario final tendría que ejecutar :let g:mapleader='somekey(s)' antes de definir la asignación.

En un escenario típico, el mapleader se establece en el .vimrc , y los complementos usan <Leader> en la parte de enlace de teclas de sus asignaciones para que sean personalizables.

En el plugin, definiríamos mapeos con:

:nnoremap <Leader>a somecomplexaction

Esto sería asignar la acción a la somecomplexaction una combinación de teclas \ +.

La acción sin un líder no cambia.

También es posible usar <Plug>Mappings para dejar más espacio para personalizar los enlaces de teclas.

Ilustración de mapeo básico (atajos prácticos).

En la mayoría de los editores de texto, el acceso directo estándar para guardar el documento actual es Ctrl + S (o Cmd + S en macOS).

Vim no tiene esta función de forma predeterminada, pero se puede asignar para facilitar las cosas. Agregar las siguientes líneas en el archivo .vimrc hará el trabajo.

nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>

El comando nnoremap asigna Ctrl + s a :w (escribir el contenido actual en el archivo) mientras que el comando inoremap asigna Ctrl + S al comando :w y regresa al modo de inserción ( <co> pasa al modo normal para un comando y luego vuelve al modo de inserción, sin alterar la posición del cursor que otras soluciones como <esc>:w<cr>a no pueden garantizar).

Similar,

" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>

" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>

" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>

PD: Sin embargo, debe tenerse en cuenta que Ctrl + S puede no funcionar como se espera al usar ssh (o PuTTY). La solución a esto no está dentro del alcance de este documento, pero se puede encontrar aquí .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow