Ostatnia historia plików w Vimie?

136

Chciałbym uzyskać dostęp do ostatnio otwieranych i zamykanych plików w GVim. Często otwieram i zamykam GVim. Chciałbym również uzyskać dostęp do ostatnich plików z poprzednich sesji.

Czy GVim przechowuje ostatnie pliki gdzieś jako sklep Word i wiele innych aplikacji komputerowych? Jak uzyskać do nich dostęp?

Mert Nuhoglu
źródło
Podobne do pytania: stackoverflow.com/questions/309723/…
malgca

Odpowiedzi:

235

Przynajmniej terminalowy vim przechowuje poprzednie dziesięć plików ~/.viminfow sekcji nazw plików. Można użyć '0, '1, '2, ... '9, aby przejść między nimi.

(Prawdopodobnie przydatne tylko '0do powrotu do ostatnio edytowanego pliku, chyba że twoja pamięć jest silniejsza od mojej).

Możesz także użyć :browse oldfilespolecenia, aby uzyskać menu z numerami.

sarnold
źródło
2
Jeśli chcesz użyć 0- 9jako znaków nawigacyjnych, nie oznaczaj ich ręcznie
juana
20
użyj :browse oldget file-list. i wprowadź, qaby wybrać plik do edycji.
songhir
6
:e #<1otwiera ostatni plik, zobacz :h c_#<.
Hotschke
: bro ol działa ... ale musisz wpisać wiele klawiszy ... najpierw, aby uzyskać listę plików, następnie naciśnij q, a następnie, aby wybrać liczbę. Uważam, że wspomniana poniżej wtyczka MRU jest znacznie lepsza: stackoverflow.com/a/3171323/4752883 musisz wcisnąć <leader> f, a następnie albo przejść do pliku za pomocą hjkl lub innych klawiszy / wyszukać nazwę pliku. Następnie naciśnij o, enter, t lub v, aby szybko otworzyć plik pod kursorem.
alpha_989
Odzyskałem plik, który omyłkowo usunąłem przy rmużyciu wspomnianej metody.
tandem
59

Najlepszym sposobem, którego używam, jest

:browse oldfiles

Najłatwiejszy sposób na vimie.

andor kesselman
źródło
1
Ładny! Zmapowałem to wyrażenie jako "nmap bo: przeglądaj stare pliki <CR>" (bez cudzysłowów) w moim ~ / .vimrc. Po prostu wpisanie tego mapowania (bo) w trybie normalnym powoduje wykonanie tego polecenia
Victoria Stuart,
22

Bardzo późna odpowiedź tutaj ... wyjaśniając odpowiedź @sarnolds - Możesz przeglądać historię plików za pomocą polecenia oldfiles @see: h oldfiles lub: h viminfo

:oldfiles 

Co więcej, możesz mieć precyzyjne zarządzanie plikami z widokami i sesjami ... @ zobacz: h mkview i: h mksession, aby uzyskać szczegółowe informacje ...

Eddie B.
źródło
6
Warto wiedzieć, jak właściwie otworzyć plik, gdy znasz jego numer z listy :oldfiles. Można to zrobić interaktywnie za pomocą :browsepolecenia, jak wyjaśniono w @sarnold, ale można to również zrobić ręcznie, używając :e #<Ngdzie N jest liczbą z oldfileslisty.
Krzysztof Adamski
11

Istnieje szwajcarska wtyczka CtrlP do przełączania plików , która jest również częścią dystrybucji janus . Ma :CtrlPMRUpolecenie z inteligentnym wyszukiwaniem wśród ostatnio używanych plików.

Uwaga: CtrlP utrzymuje własną listę ostatnio używanych plików w g:ctrlp_cache_dir."mru/cache.txt". Nie jest to ponowne użycie viminfo ( set viminfo?), które zawiera listę znaczników plików. Jest to przydatne, jeśli chcesz wyczyścić tę listę.

Alexey
źródło
1
Interfejs CtrlP nie jest intuicyjny dla użytkowników vimów? Nie warto się kłopotać nauczeniem się skomplikowanego interfejsu, aby zrobić prostą rzecz, jak znaleźć plik MRU = ~ / regexp / (łatwo to zrobić za pomocą perl / grep regexp ~ / _viminfo).
mosh
Tak ... Próbowałem zrozumieć, jak używać Ctrlp, ale MRU wydaje się być dużo łatwiejsze w użyciu, jeśli masz prosty zestaw plików ( stackoverflow.com/a/3171323/4752883 ). W MRU możesz również przeszukać VIM regexp, aby znaleźć potrzebny plik ...
alpha_989
10

Użyj, :bro ola następnie naciśnij numer odpowiadający plikowi, który chcesz otworzyć.

nenchev
źródło
5

CtrlP Wtyczka pozwala przeglądać swoje ostatnio używane pliki, jak również pliki w bieżącym katalogu z tym poleceniem:

nnoremap <c-p> :CtrlPMixed<cr>

Oszczędza to kłopotów związanych z koniecznością radzenia sobie z wbudowanymi poleceniami Vima i wtyczką MRU, z których żadna nie pozwala na rozmyte wyszukiwanie plików, co jest krytyczne podczas pracy nad większymi projektami.

Andy Ray
źródło
Dla tych, którzy są odporni na ponowne mapowanie domyślnych funkcji Ctrl-P: Możesz normalnie otworzyć Ctrl-P i użyć Ctrl-F lub Ctrl-B do przełączania się między trybami (MRU jest jednym z nich)
Gustavo Matias
2

Jak widać w komentarzach tutaj (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), Twój plik prawdopodobnie jest nadal otwarty w buforze:

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

Na przykład możesz ponownie otworzyć trzeci bufor w nowej karcie (użyj: e, jeśli nie używasz kart):

:tabnew +3buf
user886333
źródło
1
Tak, to działa. Ale z pewnością zadaniem redaktora jest ułatwienie sprawy? Jeśli musisz wydać polecenie, wizualnie coś zidentyfikować, zapamiętać identyfikator, a następnie wydać kolejne polecenie, co jest prawdziwą stratą czasu użytkownika. Twoja odpowiedź jest poprawna i nie mam na myśli urazy, ale nie stanowi to jednej z zabójczych funkcji Vima!
artfulrobot
Miałem ten sam problem. czy próbowałeś buffexplorer? Łączy ls i: tabnew + Nbuf. Teraz możesz otworzyć listę buforów i otworzyć ją w nowej karcie itd. Jednym naciśnięciem klawisza (o, t, v) itd.
alpha_989
2

Możesz uzyskać dostęp do listy z wiersza poleceń za pomocą:

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

Wyjaśnienie:

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

Możesz mieć alias bash, jeśli używasz go regularnie

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"
Alexx Roche
źródło
2

Dodanie tutaj moich 2 centów, ponieważ nie wspomniano wcześniej o fzf, co jest tak wspaniałym narzędziem:
fzf.vim ma :Historypolecenie, które pozwala na rozmyte przeszukiwanie ostatnio używanych plików i wyszukiwanie podczas pisania .
Dostosowuję (domyślne) zachowanie tego polecenia, nie pozwalając fzf zmieniać kolejności na liście wyników wyszukiwania do najlepszego dopasowania: chcę, aby kolejność wszystkich pasujących nazw plików pozostawała kolejnością, w której te pliki były ostatnio używane.
Aby wykonać to dostosowanie, dodałem następujące polecenie w moim .vimrc, aby zastąpić domyślne Historypolecenie zdefiniowane przez wtyczkę fzf.vim:

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})
Emile Vrijdags
źródło
1

Jeszcze jedna wtyczka, która pozwala wybrać plik z listy ostatnio zmodyfikowanych, jest staritfy . Zastępuje ekran startowy listą ostatnio zmodyfikowanych plików. Zawsze możesz otworzyć tę stronę później za pomocą :Startifypolecenia.

Krzysztof Adamski
źródło
1
Nie udało się nawet rozpocząć instalacji - potrzebuję więcej dokumentów na temat podstawowej instalacji i użytkowania. Korzystanie z MRU, ponieważ było łatwe w instalacji i obsłudze.
mosh
1

:ls aby wyświetlić ostatnie pliki z numerem bufora w lewej kolumnie.

Następnie zrób :b{buffer-number} aby tam wskoczyć.

Przykład: :ls pokazuje listę plików. Chcę przejść do przedostatniego pliku, który odwiedziłem. :b3zabierze mnie tam.

Aby przyspieszyć wyszukiwanie, zamapuj :lsna coś, np. <Leader>.W pliku .vimrc.

Bryan Perez
źródło
1

Możesz także wrócić za pomocą ctrl+ O.

IvanDi
źródło