J'ai vu quelque part sur le Web quelqu'un utiliser Ctrl-J
et comme je ne connaissais pas cette cartographie, j'ai recherché dans le document correspondant et j'ai trouvé ce qui suit:
j or
<Down> or
CTRL-J or
<NL> or
CTRL-N [count] lines downward linewise.
Ce qui m'amène à plusieurs questions:
- Qu'est-ce que c'est
<NL>
: je le verrais comme un équivalent<CR>
car appuyer sur Enterdescendra d'une ligne en mode normal par défaut mais pourquoi est-il<NL>
ici et non<CR>
? - Quelle est la différence entre ces mappages : toutes ces 5 options descendent-elles d'une ligne de la même manière? Selon mes tests, je répondrais oui mais cela m'amènerait à ma prochaine question.
- Pourquoi y a-t-il 5 mappages pour faire exactement la même chose : je peux comprendre cela
j
et<down>
sont conservés pour les utilisateurs qui ne sont pas habitués aux mappages vim, mais pourquoi les autres mappages existent-ils? - Quand est-il plus intéressant d'en utiliser un de plus que l'autre : c'est une continuation de la question précédente: s'il y a tellement de possibilités, je suppose qu'elles ont des avantages différents ou sont mieux utilisées dans des cas d'utilisation spécifiques. Quels sont ces cas d'utilisation?
Je trouve la redondance de ces commandes encore plus étrange quand je regarde :h k
: il n'y a que trois façons de monterons k
, <UP>
et ctrl-p
. La question bonus est donc: pourquoi y a-t-il 5 façons de descendre et seulement 3 de monter?
cursor-movement
statox
la source
la source
Ctrl-J
liaison par défaut ? Il semble courant, au moins chez ceux que je connais, de mapperCtrl-J/K
sur "bas / haut jusqu'à la ligne suivante avec le même niveau d'indentation que la ligne de départ".<CR>
êtes ici"Réponses:
Intéressant que vous avez mentionné
<CR>
.<CR>
ou retour chariot, techniquement utilisé pour signifier aller au début de la ligne .<NL>
, ou saut de ligne, ou saut de ligne (généralement appeléLF
), était utilisé pour signifier passer à la ligne suivante . Au fil du temps, la distinction s'est perdue dans la plupart des applications. 1 En Enterappuyant sur CtrlVEnter, vous obtenez généralement un retour chariot (essayez d'appuyer sur - vous devriez voir^M
dans les terminaux Unix).<NL>
Le code de contrôle est CtrlJ.CtrlNm'a surpris. Selon 2 , c'est un caractère de décalage :
man ascii
Le changement dans et le déplacement des caractères, selon Wikipedia :
Comment cela a fini par signifier descendre est un mystère pour moi.
Eh bien, les trois façons de monter ont toutes des façons correspondantes de descendre. ( CtrlPest probablement le complément de CtrlN, ce qui implique que le changement d'entrée / sortie n'est pas pertinent ici). Les deux voies supplémentaires vers le bas (
<NL>
ou CtrlJ) sont en fait deux représentations de la même manière.<NL>
est un héritage des jours de la machine à écrire - et à cette époque, je ne pense pas qu'il y avait une clé pour monter - seulement pour descendre.Voir également:
1 Il est toujours important dans certains cas (l'impression
\r
(retour chariot) et\n
(saut de ligne) d'utiliser la plupart des fonctions / outils d'impression formatés conservent toujours leur ancienne signification.).2 Ce tableau est organisé de telle manière que l'alphabet correspond au code de contrôle du caractère sur la même ligne.
la source
Ctrl-N
c'était pour le suivant etCtrl-P
pour le précédent . C'est ce qu'ils représentent dans Emacs, de toute façon, dans lequel ils sont liés ànext-line
etprevious-line
. En outre,Ctrl-P
n'est pas intégré ; c'est une fuite de liaison de données . Shift in isCtrl-O
.Tu vois
:help key-notation
.<NL>
signifie "saut de ligne" et<CR>
"retour chariot".Ce sont deux façons différentes de rompre la ligne actuelle. Ils sont historiquement liés à des caractères différents de contrôle (
ctrl-j
etctrl-m
) mais sont généralement insérés avec la même clé,<CR>
. Je suis d'accord que l'utilisation<NL>
dans ce contexte semble contre-intuitive.Tous ces "mappages" (ils ne sont pas en fait des mappages) se comportent exactement de la même manière.
L'historique, principalement, également des contraintes multiplateformes.
Il n'y avait pas de terminal dédié aux touches de mouvement de Bill Joy, mais les décalcomanies des flèches étaient sur les
hjkl
touches. Comme les éditeurs modaux étaient rares à l'époque, appuyer sur ces touches ne faisait qu'insérer le caractère associé dans ce que vous faisiez. Il fallait appuyer sur<C-h>
,<C-j>
,<C-k>
et<C-l>
pour déplacer le curseur sur l'écran.Comme vous pouvez le voir, il y a un chevauchement entre tout à fait
j
,<C-j>
,<NL>
et<Down>
.<C-n>
signifiant généralement "suivant" dans Vim, il est facile de voir comment il a été regroupé avec ses camarades.Puisqu'ils sont tous synonymes, vous êtes libre d'utiliser celui qui vous convient le mieux.
<CR>
, par exemple, est une clé intéressante à utiliser pour vos propres mappages.la source
<CR>
cartographie. Encore une autre question: je sais que ces "combinaisons de touches" ne sont pas réellement appelées mappages mais je ne sais pas comment les appeler?:ls
,:substitute
,new
, etc ...?x
est aussi une "commande".x
,dd
,c
, etc « commandes ». Vous devez donc avoir raison, je suppose quej
ou^J
sont également des commandes.