У vim, як мені змусити файл відкритись під тим самим номером рядка, коли я його закрив востаннє?


141

Я хочу налаштувати vim, щоб він відкривав файл там, де я зупинився.

vim 

: '"апостроф з подальшими подвійними цитатами переспрямовує останній рядок змін
Dhiren Hamal

Відповіді:


195

З /etc/vim/vimrcфайлу Ubuntu цей приклад коментується:

" 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часто такий же, як ваше ім'я користувача.


9
Autocmd виходить прямо з документа vim. Дивіться: допомога в стрибку в останній позиції
користувач55400

19
Якщо єдину цитату в передостанньому рядку змінити на зворотний, вона перейде до фактичної позиції курсору, а не лише до початку цього рядка:\| exe "normal! g`\"" | endif
u2622

4
chownЧастина виправлена проблема для мене. Знімаю капелюх!
повільний отрут

2
Нарешті хтось вказує, що мій .viminfo чомусь належить root! Це має бути в інших 100 документальних документах, які я прочитав.
Джек

2
Просто хочу поставити +1 chown user ~/.viminfoдодатку. Я вже годину намагаюся розібратися в цьому, і ти просто врятував мені день.
Крістофер Рід

48

Якщо ви не заперечуєте проти автоматизації торгівлі для простоти, просто натисніть клавішу '"(апостроф, а потім подвійні лапки), відкривши файл, ви перейдете туди, де ви були. Це по суті те, що робить відповідь @ marcog.


24
  :h views-sessions

Ви можете розмістити це у своєму .vimrc :

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview

перегляди будуть розміщені у $ HOME / .vim / view. Можливо, вам потрібно створити ці каталоги.


Мені подобається ця відповідь, оскільки інша згадувала файл / etc / vim /, який не існував на моєму Mac.
MarkHu

15

Ви можете запустити vim, не вказуючи ім'я файлу, використовуючи

vim 

Далі двічі натисніть CTRL + O, щоб перейти до останнього місця у будь-якому файлі, над яким працювали.


Якщо у вас встановлено NERDTree, натисканням кнопки Co двічі можна відкрити NERDTree в поточному буфері. У моєму випадку мені іноді потрібно натиснути Co до п'яти разів, але з часом я отримую ефект, описаний @MatAff.
ашрасмун

Натискання Ctrl-cодного разу мені достатньо. Крім того, натискання Ctrl-cще більше повертає мене назад в позицію курсору histroy (навіть відкриваючи відповідні незакриті файли). Я використовую Neovim 0.4.2, але я розумію, що це стосується vimі цього.
T_T

7

Якщо увімкнено viminfo, `0перейти до останнього відредагованого файлу так само просто. Ви помітите, що це лише команда "перейти до позначки";

У самому справі, ви можете пізніше зробити «3 , щоб перейти до третього попереднього відредагованим місця (можливо , в іншому файл), а потім повернутися до останнього з `0знову

Погляньте

 :marks

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


`0 не працює для мене на версії vim 7.4.1689 на mac. Але '0 робить трюк. Це помилка у відповіді?
alamoot

@alamoot ні, ні, дивіться vimdoc motion.txt - Перевірте, який символ `насправді генерує ваш ключ, або зробіть:verbose map `
sehe

ти правий. За словами vimdoc, обидва вірні!
аламут

6

Є плагін під назвою vim-lastplace (я автор), який відкриє ваші файли там, де ви зупинилися. Наведені вище пропозиції покращуються, ігноруючи повідомлення про фіксацію, оскільки ти зазвичай редагуєш нове повідомлення і хочеш розпочати у верхній частині файлу повідомлень про виконання.


все, що можна зробити без плагінів, найкраще. мета для .vimrc: чим менший код, тим легше і швидше
nilon

1

Іноді ~/.viminfoстає лише для читання або ваш користувач не має доступу до файлу. Це також може бути причиною того, що vim не зберігає позицію курсора, коли ви закриваєте файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.