Dans le mastic, c'est ainsi que j'ai principalement utilisé VIM, je pouvais faire ce qui suit:
- Page up / down: Utilisation de la touche native Page up / down. Sous Mac, l'alternative est Fn + Up / Down, qui ne fonctionne pas dans le terminal (ne fait pas défiler le fichier vim, mais fait défiler le tampon du terminal)
- De même, les touches Fn + droite / gauche ne me prennent pas en début / fin de ligne
Comment puis-je émuler cette fonctionnalité dans Mac OS X?
Réponses:
Ce n'est pas spécifiquement une question mac, c'est vraiment une question vi.
En mode navigation, ctrl-f fait défiler une page vers le bas et ctrl-b fait défiler vers le haut une page (pensez "F" vers l'avant et "B" ack). Ctrl-d fait défiler une demi-page vers le bas et ctrl-u fait défiler une demi-page vers le haut.
^ vous amène au début d'une ligne et $ à la fin. Je sais, je sais, mais il y a des raisons historiques à cela.
Voici une très bonne feuille de triche sur les contrôles vi. vi est un peu mystérieux, mais une fois que vous l'internalisez, c'est l'éditeur de texte le plus rapide et le plus fluide du monde.
la source
Les préférences par défaut de Terminal sont mappées Shift- Page Upet Shift- Page Downaux séquences de caractères qui indiquent aux programmes comme Vim et Emacs de défiler (
ESC [ 5 ~
etESC [ 6 ~
).Si vous souhaitez que ces touches envoient des séquences de caractères au terminal sans le Shiftmodificateur, vous pouvez personnaliser la carte du clavier:
Si vous faites cela, je vous recommande d'inverser la signification du Shiftmodificateur pour ces touches en échangeant les mappages pour les touches décalées et non décalées, afin que les comportements alternatifs soient toujours disponibles. Consultez également le menu Affichage , qui contient des commandes de défilement qui utilisent le Commandmodificateur afin qu'elles soient disponibles quelle que soit la carte du clavier du terminal.
De même, Shift- Homeet Shift- Endsont mappés pour se déplacer au début / à la fin de la ligne actuelle (
ESC [ H
etESC [ F
). Ces séquences sont comprises par Bash, mais vous devrez peut-être personnaliser Vim pour les comprendre, ou modifier les mappages spécifiquement pour Vim. Vim, Emacs et certains autres programmes envoient une séquence d'échappement pour mettre le terminal en "mode curseur d'application", où les touches Home / End envoientESC O H
etESC O F
, mais Terminal (à partir de 10.9) n'implémente pas ce comportement. Vous pouvez donc modifier la carte du clavier pour envoyer ces autres codes à la place (Bash les comprend également). (Sur d'autres systèmes d'exploitation, Homeet Endsont utilisés pour le début / la fin de la ligne, Terminal leur fournit le Shiftmodificateur de symétrie.)Control- Left Arrowet Control- Right Arrowsont également mappés par défaut pour "passer au début / fin de ligne", bien qu'ils soient différents de ceux mappés à Shift- Homeet Shift- End. Au lieu de cela, ils sont mappés aux séquences compatibles Emacs et Bash
ESC [ 5 D
etESC [ 5 C
. En supposant que ceux-ci ne sont pas utilisés par Vim, l'approche la plus simple serait de personnaliser Vim pour les accepter, en utilisant ~ / .vimrc.Notez que dans les versions plus récentes de macOS, Terminal n'a plus de mappages explicites pour Homeet Enddans les préférences par défaut. Au lieu de cela, il a un comportement dynamique où les touches sont automatiquement mappées au début / fin de ligne lorsque l'écran secondaire est actif, par exemple lors de l'utilisation d'une application plein écran comme emacs, vim, screen ou tmux. Lorsque vous utilisez un programme orienté ligne comme un shell sur l'écran principal, ils continuent de faire défiler la vue du terminal par défaut. Le Shiftmodificateur inverse le comportement.
la source
\033[5~
(et ... 6.) Pour PageDown / Up.La solution la plus simple et la meilleure est
n
+↓
, oùn
est le nombre de lignes que vous souhaitez descendre, et↓
est la touche bas.Je fais régulièrement juste
12
+↓
et22
+↓
.la source
J'étais habitué à ce que Home / End m'amène au début et à la fin des lignes en mode Insertion (depuis Windows et je pense que Linux), que Mac ne prend pas en charge. C'est particulièrement ennuyeux car lorsque j'utilise vim sur un système distant, je ne peux pas non plus le faire facilement. Après quelques essais et erreurs douloureux, j'ai trouvé quelques
.vimrc
lignes qui font la même chose, et j'ai finalement trouvé quelqu'un d'autre qui a trouvé une solution similaire ici:https://coderwall.com/p/fd_bea
Prendre plaisir.
la source