Chciałbym przejść do pliku, który właśnie edytowałem ostatni i następny rodzaj, jak wtyczki MRU.
:bnext
i :bprev
czasem działa, ale najczęściej kończę w jakimś niejasnym pliku, którego nie pamiętam i zmuszony jestem wrócić do wtyczki MRU.
Czy istnieje sposób, aby to naprawić?
Ctrl-^
zamienia między dwoma ostatnimi plikami. Jaki jest najlepszy sposób na nawigację między więcej?
Rozumiem, że może to być trudne, ale zgadzam się na wszystko, co może poprawić obecne :bn
:bp
zachowanie. Bufory, które często widzę, są zupełnie nie na miejscu. Może istnieje wtyczka, która może śledzić najnowsze pliki i zapewniać zaczepki, dzięki czemu mogę tworzyć mapowania?
Odpowiadanie na komentarze nieco oczyściło moje myśli. Wierzę, że chcę, aby móc przenosić pliki w kolejności najnowszych zapisów. W ten sposób, jeśli wrócę do historii, kolejność nie zmieni się, dopóki nie zapiszę pliku, który następnie staje się ostatni i nie zrobię kroku wstecz do pliku zapisanego tuż przed nim, tj. Od tego, od którego zacząłem.
Coś w rodzaju Ctrl-O
Ctrl-I
pary, która natychmiast przełącza pliki bez przeskakiwania bieżącego bufora. Coś jak u
i U
w sieci:
u Change to recently-visited directory |netrw-u|
U Change to subsequently-visited directory |netrw-U|
Ctrl-O
(lub czasamiCtrl-T
), aż tam dotrę.Ctrl-O
iCtrl-I
. Ale przeskakuje między punktami edycji i przerywa przepływ. Chcę tylko przechodzić między buforami w kolejności dostępu. W jaki sposób wtyczki wyświetlają listę najnowszych plików? Czy śledzą je wewnętrznie?Ctrl-^
zamienia między dwoma ostatnimi plikami. Ale jaki jest najlepszy sposób na nawigację między kolejnymi?Ctrl-O/I
są oknami specyficznymi dla okna, podczas gdy MRU jest zwykle globalny. Jeśli chcesz uporządkować według ostatniego dostępu, gdy tylko cofniesz się raz, kolejność listy zmienia się, co jeszcze bardziej komplikuje sytuację.Odpowiedzi:
Napisałem małą funkcję, aby kilkakrotnie nacisnąć CTRL-O dla mnie, dopóki bufor się nie zmieni.
Możesz go znaleźć tutaj . Odwzorowałem to na CTRL-U, ale możesz zastąpić CTRL-O, jeśli chcesz.
Prawdopodobnie mógłbyś napisać coś podobnego
<C-I>
.Problemy:
Związane z:
:jumps
wymienia historyczne lokalizacje, przez które CTRL-O się cofnie.źródło
:kwbd
zamykaniu kilku buforów Vim cofał się do poprzednich buforów w oczekiwanej kolejności wstecznej. Być może Vim ma listę MRU, której nie dzieli się z nami, a może wybiera bufor, do którego ma wrócić, na podstawie historii lokalizacji CTRL-O (:jumps
).autocmd InsertLeave * normal mZ
będzie pamiętał ostatni plik edytowane w globalnej znak Z . Możesz wrócić do tego za pomocąg'Z
. // Mam,nmap <C-y> g'Z
ale nadal częściej używam Ctrl-U.Możesz użyć,
:ls
aby wyświetlić wszystkie bufory. Na przykład:Aby wrócić do bufora
ext.markdown
, użyj:e +Nbuf
, gdzieN
jest numerem bufora z pierwszej kolumny. Na przykład::e +2buf
.Możesz stworzyć prostą funkcję zapewniającą bardziej interaktywne wrażenia:
Po użyciu
:ChooseBuf
lub<Leader>b
możesz po prostu wpisać numer bufora, który chcesz edytować.Nie jest to do końca „ostatnio używane”, ponieważ zamówienie jest „ostatnio otwarte” (prawdopodobnie jest to również powód
:bnext
/:bprev
brak działania zgodnie z oczekiwaniami).źródło
<C-6>
to, czego potrzebujesz, to zabierze Cię z powrotem do poprzedniego bufora, który miałeś otwarty przed bieżącym. Są też:bprev
i:bnext
których możesz użyć do tego samego.źródło
<C-6>
nie jest źle, ale nie mogę tego użyć do przeskoczenia dwóch buforów.bprev
ibnext
nie są w kolejności skoków.<C-6>
, to jest<C-^>
. Podczas gdy w wielu emulatorach terminali nie ma rozróżnienia, w niektórych (w tym w tym, które są dostarczane z OS X), istnieje. W drugim przypadkuShift
wymagane jest użycie klucza (przy założeniu układu Qwerty).Możesz także użyć,
:oldfiles
aby uzyskać listę edytowanych plików.Lista będzie miała numery związane z nazwami plików. Wybierz plik, zanotuj numer (powiedzmy 14) i otwórz go za pomocą
:edit #<14
Możesz także uruchomić inne polecenia z tego pliku lub przekazać wiele plików do polecenia jednocześnie. Więcej o tym TUTAJ
źródło
:bro[wse] ol[dfiles][!]