Poruszanie się po wielu plikach

11

Jeśli otworzę vima z wieloma plikami w wierszu poleceń, na przykład, vim debug.log*które ładuje debug.log, debug.log.1i debug.log.2czy mogę nawigować między nimi, przypisać je do wielu okien ( :split/ :vsplit) lub podobnych?

Jedynym skrótem, jaki znam dla tego trybu działania, jest :nładowanie następnego pliku na listę. Co jeszcze mogę zrobić w tym trybie pracy z wieloma plikami? (lub który temat pomocy to obejmuje?)

SF.
źródło
3
:previous(lub :prev) jest odwrotnością :ni wraca do pliku.
Bogaty

Odpowiedzi:

13

Najbardziej odpowiedni temat pomocy :ls, znany również jako :fileslub :buffers.

W twoim vim debug.log*przykładzie, jeśli wydałeś :lspolecenie, zobaczysz:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

… Wskazując, że pierwszy to aktywny bufor.

Aby otworzyć debug.log.2w bieżącym oknie, użyj polecenia :b 3lub, :b debug.log.2aby wyświetlić bufor 3.

Aby podzielić okno i otworzyć w nim bufor 2, wydaj :sb 2polecenie. Jest to wersja z podziałem pionowym :vert sb 2.

Istnieje wiele wariantów :bpolecenia; przejrzyj cytowane tutaj tematy pomocy, aby je poznać.


Ponadto można wywoływać, vim -o debug.log*aby otworzyć wszystkie pliki, każdy w osobnym podziale, lub vim -O debug.log*otworzyć je każdy w podziale pionowym.

200_sukces
źródło
6

Oprócz funkcji raw vim wspomnianej przez 200_success, ekosystem Vima jest pełen wtyczek zapewniających dodatkowe funkcje, takie jak:

Jednak zanim zaczniesz używać wtyczek, najlepiej w pełni zrozumieć bufory i okna w vimie.

Ankieta Cody
źródło
1
Przeczytaj nasze zasady dotyczące odpowiedzi na zalecenia dotyczące wtyczek i dodaj szczegółowe informacje na temat tego, jak dokładnie te wtyczki mogą przynieść korzyści użytkownikowi.
200_sukces
6

Możesz także otworzyć vima z różnymi parametrami.

Otwiera pliki na kartach:

vim -p debug.log*

Otwiera pliki w podziale pionowym:

vim -o debug.log*

Jest fajna i dość potężna wtyczka o nazwie CtrlSpace:

https://github.com/szw/vim-ctrlspace

Jest to bardzo przydatne, jeśli chcesz pracować z wieloma plikami. Po prostu możesz sobie wyobrazić ctrl-space jako własną listę buforów dla każdej karty. Zapewnia bardzo łatwy sposób nawigacji między plikami, jak stwierdza autor:

Vim-CtrlSpace to wtyczka Vima do kontrolowania i organizowania przestrzeni roboczej w Vimie. W tym zarządzanie buforami, plikami, kartami, sesjami i wreszcie projektami. Jego podejście jest nieco wyjątkowe, ale na pewno poczujesz się jak w domu, zwłaszcza jeśli używasz już podzielonych okien, kart, buforów itp.

Martin Höger
źródło
Witamy w Vi / Vim! Przeczytaj nasze zasady dotyczące odpowiedzi na zalecenia dotyczące wtyczek i dodaj szczegółowe informacje na temat tego, w jaki sposób wtyczka rozwiązuje pytanie.
200_sukces
4

Jeśli chcesz otworzyć konkretny plik bez konieczności przechodzenia przez ten plik :ls, możesz użyć dowolnego z poniższych:

  • :vs filename otwiera plik w podziale pionowym
  • :sp filename robi to samo, ale z podziałem poziomym
  • :tabe filename otwiera się w nowej karcie

Warto również wiedzieć, że jeśli nie określisz nazwy pliku, otworzysz nową podziałkę / kartę bieżącego pliku, co może być przydatne w przypadku długich plików.

Tomek
źródło
2
:tto polecenie kopiowania. Dla :tabedittrzeba co najmniej :tabe.
tommcdo
O rany, masz całkowitą rację. Dzięki, edytuję!
Tom
0

Istnieje kilka przydatnych skrótów do nawigacji po wielu plikach:

  • CTRL-^(gdzie Njest numerem bufora), aby przejść do poprzednio edytowanego pliku.
  • N CTRL-^(gdzie Njest numer bufora), aby przejść do określonego bufora.

    Na przykład:

    • 1Control+^ - przejdź do 1. bufora
    • 2Control+^ - przejdź do 2. bufora
    • itp.

    Jest to równoważne z :buffer N.

  • Użyj :Ex/ :Sex/ :Vexdo nawigacji w bieżącym katalogu.

  • :tabsZamiast tego użyj ( vim -p) z niektórymi niestandardowymi skrótami, .vimrctakimi jak:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • Użyj :ba/, :vert baaby podzielić, przeskocz do wybranego bufora za pomocą Control+w, w/ W, a następnie ustaw go jako bieżące okno ( :on).

kenorb
źródło