114 votes

vim ne se souvient pas de la dernière position

Mon Ubuntu LTS 12.04 possède l'éditeur vim. Si j'ouvre un fichier, que je me déplace vers un paragraphe et que je rouvre vim, le curseur va toujours au début du fichier.

Ce n'est pas le comportement attendu. Comment vim peut-il se souvenir de la dernière position de lecture après avoir fermé un fichier ?

J'ai essayé vi également, mais le résultat est le même.

150voto

David Jones Points 165

Le dossier /etc/vim/vimrc contient déjà la fonctionnalité nécessaire. Il suffit de le décommenter :

" 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

(En fait, vous pouvez vous référer à /usr/share/vim/vim73/vimrc_example.vim aussi)

82voto

TikiTavi Points 921

J'ai eu le même problème et il s'est avéré que le fichier .viminfo dans mon répertoire personnel n'avait pas le bon propriétaire. Il appartenait à root:root.

Une fois que j'ai corrigé la propriété du fichier en le changeant pour moi, se souvenir de la position du fichier a recommencé à fonctionner pour moi.

6voto

GaryBishop Points 894

Je pense que ce post wiki peut fournir une solution. Je ne pense pas que le rétablissement de la position soit le comportement attendu. http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session

4voto

adeandrade Points 363

Il existe un plugin appelé vim-lastplace (je suis l'auteur) qui ouvrira vos fichiers là où vous les avez laissés. Il améliore les suggestions ci-dessus en ignorant les messages commit parce que vous êtes typiquement en train d'éditer un nouveau message et voulez commencer au début du fichier de messages commit.

4voto

C.D. Points 211

Une bonne convention est de créer votre propre .vimrc dans votre $HOME et inclure cette ligne qui fera sauter Vim à la dernière position connue dans un fichier précédemment édité.

En $HOME/.vimrc ajoutez les lignes suivantes :

" Reopen the last edited position in files
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif

Il n'est pas nécessaire de modifier le fichier système /etc/vim/vimrc.

La création et l'utilisation de votre propre fichier .vimrc dans votre répertoire $HOME est également plus facile à maintenir. Le fichier de configuration vimrc du système pourrait être mis à jour lors de la prochaine mise à jour du paquetage de l'application Vim, ou édité par quelqu'un d'autre. Votre propre fichier dans votre propre répertoire home sera honoré lorsque vous exécuterez Vim.

En fait, je vous recommande d'examiner toutes les possibilités que vous pouvez faire avec votre propre fichier .vimrc. Le mien est configuré avec des tonnes d'options utiles et même quelques fonctions personnalisées.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X