Історія файлів у Vim?


132

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

Чи зберігає GVim останні файли десь як Word та багато інших додатків для настільних комп'ютерів? Як отримати доступ до них?


З таким запитанням: stackoverflow.com/questions/309723 / ...
malgca

Відповіді:


229

Принаймні термінал vim зберігає попередні десять файлів ~/.viminfoу розділі файлів. Ви можете використовувати '0, '1, '2, ... , '9щоб стрибати серед них.

(Можливо, корисно лише для того, '0щоб повернутися до останнього файлу, який ви редагували, якщо тільки ваша пам'ять не сильніша за мою.)

Ви також можете скористатися :browse oldfilesкомандою, щоб отримати меню з цифрами.


2
Якщо ви хочете використовувати 0- 9як знаки для навігації, що не позначати їх вручну
юанів

16
використовувати :browse oldотримати файл-список. і введіть, qщоб вибрати файл, який потрібно редагувати.
songhir

5
:e #<1відкриває останній файл, див :h c_#<.
Хоцке

: bro ol працює .., але вам потрібно набрати багато клавіш .. спочатку отримати список файлів, потім натиснути q, а потім вибрати номер. Я вважаю, що плагін MRU, згаданий нижче, набагато кращий: stackoverflow.com/a/3171323/4752883 вам потрібно натиснути <leader> f, а потім перейти до файлу hjkl або інших клавіш / шукати ім'я файлу. Потім натисніть o, введіть, t або v, щоб швидко відкрити файл під курсором.
alpha_989

Я відновив файл, який я помилково видаляю, використовуючи rmвищезгаданий метод.
тандем

55

Найкращий спосіб, який я використовую, - це

:browse oldfiles

Найпростіший спосіб на vim.


1
Приємно! Я відобразив це вираз як "nmap bo: перегляньте старі файли <CR>" (без лапок) у моєму ~ / .vimrc. Просто ввівши, що відображення (bo) у звичайному режимі виконує цю команду
Вікторія Стюарт


22

Тут дуже пізня відповідь ... пояснення щодо відповіді @sarnolds - Ви можете переглянути історію файлів за допомогою команди oldfiles @see: h oldfiles або: h viminfo

:oldfiles 

Крім того, ви можете мати дрібнозернисте управління файлами з переглядами та сеансами ... @ дивіться: h mkview і: h mksession для конкретних даних ...


4
Корисно знати, як насправді відкрити файл після того, як ви дізнаєтесь, що це номер зі списку :oldfiles. Це можна зробити інтерактивно за допомогою :browseкоманди, як пояснив @sarnold, але це також можна зробити вручну, використовуючи, :e #<Nде N - це число зі oldfilesсписку.
Кшиштоф Адамський

11

Існує швейцарський ніж для переключення файлів CtrlP-плагіна , який також є частиною janus distributive. Це має:CtrlPMRU команду з розумним пошуком серед нещодавно використаних файлів.

Примітка: CtrlP підтримує власний список останніх використаних файлів у g:ctrlp_cache_dir."mru/cache.txt". Він не використовує viminfo ( set viminfo?), який містить список позначок файлів. Це корисно, якщо ви хочете очистити цей список.


1
Інтерфейс CtrlP не інтуїтивно зрозумілий для користувачів vim? Не варто проблем з навчанням складного інтерфейсу робити простою справою, як знайти файл MRU = ~ / regexp / (легко робиться за допомогою perl / grep regexp ~ / _viminfo).
мош

Так .. Я намагався зрозуміти, як використовувати Ctrlp, але MRU здається набагато простішим у використанні, якщо у вас є простий набір файлів ( stackoverflow.com/a/3171323/4752883 ). У MRU ви також можете виконати пошук по VIM regexp, щоб знайти потрібний вам файл ...
alpha_989

9

Використовуйте :bro olпотім натисніть номер , який відповідає файлу , який ви хочете відкрити.


5

CtrlP плагін дозволяє здійснювати пошук через ваші недавно використовувані файли, а також файли в поточному каталозі з допомогою наступної команди:

nnoremap <c-p> :CtrlPMixed<cr>

Це позбавить вас від клопоту мати справу з вбудованими командами Vim та плагіном MRU, жоден з яких не дозволяє вам здійснювати нечіткий пошук файлів, що дуже важливо при роботі над великими проектами.


Для тих, хто є стійким щодо функціонального відображення за замовчуванням функціонально Ctrl-P: Ви можете відкрити Ctrl-P нормально і використовувати Ctrl-F або Ctrl-B для перемикання між режимами (MRU є одним з них)
Gustavo Matias


2

Як видно з коментарів тут (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), ваш файл, ймовірно, все ще відкритий у буфері:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

Наприклад, ви можете знову відкрити третій буфер на новій вкладці (замість цього використовуйте: e, якщо ви не використовуєте вкладки):

:tabnew +3buf

1
Так, це працює. Але, безумовно, завдання редактора - це полегшити справи? Якщо вам потрібно випустити команду, візуально ідентифікувати щось, запам'ятати ідентифікатор, а потім видати іншу команду, яка є реальною тратою часу користувача. Ваша відповідь правильна, і я не маю на увазі образи, але це не означає жодної з рис убивці Vim!
artfulrobot

У мене була така ж проблема. ви пробували buffexplorer? Він поєднує ls і: tabnew + Nbuf. Тепер ви можете відкрити список буферів і відкрити його на новій вкладці тощо .. одним натисканням клавіші (o, t, v) etcc.
alpha_989

2

Ви можете отримати доступ до списку з командного рядка за допомогою:

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

Пояснення:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

У вас може виникнути псевдонім баш, якщо ви користуєтесь цим регулярно

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"

2

Додавання мої 2 центи тут , тому що fzf був не згадувалася раніше, що такий чудовий інструмент:
fzf.vim має :Historyкоманду , яка дозволяє шукати найостанніші використовувані файли в нечіткої та пошук під час спосіб.
Я налаштовую (за замовчуванням) поведінку цієї команди, не дозволяючи fzf переупорядкувати список результатів пошуку на найкращу відповідність: я хочу, щоб порядок усіх відповідних імен файлів і надалі був порядком, в якому останні файли використовувались.
Щоб здійснити цю налаштування, я додав у свій .vimrc наступне для зміни команди за замовчуванням, Historyвизначеної плагіном fzf.vim:

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})

1

Ще один плагін, за допомогою якого ви виберете файл зі списку останніх модифікованих, - це staritfy . Він замінює ваш початковий екран зі списком останніх модифікованих файлів. Ви завжди можете відкрити цю сторінку пізніше за допомогою :Startifyкоманди.


1
Не вдалося навіть почати встановлення - потрібно більше документів для базової установки та використання. Використовуючи MRU, тому що його було легко встановити та використовувати.
мош

1

:ls перелічити останні файли з номером буфера в лівій колонці.

Тоді робіть, :b{buffer-number}щоб туди стрибнути.

Приклад: :lsпоказує список файлів. Я хочу перейти до третього останнього файлу, який я відвідав. :b3візьме мене туди.

Для швидшого пошуку, перейдіть :lsна щось, наприклад <Leader>.у файл .vimrc.


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