Когда я выхожу из VIM и снова открываю тот же файл, я располагаюсь в начале файла. Как сохранить последнюю позицию курсора?
Сохранить последнюю позицию редактирования в VIM
Ответ 1
"Из коробки" .vimrc
разрешает это с помощью инструкции:
source $VIMRUNTIME/vimrc_example.vim
Вам просто нужно восстановить этот оператор в .vimrc
. В любом случае, см. vimrc_example.vim
, а также см. Функцию line()
в руководстве Vim для обсуждения того, как она работает.
Ответ 2
Взято из http://amix.dk/vim/vimrc.html
" Return to last edit position when opening files (You want this!)
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
Ответ 3
Последняя позиция редактирования автоматически сохраняется Vim и доступна в виде "специальной" метки перехода .
, Другие специальные отметки включают "
(позиция, с которой вы сохранили) и '
(позиция, с которой вы прыгнули).
Вы можете перейти к отметке, набрав '<mark>
, так '.
приведет вас к месту последнего редактирования, ''
вернет вас туда, где вы были, и '"
''
вернет вас в положение, в котором вы сохранили файл.
Это и многое другое о знаках Vim на Vim.Wikia.
Ответ 4
Существует плагин (я автор), называемый vim-lastplace, который разумно вернет вас к последнему редактированию, которое вы сделали.
Он также имеет опцию конфигурации, чтобы игнорировать определенные типы файлов. По умолчанию он будет игнорировать сообщения фиксации для git, svn и mercurial. Для этих типов файлов он начнет курсор в первой строке. Фрагменты кода выше будут переходить в середину вашего файла сообщения фиксации (где вы остановились в своем предыдущем коммите), хотя это, вероятно, не то, что вы хотите. vim-lastplace устраняет эту проблему.
Ответ 5
Вы можете попробовать команду :mks
(сделать сеанс). Он хранит файл script, который при запуске через vim восстанавливает текущий сеанс редактирования, включая все открытые файлы и позицию курсора.
Ответ 6
Убедитесь, что ~/.viminfo
доступен для чтения и записи пользователю vim. Каким-то образом я получил копию, доступную только для пользователя root, в моем стандартном домашнем каталоге пользователя, что означало, что последняя позиция курсора не может быть сохранена.