Je sais que je peux utiliser soit:
Mais ni me satisfait. Dans le premier cas, je dois pencher la tête pour frapper Home, parce que je ne peux pas le frapper aveuglément. Dans le second cas, mon bras gauche doit quitter la ligne d'arrivée pour frapper Esc, ce qui est agaçant aussi.
Des pensées?
Ctrl+O en mode insertion, vous êtes en mode commande pour une seule pression sur une touche. Donc Ctrl+O puis Shift+I devrait accomplir ce que vous cherchez.
Vous pouvez entrer en mode insertion avec I
(majuscule i).
Cela mettra le curseur au début de la ligne.
De même, vous pouvez utiliser A
pour ajouter quelque chose à la fin de la ligne.
Cependant, cela ne résout pas vraiment le problème du déplacement alors que vous êtes déjà en mode Insertion.
Je viens de vérifier l'aide sur le mode Insertion, il n'y a pas de combinaison de touches en mode Insertion pour vous déplacer au début de la ligne.
Autre idée: Remapper une nouvelle commande uniquement en mode insertion.
inoremap <C-i> <Home>
J'ai Ctrl + a et Ctrl + e mappés au début et à la fin de la ligne, respectivement. Cela correspond au comportement de la plupart des lignes de commande bash. Fonctionne bien pour moi.
inoremap <C-e> <Esc>A
inoremap <C-a> <Esc>I
Si vous utilisez MacOS Terminal, accédez à Préférences ...> Paramètres> Clavier et mappez la touche de fin à Ctrl-O $ (elle est affichée sous la forme\017 $), puis utilisez fn + left pour simuler la touche de fin. Faites la même chose pour la clé home. Séquence d'échappement\033 [H fonctionne également pour la maison.
La meilleure chose à faire est de remapper l'action sur une clé différente (voir Comment remapper <Ctrl-Accueil> pour aller à la première ligne du fichier? pour des idées)
Je pense à la fréquence à laquelle j'utilise cette "fonctionnalité" et mappe-la en conséquence
Vous pouvez mapper les clés à ceci:
inoremap II <Esc>I
Un raccourci qui a fonctionné pour moi (mémoire musculaire et intuitivité) est de mapper __
(qui est un double _
) pour "insérer au début de la ligne actuelle".
Raisonnement:
_
va déjà au début de la ligne_
n'entre en conflit avec aucun mouvement (vous êtes déjà au début de la ligne)vimscript:
"insert at start of current line by typing in __ (two underscores)
function DoubleUnderscore()
if v:count == 0 && getcurpos()[2] == 1
:silent call feedkeys('I', 'n')
else
:silent call feedkeys('^', v:count + 'n')
endif
endfunction
nnoremap <silent> _ :call DoubleUnderscore()<CR>
C'est ce qui est compliqué, car l'alternative simple nnoremap __ _I
fait que vim tarde à appuyer sur _
pour faire la distinction entre _
et __
.
ctrl+o then 0
| |
letter number