vim не помнит последнюю позицию

68

У моего Ubuntu LTS 12.04 есть редактор vim. Если я открою файл, перейдите к абзацу и снова запустите vim, тогда курсор всегда будет начинать файл.

Это не ожидаемое поведение. Как vim может запомнить последнюю позицию чтения после закрытия файла?

Я тоже пробовал vi , но результат тот же.     

задан Lunar Mushrooms 28.11.2012 в 14:07
источник

6 ответов

91

Решено:

/ и т.д. / VIM / vimrc

Уже содержит необходимую функцию. Просто нужно раскомментировать его:

" 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

(Infact, вы можете также ссылаться на /usr/share/vim/vim73/vimrc_example.vim)

    
ответ дан Lunar Mushrooms 03.12.2012 в 10:08
источник
48

У меня была такая же проблема, и оказалось, что файл .viminfo в моем домашнем каталоге имеет неправильное право собственности. Он принадлежал root: root.

Как только я исправил права собственности на файл, изменив его на себя, вспомнив, что позиция файла снова начала работать для меня.

    
ответ дан TikiTavi 26.11.2013 в 16:36
5

Я думаю, что эта публикация wiki может предоставить решение. Я не верю, что восстановление позиции - это ожидаемое поведение. Ссылка

    
ответ дан GaryBishop 28.11.2012 в 14:36
0

В моем случае vi была символической ссылкой: /usr/bin/vi -> /etc/alternatives/vi -> /usr/bin/vim.tiny . У последнего нет реальных особенностей vim. Установка пакета 'vim' (с использованием synaptic или apt-get) сделала эту символическую ссылку на /usr/bin/vim.basic , и это устранило проблему.

    
ответ дан Bruno Haible 11.02.2017 в 21:57
0

Существует плагин под названием vim-lastplace (я автор), который откроет ваши файлы, где вы остановились , Он улучшает приведенные выше предложения, игнорируя сообщения фиксации, потому что вы обычно редактируете новое сообщение и хотите начать в верхней части файла сообщения фиксации.

    
ответ дан Greg Dietsche 17.01.2016 в 04:20
-1

В решении Lunar Mushrooms имеется ошибка. Здесь исправление:

if has("autocmd")
  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  " Also don't do it when the mark is in the first line, that is the default
  " position when opening a file.
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g'\"" |
    \ endif

endif
    
ответ дан Arnaud 29.09.2015 в 05:01