85 votes

Se déplacer au début de la ligne en mode Insertion

Je sais que je peux utiliser l'un ou l'autre :

  1. Home en mode insertion
  2. Esc + i pour quitter le mode insertion et y entrer à nouveau, ce qui permet de revenir au début de la ligne.

Mais ni l'un ni l'autre ne me satisfont. Dans le premier cas, je dois pencher la tête pour frapper Home parce que je ne peux pas le frapper à l'aveuglette. Dans le second cas, mon bras gauche doit quitter la première rangée pour frapper. Esc ce qui est également ennuyeux.

Qu'en pensez-vous ?

5 votes

Vous pouvez utiliser 0 pour vous déplacer au début de la ligne, mais ce n'est pas en mode insertion.

3 votes

Et si vous trouvez que Esc est trop loin, vous pouvez utiliser Ctrl-[ à la place :)

3 votes

Ou mieux, Ctrl-C fonctionne comme Esc. Ou mieux encore, faire correspondre Caps Lock à Esc.

0voto

pocoO Points 1

Vous pouvez y associer les clés :

inoremap II <Esc>I

ref : http://vim.wikia.com/wiki/Quick_command_in_insert_mode

0voto

Mahmoud Al-Qudsi Points 14815

Un raccourci qui a fonctionné pour moi (tant au niveau de la mémoire musculaire que de l'intuitivité) consiste à cartographier __ (qui est un double _ ) à "insérer au début de la ligne actuelle".

Raison d'être :

  • _ va déjà au début de la ligne
  • dans vim, doubler quelque chose est une façon très courante de le faire "à cette ligne"
  • double _ n'entre en conflit avec aucune motion (vous êtes déjà au début de la ligne)
  • votre main est déjà au bon endroit si vous êtes allé au début de la ligne et que vous voulez maintenant l'insérer.

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 aussi compliqué que cela parce que l'alternative la plus simple nnoremap __ _I fait en sorte que vim retarde le moment où l'on appuie sur _ de faire la distinction entre _ y __ .

0voto

MetalGodwin Points 26
ctrl+o then 0
     |      |
  letter  number

0voto

Rajat Negi Points 1

J'utilise cette commande pour aller à la fin de la ligne sans quitter le mode insertion.

inoremap jl <esc><S-a>

De même, pour aller au début de la ligne, ce sera :

inoremap jl <esc><S-i>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X