En masilla, que es cómo usé principalmente VIM, podría hacer lo siguiente:
- Página arriba / abajo: Uso de la tecla nativa Página arriba / abajo. En Mac, la alternativa es Fn + Arriba / Abajo, que no funciona en el terminal (no se desplaza dentro del archivo vim, sino que desplaza el búfer del terminal)
- Del mismo modo, las teclas Fn + derecha / izquierda no me llevan al inicio / final de línea
¿Cómo emulo esta funcionalidad en Mac OS X?
Respuestas:
Esta no es específicamente una pregunta de mac, esta es realmente una pregunta vi.
En el modo de navegación, ctrl-f desplaza hacia abajo una página y ctrl-b desplaza hacia arriba una página (piense en "F" hacia adelante y "B" ack). Ctrl-d se desplaza hacia abajo media página y ctrl-u se desplaza hacia arriba media página.
^ te lleva al principio de una línea y $ al final. Lo sé, lo sé, pero hay razones históricas para eso.
Aquí hay una muy buena hoja de trucos sobre los controles vi. vi es un poco arcano, pero una vez que lo internalizas, es el editor de texto más rápido y hábil del mundo.
fuente
Las preferencias predeterminadas de Terminal se asignan Shift- Page Upy Shift- Page Downa las secuencias de caracteres que le dicen a programas como Vim y Emacs que se desplace (
ESC [ 5 ~
yESC [ 6 ~
).Si desea que estas teclas envíen secuencias de caracteres al terminal sin el Shiftmodificador, puede personalizar el mapa del teclado:
Si hace esto, le recomiendo que invierta el significado del Shiftmodificador para estas teclas intercambiando las asignaciones para las teclas desplazadas y no desplazadas, de modo que los comportamientos alternativos aún estén disponibles. Además, consulte el menú Ver , que contiene comandos de desplazamiento que utilizan el Commandmodificador para que estén disponibles independientemente del mapa del teclado del terminal.
Del mismo modo, Shift- Homey Shift- Endse asignan para moverse al inicio / final de la línea actual (
ESC [ H
yESC [ F
). Bash comprende estas secuencias, pero es posible que deba personalizar Vim para comprenderlas o editar las asignaciones específicamente para Vim. Vim, Emacs y algunos otros programas envían una secuencia de escape para poner el terminal en "Modo de cursor de aplicación", donde las teclas Inicio / Fin envíanESC O H
yESC O F
, pero el Terminal (a partir de 10.9) no implementa este comportamiento. Por lo tanto, es posible que desee cambiar el mapa del teclado para enviar estos otros códigos (Bash también los entiende). (En otros sistemas operativos, Homey Endse usan para inicio / final de línea, entonces Terminal les proporciona el Shiftmodificador para la simetría).Control- Left Arrowy Control- Right Arrowtambién se asignan a las secuencias "mover al inicio / final de línea" de forma predeterminada, aunque son diferentes de las asignadas a Shift- Homey Shift- End. En cambio, se asignan a las secuencias compatibles con Emacs y Bash
ESC [ 5 D
yESC [ 5 C
. Suponiendo que estos no estén en uso por Vim, el enfoque más simple sería personalizar Vim para aceptarlos, usando ~ / .vimrc.Tenga en cuenta que en las versiones más recientes de macOS, Terminal ya no tiene asignaciones explícitas para Homey Enden las preferencias de forma predeterminada. En cambio, tiene un comportamiento dinámico en el que las teclas se asignan automáticamente al inicio / fin de línea cuando la pantalla alternativa está activa, por ejemplo, cuando se usa una aplicación de pantalla completa como emacs, vim, screen o tmux. Cuando se utiliza un programa orientado a líneas como un shell en la pantalla principal, continúan desplazando la vista de terminal de forma predeterminada. El Shiftmodificador invierte el comportamiento.
fuente
\033[5~
(y ... 6.) Para PageDown / Up.La mejor y más fácil solución es
n
+↓
, donden
es el número de líneas que le gustaría bajar, y↓
es la tecla hacia abajo.Regularmente solo hago
12
+↓
y22
+↓
.fuente
Estaba acostumbrado a Inicio / Fin, llevándome al inicio y al final de las líneas en modo Insertar (desde el uso en Windows y creo que Linux), que Mac no admite. Esto es particularmente molesto porque cuando estoy usando vim en un sistema remoto, tampoco puedo hacerlo fácilmente. Después de una prueba y error dolorosa, se me ocurrieron algunas
.vimrc
líneas que hacen lo mismo, y finalmente encontré a otra persona que encontró una solución similar aquí:https://coderwall.com/p/fd_bea
Disfrutar.
fuente