J'ai remarqué que lors de l'édition le long d'une ligne dans un fichier .txt en mode insertion, le curseur se déplacera au début de la ligne après une écriture utilisant une séquence de touches:
<esc>:w
Je voudrais changer ce comportement de telle sorte que le curseur reste en position après a: write. Est-ce possible? Je n'ai pas besoin que le curseur reste en mode insertion, je voudrais juste qu'il conserve sa dernière position après une écriture.
J'utilise gVim 7.4 sur Windows. Mon .vimrc est très basique, je ne crois pas qu'aucun de mes paramètres interfère avec ce comportement. J'ai également supprimé le sourcing de mswin.vim et example.vim de mon .vimrc (tel que fourni avec le programme d'installation officiel de vim.org pour Windows).
Après avoir lu les commentaires ci-dessous, j'ai réexaminé le problème et j'ai réalisé que le curseur ne glissait qu'à l'extrême gauche après une écriture sur des lignes entièrement constituées d'espaces blancs de fin. En d'autres termes, le curseur ne glisse à l'extrême gauche sur esc-: w que lorsque la ligne est un retrait suspendu sans autre caractère que les espaces . Le .vimrc gère les comportements de retrait avec ces paramètres:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
Ainsi, une nouvelle ligne créée sous une ligne en retrait contiendra 4 espaces blancs de fin comme les 4 premiers espaces de la ligne (que je veux conserver). Lorsque vous appuyez sur la touche «esc», le curseur glisse à l'extrême gauche du tampon.
Existe-t-il un moyen de conserver la position du curseur en appuyant sur 'esc' pour revenir au mode normal, sur une ligne composée d'espaces blancs à la fin (comme indentation)?
gvim -u NONE -U NONE
(vous pouvez soit utiliser cmd.exe, soit créer un raccourci)? Cela empêchera le chargement de vos fichiers (g) vimrc.Réponses:
La consultation de la documentation pour autoindent permet de savoir pourquoi et comment contourner ce problème.
:help 'autoindent'
:En d'autres termes, si vous souhaitez qu'il ne perde pas le retrait, tapez quelque chose , puis retournez-le avant de frapper Esc, et l'espace de tête restera.
Alternativement, si vous voulez simplement être de retour au niveau du retrait lorsque vous revenez en mode insertion et
'cindent'
que vous l' utilisez également, utilisez à la Shift-Splace de i, ce qui effacera la ligne (déjà vide) et commencera au niveau de retrait approprié. Ce n'est pas une solution aussi générale que celle ci-dessus, mais je préfère cela lorsque j'écris du code C, de sorte que mes fichiers ne soient pas réellement enregistrés avec des lignes d'espace blanc uniquement.la source
nnoremap o o <BS><Esc><DEL>
, etnnoremap O O <BS><Esc><DEL>