Jednym ze sposobów wyboru bufora w vimie może być przeglądanie listy buforów za pomocą standardowych poleceń as :ls
lub jakiegoś zewnętrznego kodu wtyczki / vimscript do przeglądania listy w oknie .
Powiedzmy, że chcę przejść bezpośrednio do bufora tak szybko, jak to możliwe.
Aby przeglądać listę buforów w trybie sekwencyjnym, używam teraz <C-J>
<C-K>
skrótów, po ustawieniu w moim .vimrc:
" move among buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Innym sposobem (bezpośredni dostęp) może być przełączanie według numeru : znając numer bufora, można przełączać bezpośrednio, wprowadzając numer bufora, a następnie <C-^>
. Więc jeśli chcę przełączyć się na bufor numer 5, naciskałbym 5<C-^>
.
Ale wydaje mi się, że to nie działa (używam vim 7.4 na Ubuntu Box, od gościa Windows, z włoską klawiaturą ). Podejrzewam, że ^
dzieje się tak dlatego, że znak jest pisany wielkimi literami ^ì
na włoskiej klawiaturze, więc tak naprawdę ^
muszę go nacisnąćSHIFT-^
Jakieś pomysły?
<c-6>
zamiast<c-^>
?1<C-6>
przełącza się na bufor numer 1. Dzięki!Odpowiedzi:
:b
Komenda może także wziąć podciąg nazwy pliku buforu, który chcesz podróżować do tego, co jest bardzo wygodne.Na przykład, jeśli masz trzy bufory
foo
,bar
ibaz
, a następnie:b bar
przejdzie dobar
pliku.:b o
przejdzie dofoo
pliku.:b a
wyświetli błąd, ponieważ może to oznaczać albo,bar
albobaz
, ale możesz naprawić nazwę, aby była bardziej szczegółowa, na przykład : ↑ r Enter.Może to być bardzo przydatne, ponieważ oznacza zamiast
możesz zrobić coś takiego
co jest znacznie krótsze i łatwiejsze.
To polecenie może również przyjmować liczbę, jeśli chcesz go użyć:
źródło
:b
. Na przykład, jeśli masz dwa buforypath/to/foo
ipath/to/tofu
, polecenie:b f<Tab>
nigdy nie będzie pasowaćpath/to/tofu
, ponieważ pasuje na początku słowa wpath/to/foo
.:5b
jest wtedy nieco krótszy:b 5
;-)Oto, czego używam:
Teraz naciśnięcie
\b
wyświetli listę dostępnych buforów i przygotuje:b
dla Ciebie.Następnie wystarczy wpisać numer bufora i nacisnąć Enter.
Możesz też wpisać część nazwy pliku i nacisnąć Enter. (Jednak zwykle uderzam Tab przed naciśnięciem Enter, aby sprawdzić, czy mam odpowiedni bufor. Jeśli nie, kontynuuję jazdę na Tabie, dopóki nie otrzymam tego, którego chciałem.)
W rzeczywistości używam nieco ulepszonej wersji powyższego:
Zapobiegnie to wyświetlaniu
-- More --
monitu, gdy masz więcej buforów niż dostępnych linii do ich wyświetlenia.Ale jeśli zwykle i tak masz
'more'
wyłączoną opcję, to mapowanie naprawdę cię denerwuje, ponieważ ponownie włącza'more'
opcję po wykonaniuls
!źródło
[count]<C-^>
gdy znasz numer bufora, jest dość przydatna, gdy nie wiesz.[count]<C-6>
wydaje mi się najszybszy sposób na przejście do znanego bufora[count]<C-^>
tych dni. Ale to oznacza, że muszę uruchomić MiniBufExplorer lub coś podobnego, aby wiedzieć, jakie są numery buforów!:CtrlPBuffer
z wtyczki CtrlP (4k ★)Główną cechą tej wtyczki jest zapewnienie rozmytego dopasowania, aby wygodnie otworzyć inny bufor z wizualnym sprzężeniem zwrotnym.
Otwórz listę buforów rozmytych za pomocą
:CtrlPBuffer
lub naciśnij,<C-p>
a następnie,<C-b>
aby zmienić tryb nabuffer
.Wprowadź wystarczającą liczbę znaków, aby określić bufor, który chcesz otworzyć.
Możesz także używać
<C-j>
i,<C-k>
aby przewijać listę i ręcznie wybierać bufor.Dostosowywanie
Jeśli chcesz natychmiast otworzyć listę buforów
<C-p>
, dodaj następujący wiersz do vimrc:Możesz użyć
<C-f/b>
do przełączenia trybu okna Ctrlp.Ja osobiście korzystam
let g:ctrlp_cmd = 'CtrlPMRU'
. Lista ostatnio używanych (mru) zawiera również otwarte bufory. Jeśli używasz różnych trybów Ctrlp i chcesz pozostać przy ostatnim trybie, możesz ustawićlet g:ctrlp_cmd = 'CtrlPLastMode [--dir]'
.Podobne wtyczki
Istnieje więcej wtyczek, które zapewniają listę buforów z interaktywnym monitem z rozmytym dopasowaniem, np
Ciemna strona kontra jasna strona
(tj. konfiguracja vim-heavy vim vs. vim)
Zanim zdecydujesz się na użycie bardziej złożonych wtyczek, zapoznaj się z odpowiedziami @Doorknob i @joeytwiddle . W szczególności sprawdź, czy jeden z nich już spełnia twoje potrzeby.
nnoremap <Leader>b :b <C-d>
nnoremap <Leader>b :ls<Cr>:b<Space>
Zainstalowanie wtyczek tylko do przełączania buforów może być przesadą. Zobacz także uwagi na https://www.vi-improved.org/recommendations oraz artykuł Drew Neila „O ostrzeniu piły” .
źródło
map <leader>a <ESC>:CtrlPBuffer<CR><CR>
aby przejść do poprzednio otwartego bufora za pomocą<leader>a
(podczas gdy<leader>b
właśnie otwiera dla mnie listę buforów)<C-^>
(=<C-6>
)? zob:h CTRL-^
. Afaik, robi to tylko to, co<leader>a
wydaje się robić twoje mapowanie . Dlatego myślę, że właśnie podałeś przykład, dlaczego ludzie mówią, że używanie wtyczek może prowadzić do użytkowników vimów, którzy nie wiedzą, co vim może zrobić samodzielnie.Oprócz naprawdę przydatnych odpowiedzi autorstwa joeytwiddle i Doorknob nie zapomnij o tym
:b#
, który przełącza się na ostatnio używany bufor. Można to również zrobić za pomocą just<C-^>
. Gdy masz wiele buforów i ciągle się między nimi przełączasz, najnowszy bufor jest zwykle najczęstszym miejscem docelowym.Osobiście używam kombinacji wielu metod. Kiedy pracuję głównie z dwoma buforami, a reszta jest otwierana tylko dla sporadycznych odniesień, zwykle przełączam się między nimi za pomocą
:b#
lub<C-^>
. Kiedy muszę pracować z większą liczbą z nich i częściej się przełączać, do ich uzupełnienia używam liczb (jak w wskazówce Joeytwiddle) lub części nazw (jak we wskazówce Doorknob). Kiedy nazwy są mylące, a otwartych jest wiele buforów (zwykle ponad 10), częściej używam wtyczki Ctrl-P ( https://github.com/kien/ctrlp.vim ). Dwa szybkie naciśnięcia klawiszy spowodowały, że otrzymałem listę wszystkie i jestem w stanie użyć potężnego wyszukiwania rozmytego nad nimi, aby szybko znaleźć to, czego chcę.źródło
[b
i]b
z wtyczkivim-unimpaired
(> 2k ★)Jeśli masz zainstalowany
vim-unimpaired
, możesz użyć[b
(:bp[revious]
) i]b
(:bn[ext]
)do przechodzenia przez otwarte bufory. Nie ma potrzeby definiowania cenniejszych mapowań dla tych samych poleceń. Ponadto można przejść do pierwszego i ostatniego bufora
[B
(:bf[irst]
) i]B
(:bl[ast]
).Jest o wiele więcej mapowań nawiasów, w
vim-unimpaired
których możesz się przydać. Wszystkie są zgodne z tym samym schematem, co ułatwia ich zapamiętanie.Ciemna strona kontra jasna strona
Wtyczkę tę można uznać za lekką i „vimish”. Jest ona oznaczona #vim społeczności jako plugin „nie szkodzić”.
źródło
3[b
przeskoczyć trzy bufory z powrotem.Obecnie używam klawisza
<Leader>
+number
do przełączania. Klucz lidera jest moim<space>
kluczem. Używam również vim-Airlines, aby wyświetlić bufor nr na górze okna.Podczas gdy bufor często przekracza 10, więc poprawiam własne mapowanie, jeśli
number
jest to jedyne dopasowanie, natychmiast przełączaj bufor, w przeciwnym razie poczekaj na więcej danych liczbowych lub<space>
klawisz, aby potwierdzić:Kod jest wklejany stąd
Nawiasem mówiąc, używam również
<S-h>
i<S-l>
dla:bp
i:bn
, lub:tabp
i:tabn
jeśli obecnie otwartych jest więcej niż jedna strona. Jest to dla mnie dość intuicyjne.źródło
Obecnie używam
[buffer_number]<Ctrl-^>
do przełączania buforów, ponieważ jest to bardzo szybkie.Ale jak poznać numer bufora? Używam MiniBufExplorer, więc zawsze mogę zobaczyć numery buforów na górze Vima.
Używam również następującego mapowania, ponieważ
<C-^>
jest to trochę trudne do osiągnięcia jedną ręką.Na nowej maszynie bez konfiguracji wracam do
:b [part_of_filename]<Tab><Enter>
źródło