EDIT: REAL REPONSE : voir https://stackoverflow.com/questions/9625028/vim-buffer-position-change-on-window-split-annoyance
TLDR : Ce comportement ne se produit que la première fois qu'une nouvelle fenêtre est créée. Si vous fermez la fenêtre et recommencez, le curseur dans le nouveau tampon est le même que dans l'ancien tampon. La solution consistait à faire quelque chose d’inutile en ouvrant puis en fermant une fenêtre, puis en effectuant votre division verticale.
Voici un autre .vimrc
mappage qui enveloppe la réponse de stackoverflow pour le faire pour vous:
map <C-S-O> :tabnew<CR>bwipeout<CR>:vs<CR>
Ainsi, lorsque vous appuyez sur ctrl-shift-o
, un nouvel onglet vide s'ouvre ( :tabnew<CR>
), supprimez le tampon ( :bwipeout<CR>
), puis effectuez votre division verticale ( :vs<CR>
).
J'espère que cela va mieux - fonctionne parfaitement pour moi. Merci de me donner envie de trouver quelque chose d’utile pour contourner ce comportement ennuyeux!
Cela arrive tout le temps pour moi! Je suis récemment venu avec une réponse qui fonctionne la plupart du temps (mieux que rien cependant). Mettez ceci dans votre .vimrc
:
map <C-S-O> mmH:vs<CR>`m<C-W>l`m<C-W>h
Chaque fois que vous appuyez sur ctrl+shift+o
cette touche , faites une division verticale et placez le curseur sur la même ligne et la même colonne que vous l'aviez dans la mémoire tampon d'origine avant la division.
Le problème vim
est que le tampon que vous éditez est plus grand que ce qui peut être affiché actuellement. Selon l'endroit où se trouve le curseur dans la mémoire tampon (exactement au milieu, dans la moitié supérieure et dans la moitié inférieure), une fois que vous effectuez une :vs
division verticale, le nouveau tampon défilera vers le bas ou vers le haut jusqu'à ce qu'il pense le mieux.
La .vimrc
cartographie ci-dessus est en train de faire:
map <C-S-O> map ctrl-shift-o to run this
mm mark the current cursor position
H move the cursor to the top of
the buffer
:vs<CR> do a vertical split
`m move to line and column of mark
<C-W>l move focus to the right to the
original buffer
`m move the cursor in the orig buffer
back to the marked position
<C-W>h move back to the new buffer on
the left
Encore une fois, cela fonctionne la plupart du temps pour moi, sans savoir pourquoi cela ne fonctionne pas tout le temps. En tout cas, espérons que cela a aidé certains
Ctrl-W-V
touches et:vsplit
ne déplacent pas le curseur pour moi.