Za pomocą edytora vim powszechnym zadaniem jest przeglądanie buforów. Teraz używam standardowych poleceń takich jak :ls
lub :bnext
. W rzeczywistości ustawiłem w .vimrc:
"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Chciałbym przeglądać bufory jako listę w oknie szybkiego dostępu, w prosty (= doskonały) sposób, w jaki implementuje się wtyczka MRU .
Czy istnieje wtyczka tak prosta jak MRU, ale działająca na bufory?
OK, możliwym rozwiązaniem może być użycie :CtrlpBuffers
polecenia, części wtyczki Ctrlp, ale nie jestem wielkim fanem Ctrlp, ponieważ czasami mają dziwne zachowania, których nie do końca rozumiem (wybory trybu rozmytego ...); więc szukam czegoś naprawdę prostego jak wtyczka MRU.
BTW, zażartowałem z :cexpr {expr}
polecenia, próbując zapełnić okna szybkiej zawartości zawartością :buffers
listy, bez powodzenia (może dlatego, że moja ignorancja programuje vimscripts)
Jakieś sugestie ?
:bnext
zamiast:cnext
?Odpowiedzi:
Możesz wypełnić listę poprawek każdym buforem w następujący sposób:
setqflist()
pobiera listę elementów słownika opisujących każdy błąd (nazwa pliku, numer wiersza, pozycja itp.). W tym przypadku podajemy minimalny zestaw informacji: numer buforamap()
pobiera Listę i wyrażenie (ciąg znaków) i zwraca nową Listę wyrażenia zastosowanego do każdego elementu listy wejściowej List. Tutaj bierzemy listę wymienionych numerów buforów i formatujemy je do użycia wsetqflist()
('{"bufnr": v:val}'
, gdziev:val
jest wartość elementu na liście)filter()
filtruje listę, usuwając elementy, które nie spełniają danego wyrażenia. Tutaj wyrażenie oznaczabuflisted(v:val)
, że numer bufora istnieje i jest wymieniony, tzn. Pojawia się na:ls
wyjściurange(a, b)
generuje listę liczb oda
dob
bufnr()
zwraca numer podanej nazwy bufora. Jeśli argument jest'$'
, zwraca najwyższy numer buforaTo dużo do napisania i niezbyt niezapomniane, więc możesz zawinąć je w komendę w swoim vimrc:
Teraz możesz po prostu użyć
:Qbuffers
do wypełnienia listy szybkich poprawek.Jeśli chcesz, aby była aktualizowana automatycznie po dodaniu nowych buforów, możesz zrobić coś takiego:
Nie poleciłbym tego jednak, ponieważ spowoduje to, że lista poprawek stanie się dość bezużyteczna dla takich rzeczy jak
:make
lub:grep
.źródło
Powinieneś spróbować tego mapowania:
Po wyświetleniu monitu wpisz żądany numer bufora i naciśnij klawisz Enter.
źródło
Wystarczy popatrzeć na wtyczce bufexplorer . Otwiera przeglądalną listę wszystkich buforów na pasku bocznym, podobną do wspomnianej wtyczki MRU. Istnieje również kilka takich wtyczek na vim.org .
PS: Zadałeś to samo pytanie na temat przepełnienia stosu ; nie przesyłaj tego samego pytania do wielu witryn jednocześnie!
źródło