Zacząłem używać Vima do tworzenia skryptów Perla i zaczynam uważać go za bardzo wydajny.
Jedną z rzeczy, które lubię, jest możliwość otwierania wielu plików jednocześnie:
vi main.pl maintenance.pl
a następnie przeskakuj między nimi za pomocą:
:n
:prev
i zobacz, który plik jest otwarty za pomocą:
:args
Aby dodać plik, mogę powiedzieć:
:n test.pl
który, jak się spodziewam, zostałby następnie dodany do mojej listy plików, ale zamiast tego wymazuje moją aktualną listę plików i kiedy piszę, :args
mam tylko test.pl
otwarte.
Jak mogę dodawać i usuwać pliki z mojej listy argumentów?
:N
wydaje się łatwiejszym sposobem na przejście do poprzedniego pliku ...Odpowiedzi:
Dlaczego nie skorzystać z zakładek (wprowadzonych w Vimie 7)? Możesz przełączać się między kartami za pomocą
:tabn
i:tabp
, Za pomocą:tabe <filepath>
możesz dodać nową kartę; i zwykłym:q
lub:wq
zamkniesz kartę. Jeśli mapujesz:tabn
i:tabp
do F7/ F8kluczy, możesz łatwo przełączać się między plikami.Gdyby nie to, że wiele plików lub nie masz Vim 7 można również podzielić ekran na wielu plikach:
:sp <filepath>
. Następnie możesz przełączać się między ekranami podziału za pomocą Ctrl+, Wa następnie klawisza strzałki w kierunku, w którym chcesz się poruszać (lub zamiast klawiszy strzałek, wdla następnego i Wpoprzedniego ekranu podzielonego)źródło
ZZ
zamiast:wq
(tak jak normalnie zapisuje i zamyka)gt
przechodzi do następnej karty igT
przechodzi do poprzedniej karty.-p
flagi, aby otworzyć wiele plików na kartach z wiersza poleceń. Na przykładgvim -p main.pl maintenance.pl
te dwa pliki zostaną otwarte na kartach.Wymienianie kolejno
Aby zobaczyć listę bieżących buforów, używam:
Otwarcie
Aby otworzyć nowy plik, używam
z ulepszonym uzupełnianiem kart (wstaw
set wildmenu
w swoim.vimrc
).Uwaga: możesz również użyć,
:find
który przeszuka dla ciebie zestaw ścieżek, ale najpierw musisz je dostosować.Przełączanie
Używam do przełączania między wszystkimi otwartymi plikami
z ulepszonym uzupełnianiem tabulatorów (wciąż
set wildmenu
).Uwaga:
:b#
wybiera ostatnio odwiedzany plik, dzięki czemu można go szybko przełączać między dwoma plikami.Korzystanie z systemu Windows
Ctrl-W s
iCtrl-W v
podzielić bieżące okno poziomo i pionowo. Możesz także użyć:split
i:vertical split
(:sp
i:vs
)Ctrl-W w
do przełączania między otwartymi oknami iCtrl-W h
(lubj
lubk
lubl
) do poruszania się po otwartych oknach.Ctrl-W c
aby zamknąć bieżące okno iCtrl-W o
zamknąć wszystkie okna oprócz bieżącego.Rozpoczęcie vima od flagi
-o
lub-O
otwiera każdy plik w osobnym podziale.Z tymi wszystkimi nie potrzebuję zakładek w Vimie, a moje palce znajdują moje bufory, a nie oczy.
Uwaga: jeśli chcesz, aby wszystkie pliki trafiły do tej samej instancji Vima, uruchom Vima z
--remote-silent
opcją.źródło
:b
jest bardzo potężnym poleceniem, ponieważ może przyjmować zarówno numery buforów, jak i nazwy buforów jako argumenty. Co wiecej? Obsługuje także uzupełnianie tabulatorami w dowolnej części nazwy pliku. Powiedzmy, masz foo.txt otwarty w buforze 2, można wpisać:b 2<Enter>
lub:b foo.txt
lub:b oo<Tab><Enter>
do edycji tego pliku. Tak, ostatni dopełniłby „oo” do „foo.txt” po naciśnięciu <Tab>.nnoremap gb :ls<cr>:b<space>
. Kiedy piszęgb
w trybie poleceń, wyświetla listę moich otwartych buforów i typów:b
, gotowych, żebym mógł zacząć pisać nazwę / numer bufora.:b
zaakceptuje dopasowanie podłańcuchowe, o ile jest to jednoznaczne. Więc jeśli masz otwarte plikifoo
,bar
ibaz
, po prostu:b z
wystarczy przejdziesz dobaz
bufora, i:b oo
czy:b o
będzie można dostać się dofoo
bufora.dla listy otwartych buforów
:bp
poprzedni bufor:bn
następny bufor:bn
(n
liczba) przejdź do n-tego bufora:b <filename-part>
z klawiszem tab zapewniającym automatyczne uzupełnianie (super !!)W niektórych wersjach vim,
bn
ibp
są w rzeczywistościbnext
ibprevious
odpowiednio. W tym przypadku pomocne jest automatyczne uzupełnianie kart.Lub gdy jesteś w trybie normalnym, użyj,
^
aby przejść do ostatniego pliku, nad którym pracujesz.Dodatkowo możesz zapisać sesje vima
Powyższe polecenie zapisuje bieżące otwarte bufory plików i ustawienia w
~/today.ses
. Możesz załadować tę sesję za pomocąBezproblemowe zapamiętywanie miejsca, w którym wczoraj przerwałeś. ;)
źródło
"
znaku, aby przejść do miejsca, w którym ostatnio byłeś w pliku.Aby dodać do
args
listy:Aby usunąć z
args
listy:W twoim przykładzie możesz użyć
:argedit
test.pl, aby dodać test.pl doargs
listy i edytować plik w jednym kroku.:help args
daje znacznie więcej szczegółów i zaawansowane wykorzystanieźródło
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ę po prostu w nowym buforze.źródło
Myślę, że możesz użyć niewłaściwego polecenia do przeglądania listy plików, które otworzyłeś.
Spróbuj zrobić,
:ls
aby zobaczyć listę otwartych plików, a zobaczysz:Następnie możesz przeglądać pliki, odwołując się do nich za pomocą wymienionych liczb, np .: 3b
lub możesz podzielić ekran, wprowadzając numer, ale używając sb zamiast tylko b.
Na bok% oznacza plik obecnie widoczny, a # oznacza plik alternatywny.
Możesz łatwo przełączać się między tymi dwoma plikami, naciskając Ctrl Shift 6
Edycja: tak
:ls
, jak możesz użyć,:reg
aby zobaczyć bieżącą zawartość swoich rejestrów, w tym rejestry 0-9, które zawierają to, co usunąłeś. Jest to szczególnie przydatne, jeśli chcesz ponownie użyć częściowo usuniętego tekstu.źródło
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 kartami odbywa się poprzez kliknięcie karty lub kombinacji klawiszy [ n ]gt
igT
. Graficzny Vim ma nawet karty graficzne.źródło
vim -p dir/*
. Maksymalny rozmiar tabulatora to 10, ale można go zmienić w~/.vimrc
ustawieniutabpagemax
na inną wartość.Wiele odpowiedzi tutaj! To, czego używam bez wymyślania na nowo koła - najsłynniejsze wtyczki (które wkrótce nie umrą i są używane przez wiele osób), aby być ultraszybkim i naukowym.
EDYCJA: Ostatnio używam dyng / ctrlsf.vim do wyszukiwania w widoku kontekstowym (jak wyszukiwanie Sublime) i zmieniłem silnik z ag na ripgrep . Wydajność jest znakomita.
EDYCJA 2: Wraz z CtrlSF możesz używać mg979 / vim-visual-multi , wprowadzać zmiany do wielu plików jednocześnie, a następnie zapisywać je za jednym razem.
źródło
Rzeczy takie jak
:e
i:badd
akceptują tylko JEDEN argument, dlatego poniższe nie powiedzie sięJeśli chcesz dodać wiele plików z poziomu vima, użyj
arga[dd]
źródło
Niektóre odpowiedzi w tym wątku sugerują użycie tabulatorów, a inne sugerują użycie bufora do osiągnięcia tego samego. Karty i bufory są różne. Zdecydowanie polecam przeczytanie tego artykułu „ Szaleństwo Vim Tab - Buffers vs. Tabs ”.
Oto ładne podsumowanie, które wyciągnąłem z artykułu:
Podsumowanie:
źródło
:help window
VimUżywając wielu plików w vimie, używam głównie tych poleceń (przy otwartych plikach ~ 350):
:b <partial filename><tab>
(przeskocz do bufora):bw
(wyczyść bufor, usuń bufor):e <file path>
(edytuj, otwórz nowy bufor>pltags
- umożliwia przejście do definicji podprogramu / metodyźródło
:b <partial filename><tab>
plusset wildmenu
w swoich.vimrc
pracach dobrze, gdy masz mnóstwo buforów otwartych. Następnie po prostu częściowo dopasowujesz i przewijasz te, które znajdzie. W innych przyzwoitych edytorach masz rozmyte znalezisko, ale zwykle nie możesz ograniczyć tego rozmytego znalezienia tylko do plików, które otworzyłeś.Dodanie kolejnej odpowiedzi, ponieważ żadna z odpowiedzi jej nie obejmuje
Aby zmienić wszystkie bufory do
tab
wyświetlenia.otworzy wszystkie bufory do widoku kart. Następnie możemy użyć dowolnych poleceń związanych z kartami
szczegóły na
:help tab-page-commands
.Możemy poinstruować vima, aby otworzył, w widoku zakładki, wiele plików według
vim -p file1 file2
.alias vim='vim -p'
będzie użyteczne.To samo można również osiągnąć, wpisując polecenie automatycznego wydawania poleceń
~/.vimrc
W każdym razie, aby odpowiedzieć na pytanie: Jak dodać do arg listy:
arga file
,Aby usunąć z listy arg:
argd pattern
Więcej w
:help arglist
źródło
Możesz chcieć używać globalnych znaków Vima .
W ten sposób możesz szybko podskakiwać między plikami, a nawet do zaznaczonej lokalizacji w pliku. Kluczowe polecenia są również krótkie:
'C
zabiera mnie do kodu, z którym pracuję,'T
zabiera mnie do testu jednostkowego, z którym pracuję.Gdy zmieniasz miejsca, resetowanie znaków jest również szybkie:
mC
oznacza nowe miejsce kodu,mT
oznacza nowe miejsce testu.źródło
Używam tego samego pliku .vimrc dla gVim i wiersza poleceń Vim. Zwykle używam tabulatorów w gVim i buforów w wierszu poleceń Vim, więc mam skonfigurowane moje .vimrc, aby ułatwić pracę z nimi oboma:
Spowoduje to zablokowanie istniejących mapowań dla Hi L, ale sprawia, że przełączanie między plikami jest niezwykle szybkie i łatwe. Po prostu naciśnij Hna następny i Lna poprzedni; bez względu na to, czy korzystasz z kart, czy z buforów, uzyskasz zamierzone wyniki.
źródło
Jeśli zamierzasz używać wielu buforów, myślę, że najważniejszą rzeczą jest ustawienie ukrytego, aby umożliwić zmianę buforów, nawet jeśli masz niezapisane zmiany w tym, który opuszczasz.
źródło
Jeśli używam tylko wbudowanych poleceń vima , najlepsze, jakie kiedykolwiek widziałem, aby przełączać się między wieloma buforami:
Doskonale łączy oba polecenia
:ls
i:b
polecenia - wyświetla listę wszystkich otwartych buforów i czeka na wprowadzenie polecenia zmiany bufora.Biorąc pod uwagę powyższe mapowanie w vimrc, po wpisaniu
<Leader>f
,23
aby przejść do bufora 23,#
aby przejść do alternatywnego / MRU bufora,<Tab>
lub<C-i>
do autouzupełniania,<CR>
lub<Esc>
pozostań na bieżącym buforzeMigawka danych wyjściowych dla powyższego mapowania klucza to:
W powyższej migawce:
%a
dla bieżącej,h
dla ukrytej,#
dla poprzedniej, pustej dla nie została przełączona na.+
do modyfikacji.Również zdecydowanie sugeruję
set hidden
. Zobaczyć:help 'hidden'
.źródło
:b
i:ls
dużo, ale niezależnie. Myślę, że staje się to mniej przydatne, gdy masz więcej niż stronę buforów, ale nadal możesz po prostu wrócić do:b
nnoremap <leader>f :ls<cr>:b<space>
, co może jednak powodować problemy z poleceniem „więcej”set more
rzeczy mają znaczenie tylko wtedy, gdy otwartych jest wiele plików (więcej niż jedna strona), np.vim /usr/include/*
choć mniej przydatne.Korzystam z poniższych, daje to wiele funkcji, których można oczekiwać w innych edytorach, takich jak Sublime Text / Textmate
.vimrc
:let g:airline#extensions#tabline#enabled = 1
. Spowoduje to automatyczne wyświetlenie wszystkich buforów jako nagłówków tabulatorów, gdy nie zostaną otwarte żadne strony tabulatorówset wildmenu
przy sobie,.vimrc
kiedy wpiszesz:b <file part>
+ Tabdla bufora, otrzymasz listę możliwych buforów, których możesz używać strzałkami w lewo / w prawo do przewijania:Explore
ale znacznie ułatwia pracę. Wystarczy wpisać,-
aby otworzyć Eksploratora, który jest tym samym kluczem, aby przejść do katalogu w Eksploratorze. Sprawia, że nawigacja jest szybsza (jednak z FZF rzadko tego używam):cdo
wyników, aby wyszukać i zamienićźródło
Moim sposobem na efektywną pracę z wieloma plikami jest użycie tmux.
Pozwala dzielić okna pionowo i poziomo, jak w:
Mam go działającego w ten sposób na moich komputerach Mac i Linux i uważam, że jest lepszy niż natywny mechanizm przełączania okien, który jest dostępny (na komputerach Mac). Przełączanie jest dla mnie łatwiejsze i tylko dzięki tmux udało mi się uzyskać „nową stronę w tym samym bieżącym katalogu” na moim komputerze Mac (pomimo faktu, że wydaje się, że istnieją opcje otwierania nowych paneli w tym samym katalogu), który jest zaskakująco krytyczny kawałek. Błyskawicznie nowe okienko w bieżącej lokalizacji jest niezwykle przydatne. Metoda, która wykonuje nowe panele z tymi samymi kluczowymi kombinacjami dla obu systemów operacyjnych, jest dla mnie krytyczna i stanowi premię dla wszystkich za przyszłą kompatybilność osobistą. Oprócz wielu paneli tmux, próbowałem również użyć wielu zakładek, np I wielu nowych okien, npi ostatecznie odkryłem, że wiele paneli tmux jest dla mnie najbardziej użytecznych. Jestem bardzo „wizualny” i lubię trzymać moje różne konteksty przede mną, połączone ze sobą jak szyby.
tmux obsługuje również panele poziome i pionowe, których starsze
screen
nie działały (chociaż mac iterm2 mac wydaje się to wspierać, ale znowu, obecne ustawienie katalogu nie działało dla mnie). tmux 1.8źródło
Używam wiersza poleceń i dużo git, więc mam ten alias w moim bashrc:
Spowoduje to otwarcie każdego nowego pliku na nowej karcie w istniejącym oknie i utworzenie jednego okna dla każdego repozytorium git. Więc jeśli otworzysz dwa pliki z repozytorium A i 3 pliki z repozytorium B, skończysz z dwoma oknami, jednym dla repozytorium A z dwiema zakładkami i jednym dla repozytorium B z trzema zakładkami.
Jeśli otwierany plik nie znajduje się w repozytorium git, przejdzie do domyślnego okna.
Do przeskakiwania między kartami używam tych mapowań:
Aby otworzyć wiele plików jednocześnie, należy połączyć to z jednym z innych rozwiązań.
źródło
Używam wielu buforów, które są ukryte w moim
~/.vimrc
pliku.Skrypt eksploratora mini-buforów jest również miły, aby uzyskać ładną, kompaktową listę twoich buforów. Następnie
:b1
lub:b2
..., aby przejść do odpowiedniego bufora lub użyj eksploratora mini-buforów i tabuluj bufory.źródło
wypróbuj następujące mapy, aby wygodnie edytować wiele plików
„podzielone okna
nmap <leader>sh :leftabove vnew<CR>
nmap <leader>sl :rightbelow vnew<CR>
nmap <leader>sk :leftabove new<CR>
nmap <leader>sj :rightbelow new<CR>
" krążyć po okolicy
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l
nmap <C-h> <C-w>h
źródło
Zrobiłem bardzo prosty film pokazujący przepływ pracy, którego używam. Zasadniczo używam wtyczki Ctrl-P Vim i zamapował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 przeszukać wiele otwartych plików, wystarczy wpisać część nazwy pliku, wybrać plik i nacisnąć Enter.
Nie mam wielu plików otwartych w filmie, ale staje się niezwykle pomocny, gdy zaczynasz mieć ich dużo.
Ponieważ wtyczka sortuje bufory według kolejności MRU, możesz po prostu nacisnąć dwukrotnie klawisz Enter i przejść do najnowszego edytowanego pliku.
Po zainstalowaniu wtyczki jedyną potrzebną konfiguracją jest:
Oczywiście możesz zmapować go na inny klucz, ale uważam, że mapowanie do wprowadzenia jest bardzo przydatne.
źródło
Sugerowałbym użycie wtyczki
Oto link do github z instrukcjami.
Nerdtree
Używam vim-plug jako menedżera wtyczek, ale możesz także używać Vundle.
wtyczka vim
Vundle
źródło
U moich i wielu innych użytkowników vima najlepszą opcją jest
A następnie wystarczy Ctrl + 6, aby przejść do ostatniego bufora. Lub zawsze możesz nacisnąć
A potem,
<C-W><C-H/K/L/j>
aby zmienić podział pracy.Możesz oczywiście edytować dowolny plik w dowolnej liczbie podziałów.
źródło
Kiedy zacząłem używać VIM, nie zdawałem sobie sprawy, że zakładki 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 nie było nawet kart przed wersją 7.0 i właśnie otworzyłem jeden VIM w zakładce terminalu (w tym momencie korzystałem z terminalu gnome) i przełączałem się między kartami za pomocą alt + liczb, ponieważ myślałem, że używam poleceń takich jak : bufory,: bn i: bp były dla mnie za dużo. Kiedy VIM 7.0 został wydany, łatwiej mi zarządzać wieloma plikami i przestawić się na nie, ale ostatnio zdałem sobie sprawę, że buforowanie powinno zawsze być właściwą drogą, chyba że jedno: musisz go skonfigurować, aby działał poprawnie.
Wypróbowałem więc vim-airline i włączyłem wizualny pasek bufora na górnej zakładce, ale grafika miała problem z moim iTerm2, więc wypróbowałem kilka innych i wydaje się, że MBE działa najlepiej dla mnie. Ustawiłem także shift + h / l jako skróty, ponieważ oryginalne (przejście do nagłówka / końca bieżącej strony) nie są dla mnie bardzo przydatne.
map <S-h> :bprev<Return>
map <S-l> :bnext<Return>
Wydaje się być nawet łatwiejszy niż gt i gT, a: e jest łatwiejszy niż: tabnew. Uważam, że: bd nie jest tak wygodne jak: q chociaż (MBE ma z tym jakiś problem), ale myślę, że mogę żyć ze wszystkimi plikami w buforze.
źródło
jeśli korzystasz z systemu OSX i chcesz mieć możliwość klikania swoich kart, użyj MouseTerm i SIMBL (pobranych stąd ). Sprawdź także tę powiązaną dyskusję .
źródło
Większość odpowiedzi w tym wątku używa prostych poleceń vima, co oczywiście jest w porządku, ale pomyślałem, że udzielę obszernej odpowiedzi przy użyciu kombinacji wtyczek i funkcji, które uważam za szczególnie przydatne (przynajmniej niektóre z tych wskazówek pochodzą z pliku Gary'ego Bernhardta wskazówki nawigacyjne ):
Aby przełączyć między dwoma ostatnimi plikami, naciśnij
<leader>
dwa razy. Polecam przypisanie<leader>
do spacji:Aby szybko poruszać się po projekcie, odpowiedzią jest rozmyte dopasowanie, takie jak CtrlP . Wiążę to, aby
<leader>a
uzyskać szybki dostęp.W przypadku, gdy chcę zobaczyć wizualną reprezentację aktualnie otwartych buforów, korzystam z wtyczki BufExplorer . Proste ale efektywne.
Jeśli chcę przeglądać system plików, skorzystałbym z wiersza poleceń lub zewnętrznego narzędzia (Quicklsilver, Afred itp.), Ale aby spojrzeć na obecną strukturę projektu, drzewo NERD jest klasyczne. Nie używaj tego zamiast
2
jako głównej metody wyszukiwania plików. To naprawdę cię spowolni. Używam wiązania<leader>ff
.Powinny one wystarczyć do wyszukiwania i otwierania plików. Stamtąd oczywiście użyj podziałów poziomych i pionowych. Jeśli chodzi o podziały, uważam te funkcje za szczególnie przydatne:
Otwórz nowe podziały w mniejszych obszarach, gdy nie ma wystarczającej ilości miejsca i rozszerz je w nawigacji. Tutaj można znaleźć komentarze na temat tego, co one dokładnie robią:
Łatwo przechodź z podziału na podział:
źródło
Możesz być bezwzględny szaleniec i alias
vim
dovim -p
dodając w twojej.bashrc
:alias vim="vim -p"
Spowoduje to otwarcie wielu plików z powłoki na kartach, bez konieczności
:tab ball
późniejszego wywoływania z poziomu vima.źródło