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).
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
endif
Update:
А еще лучше использовать следующий код:
if has("autocmd")Он помимо курсора еще и фолдинги восстанавливает (спасибо за подсказку lyn4ed).
set viewoptions=cursor,folds
au BufWinLeave * mkview
au BufWinEnter * silent loadview
endif
13 комментариев:
Странно.Vim должен был по умолчанию так делать..
в некоторых линукс-дистрах это есть из коробки.
в частности, в Gentoo.
Обычно сразу после установки системы (debian) я открываю /etc/vim/vimrc и раскомментирую все строки, кроме mouse. там еще куча всего интересного.
вау, вот это действительно то, что раздражало меня :-)
спасибо за подсказку!
никак пока не могу привыкнуть к этими режимам, все время пытаюсь редактировать текст в нормальном, бр-р-р...
Это несколько педальное решение при наличии mkview и loadview — тут и фолдинги сохраняются.
У меня эта фича давно в .vimrc. Если память не изменяет - стащил из дефолтного конфига в дебиане =)
По-моему, как раз удобно, что:
1) Файл всегда при открытии показывается на первой строке, поскольку это вполне ожидаемое поведение.
2) Есть простая команда перехода на метку, '", которая работает как и все остальные такие команды.
Другими словами, не вижу проблемы ввести '" после открытия файла, если нужно перейти к месту последнего редактирования.
> Это несколько педальное решение при наличии mkview и loadview — тут и фолдинги сохраняются.
lyn4ed, спасибо, про mkview я тоже забыл. :) А ведь раньше читал про него в документации...
Сейчас заменил вышеприведенные строки на:
set viewoptions=cursor,folds
au BufWinLeave * mkview
au BufWinEnter * silent loadview
kostix, ну это уже дело вкуса. А вот если использовать mkview/loadview (см. выше), то и фолдинги восстанавливаются, что действительно может быть очень удобно.
Надо же, а я был уверен, что именно из вашего конфига у vim утащил mkview и loadview.
У меня при 2-ом способе когда открываю vim (без указания файла) высвечивается предупреждение:
Обнаружена ошибка при обработке BufWinEnter Автокоманды для "*": нет имени файла
хотя сохранение фолдингов, положения курсора работает.
Не подскажете как можно исправить?
Скоре всего это из-за недртрее или ему подобным плагинам, т.к. данные буферы не связаны ни с какими файлами.
thevoan
мне помогло: https://vi.stackexchange.com/questions/13864/bufwinleave-mkview-with-unnamed-file-error-32
Отправить комментарий