Jak efektywnie pracować z wieloma plikami w Vimie

Zacząłem używać Vima do tworzenia skryptów Perla i zaczynam uważać go za bardzo potężnego.

Jedną rzeczą, którą lubię, jest możliwość otwierania wielu plików jednocześnie za pomocą:

vi main.pl maintenance.pl

A następnie wskakuj między nimi z:

:n
:prev

I zobacz, który plik jest otwarty za pomocą:

:args

I aby dodać plik, mogę powiedzieć:

:n test.pl

Które spodziewam się, że zostaną dodane do mojej listy plików, ale zamiast tego usunie moją bieżącą listę plików i kiedy wpiszę :args mam tylko Otwórz.

Jak mogę dodawać i usuwać pliki z listy args?

 1137
Author: the Tin Man, 2008-09-10

28 answers

Dlaczego nie używać tabs (wprowadzonych w Vim 7)? Możesz przełączać się między kartami za pomocą :tabn i :tabp, Za pomocą :tabe <filepath> możesz dodać nową kartę, a za pomocą zwykłego :q lub :wq zamykasz kartę. Jeśli mapujesz :tabn i :tabp do swojego F7/klawisze F8 możesz łatwo przełączać się między plikami.

Jeśli nie ma zbyt wielu plików lub nie masz Vima 7, Możesz również podzielić ekran na wiele plików: :sp <filepath>. Następnie możesz przełączać się między splitscreens za pomocą Ctrl+W i wtedy klawisz strzałek w kierunku, w którym chcesz się poruszać (lub zamiast klawiszy strzałek, w dla następnego i W dla poprzedniego splitscreen)

 1197
Author: fijter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 14:51:23

Lista

Aby zobaczyć listę bieżących buforów, używam:

:ls

Otwarcie

Aby otworzyć nowy plik, używam

:e ../myFile.pl

Z rozszerzonym uzupełnianiem kart (umieść set wildmenu w swoim .vimrc).

Uwaga: Możesz również użyć :find, która będzie przeszukiwać zestaw ścieżek dla ciebie, ale musisz najpierw dostosować te ścieżki.


Przełączanie

Aby przełączać się między wszystkimi otwartymi plikami, używam

:b myfile

With enhanced tab completion (still set wildmenu).

Uwaga: :b# wybiera ostatnio odwiedzany plik, dzięki czemu można go szybko przełączać między dwoma plikami.


Używanie windows

Ctrl-W s i Ctrl-W v aby podzielić bieżące okno poziomo i pionowo. Można również użyć :split i:vertical split (:sp i :vs)

Ctrl-W w aby przełączać się między otwartymi oknami i Ctrl-W h (lub j lub k lub l), aby poruszać się po otwartych oknach.

Ctrl-W c aby zamknąć bieżące okno, oraz Ctrl-W o aby zamknąć wszystkie windows oprócz bieżącego.

Uruchamianie Vima znacznikiem -o lub -O otwiera każdy plik we własnym podziale.


Z tym wszystkim nie potrzebuję tabs w Vimie, a moje palce znajdują moje bufory, nie Moje oczy.

Uwaga: Jeśli chcesz, aby wszystkie pliki trafiały do tej samej instancji Vima, Uruchom Vima z opcją --remote-silent.

 571
Author: Sébastien RoccaSerra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-01 18:37:15
:ls

Dla listy otwartych buforów

  • :bp poprzedni bufor
  • :bn następny bufor
  • :bn (n liczba) przenieś do n ' tego bufora
  • :b <filename-part> z klawiszem tab zapewniającym automatyczne uzupełnianie (niesamowite !!)

W niektórych wersjach Vima, bn i bp są odpowiednio bnext i bprevious. Tab auto-complete jest pomocna w tym przypadku.

Lub gdy jesteś w trybie normalnym, użyj ^, aby przełączyć się na ostatni działający plik on

Plus, można zapisać sesje vim

:mksession! ~/today.ses

Powyższe polecenie zapisuje bieżące bufory i ustawienia otwartych plików do ~/today.ses. Możesz załadować tę sesję za pomocą

vim -S ~/today.ses
Nie ma problemu z przypomnieniem sobie, gdzie skończyłeś wczoraj. ;)
 235
Author: shyam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-18 18:34:46

Aby dodać do listy args:

:argadd

Do usunięcia z listy args:

:argdelete

W twoim przykładzie możesz użyć :argedit test.pl aby dodać test.pl do listy args i edytować plik w jednym kroku.

:help args daje znacznie więcej szczegółów i zaawansowane użycie

 117
Author: MarkB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-06 17:14:01

Używam poleceń bufora - :bn (następny Bufor), :bp (poprzedni bufor) :buffers (lista otwartych buforów) :b<n> (otwarty bufor n) :bd (Usuń bufor). :e <filename> otworzy się w nowym buforze.

 48
Author: Andy Whitfield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-10 09:43:53

Myślę, że możesz używać niewłaściwej komendy do przeglądania listy plików, które masz otwarte.

Spróbuj wykonać :ls, aby zobaczyć listę otwartych plików, a zobaczysz:

   1 %a   "./checkin.pl"            line 1
  2 #    "./grabakamailogs.pl"     line 1
  3      "./grabwmlogs.pl"         line 0
  etc.

Możesz następnie przeskakiwać przez pliki, odwołując się do nich za pomocą podanych liczb, np. : 3b

Lub możesz podzielić ekran, wpisując numer, ale używając sb zamiast tylko b.

Jako dodatek % odnosi się do aktualnie widocznego pliku, a # do alternatywnego plik.

Możesz łatwo przełączać między tymi dwoma plikami, naciskając Ctrl Shift 6

Edit: podobnie jak :ls możesz użyć :reg, aby zobaczyć bieżącą zawartość rejestrów, w tym rejestrów 0-9, które zawierają to, co usunąłeś. Jest to szczególnie przydatne, jeśli chcesz ponownie użyć tekstu, który wcześniej został usunięty.

 44
Author: Rob Wells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 20:08:40

Vim (ale nie oryginalny Vi!) ma zakładki, które uważam (w wielu kontekstach) za lepsze od buforów. Możesz powiedzieć :tabe [filename], aby otworzyć plik w nowej karcie. Przełączanie między zakładkami odbywa się poprzez kliknięcie na zakładkę lub za pomocą kombinacji klawiszy [n]gt i gT. Graficzny Vim ma nawet Karty graficzne.

 37
Author: Konrad Rudolph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-20 10:23:22

Wiele odpowiedzi tutaj! To, czego używam bez wymyślania koła na nowo - najsłynniejsze wtyczki (które nie umrą w najbliższym czasie i są używane przez wielu ludzi), aby być ultra szybkie i geeky.

  • ctrlpvim/ctrlp.vim - znajdowanie pliku po nazwie fuzzy search po jego lokalizacji lub po prostu jego nazwie
  • jlanzarotta/bufexplorer - przeglądanie otwartych buforów (gdy nie pamiętasz ile plików ostatnio otworzyłeś i zmodyfikowałeś i nie pamiętasz gdzie one są, prawdopodobnie dlatego, że szukałeś ich z Ag)
  • Rking / ag.vim do przeszukiwania plików w odniesieniu do gitignore
  • scrooloose/nerdtree aby zobaczyć strukturę katalogów, zajrzyj, Dodaj/usuń / zmodyfikuj pliki

EDIT: ostatnio używam dyng/ctrlsf.vim do wyszukiwania kontekstowego (jak Sublime search) i przełączyłem silnik z ag na ripgrep. Spektakl jest wspaniale.

EDIT2: wraz z CtrlSFmożesz użyć mg979/vim-visual-multi, wprowadzić zmiany w wielu plikach na raz, a następnie na końcu zapisać je za jednym razem.

 28
Author: Petur Subev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-07 13:08:26

Rzeczy takie jak :e i :badd przyjmą tylko jeden argument, dlatego następujące argumenty zawiodą

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Jeśli chcesz dodać wiele plików z Vima, użyj arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*
 26
Author: puk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-08 19:43:13

Niektóre odpowiedzi w tym wątku sugerują użycie tabs, a inne sugerują użycie bufora do wykonania tego samego. Karty i bufory są różne. Zdecydowanie polecam przeczytać ten artykuł " vim tab madness-bufory vs Tabs ".

Oto ładne podsumowanie, które wyciągnąłem z Artykułu:

Podsumowanie:

  • bufor jest tekstem pliku w pamięci.
  • okno to Widok na buforze.
  • strona tab jest zbiorem okien.
 24
Author: Andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-13 05:55:06

Gdy używam wielu plików w Vimie, najczęściej używam tych poleceń (przy otwartych plikach ~350):

  • :b <partial filename><tab> (skok do bufora)
  • :bw (Wyczyść bufor, Usuń bufor)
  • :e <file path> (edytuj, Otwórz nowy bufor >
  • pltags - Włącz przeskakiwanie do definicji podprogramu/metody
 19
Author: zigdon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 20:10:06

Dodanie innej odpowiedzi, ponieważ nie jest to objęte żadną z odpowiedzi

Aby zmienić wszystkie bufory na tab widok.

 :tab sball

Otworzy wszystkie bufory w widoku karty. Następnie możemy użyć dowolnych poleceń związanych z zakładką

gt or :tabn           "    go to next tab
gT or :tabp or :tabN  "    go to previous tab

Szczegóły na :help tab-page-commands.

Możemy poinstruować Vima, aby otwierał, jako widok tabulatora, wiele plików przez vim -p file1 file2. alias vim='vim -p' będzie przydatna.
To samo może być również osiągnięte przez następujące autocommand w ~/.vimrc

 au VimEnter * if !&diff | tab all | tabfirst | endif

Anyway to answer the pytanie: Aby dodać do listy arg: arga file,

Do usunięcia z listy arg: argd pattern

Więcej na :help arglist

 18
Author: dlmeetei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 23:17:20

Możesz użyć vim globalnych znaków .

W ten sposób można szybko przeskakiwać między plikami, a nawet do zaznaczonej lokalizacji w pliku. Ponadto polecenia kluczowe są krótkie: 'C przenosi mnie do kodu, z którym pracuję, Zabiera mnie na test jednostkowy, z którym pracuję.

Gdy zmieniasz miejsca, Resetowanie znaków również jest szybkie: mC oznacza nowe miejsce kodu, mT oznacza nowe miejsce testowe.

 16
Author: user2179522,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-09 17:24:29

Używam tego samego .plik vimrc dla gVim i wiersza poleceń Vim. Mam tendencję do korzystania z kart w gVim i bufory w wierszu poleceń Vim, więc mam mój .vimrc skonfigurowany tak, aby praca z nimi była łatwiejsza:

" Movement between tabs OR buffers
nnoremap L :call MyNext()<CR>
nnoremap H :call MyPrev()<CR>

" MyNext() and MyPrev(): Movement between tabs OR buffers
function! MyNext()
    if exists( '*tabpagenr' ) && tabpagenr('$') != 1
        " Tab support && tabs open
        normal gt
    else
        " No tab support, or no tabs open
        execute ":bnext"
    endif
endfunction
function! MyPrev()
    if exists( '*tabpagenr' ) && tabpagenr('$') != '1'
        " Tab support && tabs open
        normal gT
    else
        " No tab support, or no tabs open
        execute ":bprev"
    endif
endfunction

To blokuje istniejące mapowania dla H i L , ale sprawia, że przełączanie między plikami jest niezwykle szybkie i łatwe. Po prostu naciśnij H na następny i L na poprzedni; niezależnie od tego, czy używasz tabulatorów, czy buforów, otrzymasz zamierzone rezultaty.

 12
Author: Max Cantor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-13 05:56:59

Jeśli zamierzasz korzystać z wielu buforów, myślę, że najważniejsze jest, aby zestaw ukryty tak, że pozwoli Ci przełączać bufory, nawet jeśli masz niezapisane zmiany w tym, który zostawiasz.

 10
Author: indentation,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 14:39:04

Jeśli używasz tylko wbudowanych poleceń Vima , najlepszym, jaki kiedykolwiek widziałem, aby przełączać się między wieloma buforami jest to:

nnoremap <Leader>f :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>

Doskonale łączy oba polecenia :ls i :b -- wypisuje wszystkie otwarte bufory i czeka na wprowadzenie polecenia przełączania bufora.

Podane powyżej mapowanie w vimrc, po wpisaniu <Leader>f,

  • wyświetlane są wszystkie otwarte bufory
  • możesz:
    • wpisz 23 aby przejść do bufora 23,
    • wpisz # aby przejść do bufora alternatywnego/MRU,
    • wpisz częściową nazwę pliku, następnie wpisz <Tab>, lub {[8] } do autouzupełniania,
    • lub po prostu <CR> lub <Esc> aby pozostać na bieżącym buforze

Migawka wyjścia dla powyższego mapowania klawiszy to:

:set nomore|:ls|:set more
  1  h    "script.py"    line 1
  2 #h  + "file1.txt"    line 6  -- '#' for alternative buffer
  3 %a    "README.md"    line 17 -- '%' for current buffer
  4       "file3.txt"    line 0  -- line 0 for hasn't switched to
  5     + "/etc/passwd"  line 42 -- '+' for modified
:b '<Cursor> here'

Na powyższym zdjęciu:

  • Druga kolumna: %a dla bieżącej, h dla ukrytej, # dla poprzedniej, pusta dla nie została przełączona na.
  • Trzecia kolumna: + do modyfikacji.

Również zdecydowanie sugeruję set hidden. Zobacz :help 'hidden'.

 10
Author: qeatzy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-15 20:05:09

Używam poniższego, daje to wiele funkcji, które można oczekiwać, aby mieć w innych edytorach, takich jak Sublime Text / Textmate

  1. użyj buforów, a nie "Stron kart". Bufory są takie same jak zakładki w prawie wszystkich innych edytorach.
  2. Jeśli chcesz mieć taki sam wygląd kart, możesz użyć wtyczki vim-airline z następującym ustawieniem w Twoim .vimrc: let g:airline#extensions#tabline#enabled = 1. Automatycznie wyświetla wszystkie bufory jako nagłówki kart, gdy nie ma stron kart opened
  3. użyj Tima Pope ' a vim-unimpaired który daje [b oraz ]b do przejścia odpowiednio do poprzedniego / następnego bufora (plus cała masa innych gadżetów)
  4. mieć set wildmenu w swoim .vimrc wtedy gdy wpisujesz :b <file part> + Tab dla bufora otrzymasz listę możliwych buforów, które możesz przewijać strzałkami w lewo/w prawo
  5. użyj wtyczki Tim Pope ' a vim-obsession do przechowywania sesji, które grają ładnie z airline (miałem dużo bólu z sesjami i wtyczkami )
  6. użyj wtyczki Tim Pope ' a vim-Oct. Działa to z natywnym :Explore, ale znacznie ułatwia pracę. Wystarczy wpisać -, aby otworzyć Eksploratora, który jest tym samym kluczem, co przejście do katalogu w Eksploratorze. Sprawia, że nawigacja jest szybsza (jednak z fzf rzadko tego używam)
  7. fzf (który może być zainstalowany jako wtyczka vim) jest również naprawdę potężnym fuzzy Finderem, którego możesz użyć do wyszukiwanie plików (i buforów też). fzf również gra bardzo ładnie z fd (szybsza wersja find)
  8. użyj Ripgrep z vim-ripgrep aby przeszukiwać bazę kodu, a następnie możesz użyć :cdo na wynikach, aby wyszukać i zastąpić
 9
Author: icc97,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-16 22:00:33

Moim sposobem na efektywną pracę z wieloma plikami jest użycie tmux.

Pozwala na dzielenie okien w pionie i poziomie, jak w:

Tutaj wpisz opis obrazka

Mam to działa w ten sposób na komputerach mac i linux i uważam, że jest lepszy niż natywny mechanizm przełączania szyb okiennych, który jest dostarczany(na komputerach Mac). Uważam, że przełączanie jest łatwiejsze i tylko dzięki tmux udało mi się uzyskać "nową stronę w tym samym bieżącym katalogu" działającą na moim komputerze mac (pomimo faktu, że tam wydaje się, że można otwierać nowe panele w tym samym katalogu), co jest zaskakująco krytycznym elementem. Natychmiastowy nowy panel w bieżącej lokalizacji jest niezwykle przydatny. Metoda, która robi nowe panele z tymi samymi kombinacjami klawiszy dla obu systemów operacyjnych jest dla mnie krytyczna i premia dla wszystkich dla przyszłej kompatybilności osobistej. Oprócz wielu paneli tmux, próbowałem również użyć wielu kart, np Tutaj wpisz opis obrazka i wielu nowych okien, np Tutaj wpisz opis obrazka i ostatecznie odkryłem, że wiele paneli tmux jest najbardziej przydatne dla mnie. Jestem bardzo "wizualna" i lubię trzymać moje różne konteksty tuż przed sobą, połączone ze sobą jako szyby.

Tmux obsługuje również poziome i pionowe panele, których starszy screen nie obsługiwał (chociaż mac iterm2 wydaje się go obsługiwać, ale ponownie, bieżące ustawienie katalogu nie działało dla mnie). tmux 1.8

 7
Author: Michael Durrant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-16 22:52:52

W moim i innych wielu użytkownikach vim-a, najlepszą opcją jest,

  • Otwórz plik używając,

: e nazwa_pliku.rozszerzenie

A następnie po prostu Ctrl + 6, aby przejść do ostatniego bufora. Możesz też zawsze nacisnąć

: ls wyświetla bufor, a następnie zmienia bufor za pomocą b, po którym następuje numer bufora.

  • tworzymy podział pionowy lub poziomy za pomocą

: VSP dla podziału pionowego

:sp dla horizantal split

A następnie <C-W><C-H/K/L/j> aby zmienić podział roboczy.

Możesz oczywiście edytować dowolny plik w dowolnej liczbie podziałów.

 4
Author: LeO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Często używam wiersza poleceń i git, więc mam ten alias w bashrc:

alias gvim="gvim --servername \$(git rev-parse --show-toplevel || echo 'default') --remote-tab"

Otworzy każdy nowy plik na nowej karcie w istniejącym oknie i utworzy jedno okno dla każdego repozytorium git. Więc jeśli otworzysz dwa pliki z repo A i 3 pliki z repo B, skończysz z dwoma oknami, jednym dla repo A z dwiema kartami i jednym dla repo B z trzema kartami.

Jeśli plik, który otwierasz, nie jest zawarty w repo git, przejdzie do domyślnego okna.

To jump pomiędzy zakładkami używam tych mapowań:

nmap <C-p> :tabprevious<CR>
nmap <C-n> :tabnext<CR>

Aby otworzyć wiele plików jednocześnie, należy połączyć to z jednym z innych rozwiązań.

 3
Author: Jens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-03 14:08:53

Używam wielu buforów, które są ustawione ukryte w moim pliku ~/.vimrc.

Skrypt Eksploratora mini-buforów jest również ładny, aby uzyskać ładną, kompaktową listę buforów. Następnie :b1 lub :b2... aby przejść do odpowiedniego bufora lub użyć Eksploratora mini-bufora i karty przez bufory.

 3
Author: projecktzero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 20:25:16

Wypróbuj następujące Mapy dla wygody edycji wielu plików

" Okna dzielone

nmap <leader>sh :leftabove vnew<CR>

nmap <leader>sl :rightbelow vnew<CR>

nmap <leader>sk :leftabove new<CR>

nmap <leader>sj :rightbelow new<CR>

" poruszanie się

nmap <C-j> <C-w>j

nmap <C-k> <C-w>k

nmap <C-l> <C-w>l

nmap <C-h> <C-w>h

 2
Author: user2663398,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-07 05:55:08

Zrobiłem bardzo prosty film pokazujący przepływ pracy, którego używam. Zasadniczo używam wtyczki Ctrl-P Vim i mapowałem nawigację bufora na klawisz Enter.

W ten sposób mogę nacisnąć Enter w trybie normalnym, spojrzeć na listę otwartych plików (która pojawia się w małym nowym oknie u dołu ekranu), wybrać plik, który chcę edytować i ponownie nacisnąć Enter. Aby szybko przeszukiwać wiele otwartych plików, wystarczy wpisać część nazwy pliku, wybrać plik i nacisnąć Wejść.

Nie mam wielu plików otwartych w filmie, ale staje się to niezwykle pomocne, gdy zaczynasz mieć ich dużo.

Ponieważ wtyczka sortuje bufory za pomocą kolejności MRU, możesz po prostu dwukrotnie nacisnąć Enter i przejść do ostatnio edytowanego pliku.

Po zainstalowaniu wtyczki potrzebna jest tylko konfiguracja:

nmap <CR> :CtrlPBuffer<CR>

Oczywiście można mapować go do innego klucza, ale uważam, że mapowanie do wprowadzenia jest bardzo przydatne.

 2
Author: fede1024,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-05 18:59:28

Sugerowałbym użycie wtyczki

NERDtree

Oto link github z instrukcjami.

Nerdtree

Używam vim-plug jako menedżera wtyczek, ale możesz również używać Vundle.

Vim-plug

Vundle

 2
Author: thenakulchawla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-03 23:52:32

Kiedy zacząłem używać Vima, nie zdawałem sobie sprawy, że karty powinny być używane jako różne układy okien, a bufor służy do edycji / przełączania wielu plików między sobą. Właściwie na początku kart nie ma nawet tam przed v7. 0 i właśnie otworzyłem jeden VIM wewnątrz karty terminala (używałem gnome-terminal w tej chwili), i przełączać się między kartami za pomocą alt + numery, ponieważ myślałem, za pomocą poleceń takich jak :bufory,: bn i: bp były dla mnie za dużo. Kiedy VIM 7.0 był released uważam, że łatwiej jest zarządzać wieloma plikami i przełączyć się na nie, ale ostatnio właśnie zdałem sobie sprawę, że bufory powinny być zawsze drogą, chyba że jedna rzecz: trzeba go skonfigurować, aby działał dobrze.

Więc próbowałem vim-airline i włączyłem visual on-top tab-like buffer bar, ale graphic miał problem z moim iTerm2, więc próbowałem kilka innych i wydaje się, że MBE działa najlepiej dla mnie. Ustawiłem również shift + h / l jako skróty, ponieważ oryginalne (przenoszenie do głowa / ogon bieżącej strony) nie jest dla mnie zbyt przydatne.

map <S-h> :bprev<Return>
map <S-l> :bnext<Return>

Wydaje się być jeszcze łatwiejsze niż gt i gT, A :e jest łatwiejsze niż: tabnew. Znajduję: bd nie jest tak wygodny jak: q chociaż (MBE ma z tym jakiś problem) ale mogę żyć ze wszystkimi plikami w buforze myślę.

 1
Author: superarts.org,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 02:46:39

Większość odpowiedzi w tym wątku używa zwykłych poleceń Vima, co jest oczywiście w porządku, ale pomyślałem, że udzielę obszernej odpowiedzi za pomocą kombinacji wtyczek i funkcji, które uważam za szczególnie przydatne (przynajmniej niektóre z tych wskazówek pochodzą z Gary Bernhardt ' s porady nawigacji plików):

  1. Aby przełączyć się pomiędzy dwoma ostatnimi plikami, po prostu naciśnij <leader> dwa razy. Polecam przypisanie <leader> do spacji:

    nnoremap <leader><leader> <c-^>
    
  2. Do szybkiego poruszania się wokół projektu odpowiedzią jest rozwiązanie dopasowania rozmytego, takie jak CtrlP. Przywiązuję go do <leader>a, aby uzyskać szybki dostęp.

  3. W przypadku, gdy chcę zobaczyć wizualną reprezentację aktualnie otwartych buforów używam wtyczki BufExplorer. Proste, ale skuteczne.

  4. Jeśli chcę przeglądać system plików, użyłbym wiersza poleceń lub zewnętrznego narzędzia (Quicklsilver, Afred itp.) ale przyjrzeć się obecnej strukturze projektu Drzewo {[10] } to klasyk. Nie używaj tej metody zamiast 2 jako głównej metody wyszukiwania plików. To naprawdę cię spowolni. Używam oprawy <leader>ff.

Powinny wystarczyć do znalezienia i otwarcia plików. Stamtąd oczywiście użyć poziomych i pionowych podziałów. Jeśli chodzi o splits uważam te funkcje za szczególnie przydatne:

  1. Otwórz nowe podziały na mniejszych obszarach, gdy nie ma wystarczająco dużo miejsca i rozwiń je w nawigacji. Zobacz tutaj za komentarze na temat tego, co one dokładnie robią:

    set winwidth=84
    set winheight=5
    set winminheight=5
    set winheight=999
    
    nnoremap <C-w>v :111vs<CR>
    nnoremap <C-w>s :rightbelow split<CR>
    set splitright
    
  2. Łatwe przejście od Splitu do Splitu:

    nnoremap <C-J> <C-W><C-J>
    nnoremap <C-K> <C-W><C-K>
    nnoremap <C-L> <C-W><C-L>
    nnoremap <C-H> <C-W><C-H>
    
 1
Author: Dionysis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-27 16:15:16

Jeśli jesteś na osx i chcesz mieć możliwość klikania na zakładki, użyj MouseTerm i SIMBL (pobrane z tutaj ). Sprawdź również tę related dyskusja .

 0
Author: Cpt. Senkfuss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:47

Możesz być absolutnym szaleńcem i aliasem vim do vim -p dodając w swoim .bashrc:

alias vim="vim -p"

Spowoduje to otwarcie wielu plików z powłoki w kartach, bez konieczności wywoływania :tab ball z Vima później.

 0
Author: npit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-20 22:37:24