Как в vim открыть файл с тем же номером строки, с которым я его закрыл в прошлый раз?

Я хочу настроить vim для открытия файла в том же месте, где я остановился.


vim
person Community    schedule 21.04.2009    source источник
comment
:' апостроф, за которым следуют двойные кавычки, перенаправляет строку последних изменений   -  person Dhiren Hamal    schedule 05.05.2019


Ответы (7)


В файле Ubuntu /etc/vim/vimrc этот пример закомментирован:

" Uncomment the following to have Vim jump to the last position when                                                       
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

Если это не работает, распространенная проблема заключается в том, что вы не являетесь владельцем файла ~/.viminfo. Если это так, то запустите:

sudo chown user:group ~/.viminfo

где пользователь — это ваш username, а group часто совпадает с вашим именем пользователя.

person moinudin    schedule 21.04.2009
comment
Autocmd исходит прямо из документа vim. См. :help last-position-jump - person user55400; 23.04.2009
comment
Если одинарную кавычку в предпоследней строке изменить на обратную кавычку, она переместится к фактической позиции курсора, а не только к началу этой строки: \| exe "normal! g`\"" | endif - person u2622; 03.06.2013
comment
Часть chown устранила проблему для меня. Снимаю шляпу! - person slowpoison; 27.08.2013
comment
Была настройка, но примечание о разрешениях заставило ее работать. Спасибо. - person Ryan Detzel; 23.04.2014
comment
Наконец кто-то указывает, что мой .viminfo по какой-то причине принадлежит root! Это должно быть в других 100 документах, которые я читал. - person Jack; 30.05.2015
comment
Просто хочу добавить +1 к chown user ~/.viminfo дополнению. Я пытался понять это уже час, и вы только что спасли мой день. - person Christopher Reid; 26.01.2016
comment
решение chown у меня не сработало, поэтому я просто раскомментировал строки в /etc/vim/vimrc - person Matt; 22.06.2017
comment
Отличный ответ! :-) Однако обратите внимание на особенность, что этот подход не работает с файлами, открытыми с использованием меток (vim.wikia. com/wiki/Using_marks). Если вы перейдете к файлу, отмеченному меткой (например, mW), то вы не вернетесь автоматически к предыдущей позиции курсора/строки, если этот файл открыт с помощью ярлыка `W. - person Victoria Stuart; 29.10.2017
comment
Если вы не хотите редактировать /etc/vim/vimrc или /etc/vimrc (в моем случае Arch Linux), вы также можете добавить это в свой ~/.vimrc и будет работать таким же образом (я имею в виду, что я предпочитаю делать эту конфигурацию на стороне пользователя, а не в системе). широкий). - person jfernandz; 01.11.2019
comment
если кто-то сделает ту же ошибку, что и я: удалите let skip_defaults_vim=1 и set viminfo=" из ~/.vimrc. - person Herpes Free Engineer; 11.09.2020

Если вы не возражаете против автоматизации торговли для простоты, просто нажмите клавишу '" (апостроф, за которым следуют двойные кавычки) при открытии файла, и вы перейдете туда, где вы были Это, по сути, то, что делает ответ @marcog.

person sykora    schedule 22.04.2009

  :h views-sessions

Вы можете поместить это в свой .vimrc :

  autocmd BufWinLeave *.* mkview
  autocmd BufWinEnter *.* silent loadview 

представления будут помещены в .vim/view. Вероятно, вам нужно создать эти каталоги.

person Oli    schedule 22.04.2009
comment
Мне нравится этот ответ, потому что другой ссылался на файл /etc/vim/, которого не было на моем Mac. - person MarkHu; 19.10.2017

Вы можете запустить vim без указания имени файла, используя

vim 

Затем дважды нажмите CTRL+O, чтобы перейти к последнему месту в любом файле, над которым вы работали.

person MatAff    schedule 24.11.2017
comment
Если у вас установлен NERDTree, двойное нажатие C-o может открыть NERDTree в текущем буфере. В моем случае мне иногда нужно нажать C-o до пяти раз, но в итоге я получаю эффект, описанный @MatAff. - person ashrasmun; 25.08.2019
comment
Мне достаточно один раз нажать Ctrl-c. Кроме того, нажатие Ctrl-c больше возвращает меня назад в историю положения курсора (даже при открытии соответствующих неоткрытых файлов). Я использую Neovim 0.4.2, но я так понимаю, что это относится и к vim. - person T_T; 02.10.2019

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

person Greg Dietsche    schedule 17.01.2016
comment
все, что вы можете сделать без плагинов, лучше всего. стремиться к .vimrc: чем меньше код, тем легче и быстрее - person nilon; 22.07.2017

Если у вас включена функция viminfo, перейти к последней редактируемой позиции в файле можно с помощью `0. Вы заметите, что это всего лишь команда «перейти к отметке»;

Действительно, вы можете позже сделать '3, чтобы перейти к третьему предыдущему отредактированному месту (возможно, в другом файле), а затем снова вернуться к последнему с помощью `0

Посмотри на

 :marks

чтобы увидеть запомненные места. Обратите также внимание, что viminfo хранит множество других вещей (например, содержимое регистров, метки для каждого файла, историю команд и поиска). У большинства людей это включено по понятным причинам.

person sehe    schedule 30.03.2011
comment
`0 у меня не работает на vim версии 7.4.1689 на mac. Но '0 делает свое дело. Это опечатка в ответе? - person alamoot; 17.10.2017
comment
@alamoot нет, см. vimdoc motion.txt - Проверьте, какой символ на самом деле генерирует ваш ключ `, или выполните :verbose map ` - person sehe; 17.10.2017
comment
ты прав. Согласно vimdoc оба верны! - person alamoot; 17.10.2017

Иногда ~/.viminfo становится доступным только для чтения или ваш пользователь не имеет доступа к файлу. Это также может быть причиной того, что vim не сохраняет позицию курсора, когда вы закрываете файл.

person dam0055    schedule 15.09.2017