Intenté mapear como agregando la siguiente línea a .vimrc, pero no funciona. Verifiqué que el .vimrc está cargado por Vim.
map <Alt-D> <C-D>
¿Hay algún error en este mapeo?
Intenté mapear como agregando la siguiente línea a .vimrc, pero no funciona. Verifiqué que el .vimrc está cargado por Vim.
map <Alt-D> <C-D>
¿Hay algún error en este mapeo?
encoding
cambios después de que se ejecuta el mapeo, lo que obtenga de sus teclas Alt puede que no coincida con lo que estableció inicialmente.
Respuestas:
Para los usuarios de Mac: para mapear ALT + hjkl, use en su lugar el carácter real generado (descubra qué carácter usando la combinación en el modo INSERT), por ejemplo, con mi teclado obtengo:
<ALT+j> ==> ª
<ALT+k> ==> º
y así. Solución encontrada aquí en StackOverflow.
Usé esto para mover líneas hacia arriba y hacia abajo con ALT + k \ j, usando esto en mi .vimrc:
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
como se explica aquí .
Espero que sea útil, disfruta de Vim :)
ADDENDUM BY Dylan_Larkin (2019): Para que esto funcione en una Mac, " Usar opción como tecla Meta " debe estar APAGADO en Terminal-> Preferencias-> Teclado
cat
. Simplemente escriba cat
y dentro de la ventana del gato la combinación de teclas que desee. Descubrí que alt + corchetes es "y" en mi mac.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
para ver la salida de <Ak> y <Aj> antes de configurar la asignación. En mi caso, <Aj> es ∆
y <Ak> es˚
Use Option as Meta Key
o en el perfil de iTerm, ⌥ key to Esc+
se comportará de la forma tradicional (como en Linux / Unix). Por lo tanto, no es necesario configurar en Vim el mapa <^[j>
, simplemente asignarlo a <A+j>
o <M+j>
y funciona.
:help key-notation
describe qué formato debe utilizarse para asignar diferentes claves. En el caso de alt, puede usar <A-
o <M-
. Entonces tu mapeo sería
map <M-d> <C-d>
También recomendaría usar la nore
variante de :map
(por ejemplo, noremap
) a menos que desee explícitamente permitir que se reevalúe el lado derecho para las asignaciones.
<A-d>
. Probablemente necesite cambiar la configuración de su terminal para que envíe <A-d>
como <Esc>d
.
Ya no estoy seguro de que sea "posible". Lea la actualización a continuación.
Sí, se puede, incluso en vim terminal, pero no hay verdadera captura toda respuesta. Básicamente tienes que seguir dos pasos:
Asegúrese de que <M-d>
exista la notación y asigne exactamente lo que ingresa su terminal ( ^[
es el carácter de escape):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Asigne algo a su combinación recién "creada":
noremap <M-d> :echo "m-d works!"<cr>
Entendiendo cómo funciona, puede expandir este "truco" a otras combinaciones "extrañas", por ejemplo, estoy usando termitas y vim no reconoce <S-F1>
, usando cat I get ^[[1;2P
. Luego, en mi vimrc hago:, execute "set <S-F1>=\e[1;2P"
y luego puedo asignarlo a cualquier cosa.
Nota: No sé por qué, pero para algunas personas que usan \<Esc>
obras en lugar de \e
.
Actualización (febrero de 2016)
Dependiendo de la terminal que ejecute su terminal, tal vez podría ... en la mayoría de las terminales, por ejemplo, se asigna "alt + h" ^[h
, que es: "escape + h". Entonces podría sobrescribir claves. Lo intenté (de nuevo) y parece funcionar, pero creo que es una implementación muy propensa a errores y errores.
Sin embargo, para los valientes, aquí hay un complemento experimental:
execute "set...
cosas, puede usar directamente set <M-d>=^[d
. En ^[
realidad, es un carácter de escape introducido con C-v-Esc
. Esto era necesario en rxvt / urxvt, pero xterm no debería necesitar un tratamiento especial. Más información sobre este tema en la wiki de vim .
Map Alt Key en Vim en Mac OSx:
Comience por ver el código clave que su terminal está enviando a vim:
$ sed -n l
^[[1;9D
En el ejemplo anterior, ejecuté el comando y presioné Alt + Left.
El ^[[1;9D
es la secuencia escapado de ser enviado a vim, de modo que podamos usuario que para nuestro mapeo.
map <Esc>[1;9D
Option
tecla izquierda ( ⌥
) configurada como Esc+
en iTerm2, podría mapear alt+q
para salir de vim: nnoremap <silent> <Esc>q :qa!<cr>
Es posible que su terminal no transmita "correctamente" el Alt-D. Puede usar CV para enviar la secuencia de escape real a Vim y usarla para crear su mapeo. Es decir, edite su .vimrc y reemplace el actual escribiendo la siguiente secuencia "CV Alt-D" para que tenga la secuencia de escape correcta en su vimrc. Eso no funcionará si su terminal no envía nada a vim.
Mi terminal produciría ^[x
comandos (por ejemplo, para alt-x). Lo que hizo que funcionara dentro de Vim fue este pequeño script de vim.wikia.com :
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
Agregue a .vimrc para corregir todas las asignaciones de teclas alt.
Hola, después de una buena solución después de años de probar todo lo anterior en Mac, seguí buscando.
Aquí está mi solución:
Para crear una combinación de teclas que incluya Alt, debe declarar la combinación en la preferencia> teclado y usar esa combinación en el archivo de configuración de vim (marque la opción de uso como tecla meta).
La salida debe ser un carácter inusual (no, a
por ejemplo) para que no anule un carácter regular.
En el siguiente ejemplo, debería poder hacer vim con ALT-Up.
configuración de vim:
configuración de mac: