Discussion:
[Vim] Oublier la position dans un fichier déjà édité
(trop ancien pour répondre)
Olivier Miakinen
2017-02-02 12:15:27 UTC
Permalink
Bonjour,

Lorsque je réouvre avec vim un fichier déjà édité précédemment,
il me positionne sur la ligne où j'étais avant de quitter. Pour
des raisons que je pourrai expliquer si cela vous intéresse, je
voudrais éviter ce comportement, soit de façon globale, soit
(si possible) pour certains types de fichiers, et que réouvrir
un fichier me positionne tout bêtement à la ligne numéro 1.

J'ai l'impression que ça doit se résoudre avec un « :set viminfo »
mais je n'y comprends pas grand chose (et ne trouver que des docs
en anglais ne m'aide pas à savoir où chercher rapidement).
--
Olivier Miakinen
pfercour
2017-02-02 17:18:48 UTC
Permalink
Bonjour
Post by Olivier Miakinen
Lorsque je réouvre avec vim un fichier déjà édité précédemment,
il me positionne sur la ligne où j'étais avant de quitter. Pour
des raisons que je pourrai expliquer si cela vous intéresse, je
voudrais éviter ce comportement, soit de façon globale, soit
(si possible) pour certains types de fichiers, et que réouvrir
un fichier me positionne tout bêtement à la ligne numéro 1.
Dans mon Vim.rc j'ai les lignes suivantes :
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") |
exe "normal! g'\"" | endif
endif

Donc comme précisé en recommentant ces lignes ce comportement
global disparait.

Par contre pour ne le faire que pour certains fichiers,
là j'ai pas le niveau.
Mais je suis certain qu'une regex ;-) et quelques coup de sed et grep
doivent permettre de t'organiser cela aux petits oignons...
Et là pour le coup ton niveau doit te permettre ce style de manip !
Pas le mien, je me contente de tenter de comprendre tes superbes
explications sur f.c.l.regexp. Merci d'ailleurs !


Mes deux centimes, de franc bien sûr ;-)

Philippe Armingaud
Olivier Miakinen
2017-02-02 17:52:22 UTC
Permalink
Post by pfercour
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") |
exe "normal! g'\"" | endif
endif
J'ai un .vimrc que j'ai créé et qui ne contient que ce que j'y ai
mis moi-même, en revanche je vois ceci dans /etc/vimrc :
=====================================================================
" Only do this part when compiled with support for autocommands
if has("autocmd")
augroup redhat
" In text files, always limit the width of text to 78 characters
autocmd BufRead *.txt set tw=78
" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal! g'\"" |
\ endif
augroup END
endif
=====================================================================

Je ne peux malheureusement pas mettre en commentaire ce qui est dans
/etc/vimrc car je ne suis pas l'administrateur de cette machine, alors
il va falloir que je mette l'antidote dans mon ~/.vimrc, mais grâce à
toi je sais maintenant où chercher (mots-clés autocmd et BufReadPost) :
<http://vimdoc.sourceforge.net/htmldoc/autocmd.html>.

Il me reste à comprendre les line("'\"") et exe "normal! g'\"".
Post by pfercour
Donc comme précisé en recommentant ces lignes ce comportement
global disparait.
Par contre pour ne le faire que pour certains fichiers,
là j'ai pas le niveau.
Je parierais que remplacer l'* dans « BufReadPost * » par une
description des fichiers en question, en l'occurrence « Result.* »
pour moi, devrait faire l'affaire.
Post by pfercour
[...]
Mes deux centimes, de franc bien sûr ;-)
:-)
--
Olivier Miakinen
Olivier Miakinen
2017-02-02 18:02:47 UTC
Permalink
Post by Olivier Miakinen
Je ne peux malheureusement pas mettre en commentaire ce qui est dans
/etc/vimrc car je ne suis pas l'administrateur de cette machine, alors
il va falloir que je mette l'antidote dans mon ~/.vimrc, mais grâce à
<http://vimdoc.sourceforge.net/htmldoc/autocmd.html>.
Je parierais que remplacer l'* dans « BufReadPost * » par une
description des fichiers en question, en l'occurrence « Result.* »
pour moi, devrait faire l'affaire.
Bingo !

La solution est ici :
<http://stackoverflow.com/questions/2393671/vim-restores-cursor-position-exclude-special-files>
<cit.>
autocmd BufReadPost COMMIT_EDITMSG
\ exe "normal! gg"
</cit.>

Et j'ai donc mis dans mon .vimrc :
autocmd BufReadPost Result.* exe "normal! gg"
--
Olivier Miakinen
Loading...