Ponowna numeracja listy buforów

29

Po dłuższej pracy nad projektem zaczynam dostrzegać duże luki między kolejnymi liczbami buforów. Jest tak, ponieważ bufory między nimi zostały usunięte z różnych powodów. Niestety może to powodować, że po wpisaniu skakanie do określonego bufora lub wybieranie zakresu buforów jest niewygodne :ls. Czy jest jakiś sposób, aby zmienić numerację wszystkich otwartych buforów, zaczynając od jednego, bez ponownego otwierania wszystkich plików?

wskaźnik pustki
źródło

Odpowiedzi:

21

Nie (nie bez usuwania buforów).

Vim nie obsługuje ręcznego przypisywania numerów buforów ani zmiany kolejności buforów po ich otwarciu. Filozofia polega na tym, że każdy bufor otrzymuje identyfikator, który jest ustalony na czas życia bufora (w pomocy :lszaznaczono, że „każdy bufor ma unikalny numer. Liczba ta się nie zmieni ...”).

Możesz jednak użyć listy argumentów. Umieść wszystkie otwarte bufory na liście argumentów, usuń wszystkie zaległe bufory, a następnie otwórz wszystko na liście argumentów. Osiągną to następujące polecenia:

  • :argdel * (usuń istniejącą listę argumentów)
  • :bufdo argadd % (dla każdego bufora dodaj ścieżkę bufora do listy)
  • :1,1000bd (usuń bufory od 1 do 1000; prawdopodobnie jest na to lepszy sposób)
  • :argdo e (dla każdego argumentu edytuj ten argument)

To pozostawi ci dodatkowy pusty bufor, który vim otworzy po usunięciu wszystkich poprzednich buforów, ale jest to rozsądne przybliżenie pożądanej funkcjonalności. Możesz tylko :bdten dodatkowy bufor.


źródło
1
Twoja odpowiedź brzmi „nie”, ale wygląda na to, że działa świetnie!
aharris88
(Miałem na myśli „nie” w tym sensie, że nie można tego zrobić bez ponownego otwierania plików). Czy to jednak dla ciebie faktycznie przenumerowuje z 1? Myślałem, że tak się stało, kiedy po raz pierwszy spróbowałem, ale teraz widzę, że nie przenosi się na mnie?
Tak, przenosi się na mnie.
aharris88
Tak, jestem po prostu głupi, znalazłem swój błąd.
„każdy bufor otrzymuje identyfikator, który jest ustalony na czas życia tego bufora”, w rzeczywistości sesja!
14

„numery buforów szaleją” Opowiedz mi o tym! Pod koniec dnia mam ponad 100 buforów. Ale na szczęście, jak widać na tej animacji, masz tabukończone nazwy buforów.

Hit: b se <Tab>

Tak więc, nawet jeśli nie możesz przenumerować buforów, nadal możesz łatwo przeskakiwać.

Nie wiem, czy wynika to z animacji, ale „uzupełnianie tabulatorów” różni się od uzupełniania tabulatorów w wierszu poleceń. To bardziej jak „zamiennik tabulatora rozwiązujący niejednoznaczności”. Co oznacza, że w wierszu polecenia musiałbym wpisać sctabnastępnie setabale tutaj vim robi się „SE” wyszukiwanie i zastępuje go pierwszy (i jedyny) meczu. Gdybym wpisał, testtabto dopasowałby „wygeneruj_test_data.py”, a następnie tabponownie dopasowałby „skrypty / setup_test_data.sh”, a następnie tabponownie wykonałby cykl, itd.

Chodzi o to, że możesz przyzwyczaić się pisać na klawiaturze, :b <minimum amount of unambiguous characters>tababy przejść do wybranego dokumentu. Myślę, że jest to nawet lepsze niż pamiętanie „Moje bufory to 1: foo 2: bar 3: itd.” - tak właśnie robiłem, gdy byłem nowicjuszem.

Bruno Bronosky
źródło
7

Możesz użyć vim-Airlines. Ta wtyczka ma zachowanie, które może rozwiązać problem:

Zobacz linię 470–479 w pliku airline.txt

Nie zmieni to numerów buforów, ale możesz wybrać bufor od lewej do prawej według numeru wiersza w tabulatorze. To jest moje ustawienie dla linii lotniczych w .vimrc:

"set airline 
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2

let mapleader=","

let g:airline#extensions#tabline#buffer_idx_mode = 1

nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9

Moja linia kart: Moja linia tabulatorów

HJIahu
źródło
niesamowity! Uwielbiam to :)
Blasco
Nie jest to odpowiedź na pytanie, ale rozwiązuje problem z szalonymi numerami buforów. Tylko zalecenie, aby wyświetlać tylko numery_buforów: switch_buffers_and_tabs=1ibuffer_idx_mode=0
caligari
6

Zgodnie z dokumentacją numery buforów nigdy się nie zmieniają

    Each buffer has a unique number.  That number will not change,
    so you can always go to a specific buffer with ":buffer N" or
    "N CTRL-^", where N is the buffer number.

Jedynym sposobem na zmianę numeracji buforów jest ponowne uruchomienie vima.

aharris88
źródło
0

Stare pytanie, ale ponieważ pojawia się ono u góry w wyszukiwarce Google, pozostawię to tutaj do przyszłych wyszukiwań. Jak sugerował Bruno, najlepszym rozwiązaniem jest rozmyta wyszukiwarka obsługująca listy buforów. Ja osobiście używam i polecam fzf-vim . Udostępnia polecenie :FZFBuffers, które wygląda mniej więcej tak:

wprowadź opis zdjęcia tutaj

Numery buforów są wyświetlane po lewej stronie na wypadek, gdyby były potrzebne, ale w przypadku rozmytej wyszukiwarki możesz nigdy nie potrzebować ich ponownie użyć. Zapamiętaj tylko część nazwy pliku i zwykle jest to 2-5 naciśnięć klawiszy. Osobiście zamapowałem to polecenie na naciśnięcie klawisza, a przełączanie między buforami jest dla mnie niemal natychmiastowe!

czasownik
źródło