Ich habe angefangen, Vim zu verwenden, um Perl-Skripte zu entwickeln, und finde es sehr leistungsfähig.
Eine Sache, die ich mag, ist es, mehrere Dateien gleichzeitig öffnen zu können mit:
vi main.pl maintenance.pl
und dann zwischen ihnen hüpfen mit:
:n
:prev
und sehen, welche Dateien geöffnet sind mit:
:args
Und um eine Datei hinzuzufügen, kann ich sagen:
:n test.pl
was ich dann erwarten würde, würde dann zu meiner Liste von Dateien hinzugefügt, aber stattdessen löscht es meine aktuelle Dateiliste und wenn ich tippe, habe :args
ich nur test.pl
geöffnet.
Wie kann ich Dateien in meiner Args-Liste hinzufügen und entfernen?
:N
scheint ein einfacher Weg zu sein, um zur vorherigen Datei zu gelangen ...Antworten:
Warum nicht Tabs verwenden (eingeführt in Vim 7)? Sie können zwischen Registerkarten mit
:tabn
und wechseln.:tabp
Mit:tabe <filepath>
können Sie eine neue Registerkarte hinzufügen. und mit einem regulären:q
oder:wq
Sie schließen einen Tab. Wenn Sie:tabn
und /:tabp
Ihre Schlüssel zuordnen, können Sie einfach zwischen Dateien wechseln.F7F8Wenn es nicht so viele Dateien gibt oder Sie nicht über Vim 7 verfügen, können Sie Ihren Bildschirm auch in mehrere Dateien aufteilen :
:sp <filepath>
. Dann können Sie mit Ctrl+ Wund einer Pfeiltaste zwischen den Teilbildschirmen in die Richtung wechseln, in die Sie sich bewegen möchten (oder anstelle der Pfeiltasten wfür den nächsten und Wfür den vorherigen Teilbildschirm).quelle
ZZ
anstelle von:wq
(genau wie normalerweise speichern und schließen)gt
zur nächsten Registerkarte undgT
zur vorherigen Registerkarte gewechselt.-p
Flag verwenden können, um mehrere Dateien in Registerkarten über die Befehlszeile zu öffnen. Zum Beispielgvim -p main.pl maintenance.pl
werden diese beiden Dateien in Tabs öffnen.Auflistung
Um eine Liste der aktuellen Puffer anzuzeigen, verwende ich:
Öffnung
Um eine neue Datei zu öffnen, benutze ich
mit erweiterter Tab-Vervollständigung (
set wildmenu
in Ihre.vimrc
).Hinweis: Sie können auch verwenden
:find
, um eine Reihe von Pfaden für Sie zu durchsuchen. Sie müssen diese Pfade jedoch zuerst anpassen.Schalten
Um zwischen allen geöffneten Dateien zu wechseln, verwende ich
mit erweiterter Tab-Vervollständigung (noch
set wildmenu
).Hinweis:
:b#
Wählt die zuletzt besuchte Datei aus, damit Sie schnell zwischen zwei Dateien wechseln können.Fenster verwenden
Ctrl-W s
undCtrl-W v
um das aktuelle Fenster horizontal und vertikal zu teilen. Sie können auch:split
und:vertical split
(:sp
und:vs
) verwendenCtrl-W w
um zwischen geöffneten Fenstern zu wechseln undCtrl-W h
(oderj
oderk
oderl
) durch geöffnete Fenster zu navigieren.Ctrl-W c
um das aktuelle FensterCtrl-W o
zu schließen und um alle Fenster außer dem aktuellen zu schließen.Wenn Sie vim mit einem
-o
oder-O
Flag starten, wird jede Datei in einer eigenen Aufteilung geöffnet.Bei alledem brauche ich keine Tabs in Vim, und meine Finger finden meine Puffer, nicht meine Augen.
Hinweis: Wenn alle Dateien auf dieselbe Instanz von Vim verschoben werden sollen, starten Sie Vim mit der
--remote-silent
Option.quelle
:b
ist ein sehr leistungsfähiger Befehl, da er sowohl Puffernummern als auch Puffernamen als Argumente akzeptieren kann. Was mehr? Es unterstützt auch die Tab-Vervollständigung für jeden Teil des Dateinamens. Sagen Sie , Sie haben foo.txt offen in Puffer 2, können Sie eingeben:b 2<Enter>
oder:b foo.txt
oder:b oo<Tab><Enter>
zu bearbeiten , die Datei. Ja, der letzte würde 'oo' bis 'foo.txt' vervollständigen, wenn Sie <Tab> drücken.nnoremap gb :ls<cr>:b<space>
. Wenn ichgb
im Befehlsmodus tippe, werden meine geöffneten Puffer und Typen aufgelistet:b
, damit ich mit der Eingabe eines Puffernamens / einer Puffernummer beginnen kann.:b
eine Teilzeichenfolge akzeptiert wird, solange sie eindeutig ist. Wenn Sie also geöffnete Dateienfoo
habenbar
, undbaz
, reicht dies gerade:b z
aus, um Sie in denbaz
Puffer zu wechseln , und:b oo
oder:b o
bringt Sie in denfoo
Puffer.für die Liste der offenen Puffer
:bp
vorheriger Puffer:bn
nächster Puffer:bn
(n
eine Zahl) zum n-ten Puffer bewegen:b <filename-part>
mit Tabulatortaste für automatische Vervollständigung (fantastisch !!)In einigen Versionen von vim
bn
undbp
sind tatsächlichbnext
undbprevious
jeweils. Die automatische Vervollständigung der Registerkarte ist in diesem Fall hilfreich.Oder
^
wechseln Sie im normalen Modus zu der letzten Datei, an der Sie gearbeitet haben.Außerdem können Sie vim-Sitzungen speichern
Der obige Befehl speichert die aktuell geöffneten Dateipuffer und Einstellungen in
~/today.ses
. Sie können diese Sitzung mithilfe von ladenKein Problem, sich daran zu erinnern, wo Sie gestern aufgehört haben. ;)
quelle
"
Markierung auch, um zu der Stelle zu springen, an der Sie sich das letzte Mal in der Datei befanden.So fügen Sie der
args
Liste hinzu:So löschen Sie aus der
args
Liste:In Ihrem Beispiel können Sie
:argedit
test.pl verwenden, um test.pl zurargs
Liste hinzuzufügen und die Datei in einem Schritt zu bearbeiten.:help args
bietet viel mehr Details und erweiterte Verwendungquelle
Ich benutze Pufferbefehle -
:bn
(nächster Puffer),:bp
(vorheriger Puffer):buffers
(Liste offener Puffer):b<n>
(offener Puffer n):bd
(Puffer löschen).:e <filename>
wird nur in einen neuen Puffer geöffnet.quelle
Ich denke, Sie verwenden möglicherweise den falschen Befehl, um die Liste der geöffneten Dateien anzuzeigen.
Versuchen Sie,
:ls
die Liste der geöffneten Dateien anzuzeigen, und Sie sehen:Sie können dann durch die Dateien springen, indem Sie auf sie mit den aufgeführten Nummern verweisen, z. B.: 3b
oder Sie können Ihren Bildschirm teilen, indem Sie die Nummer eingeben, aber jdn anstelle von nur b verwenden.
Nebenbei verweist% auf die aktuell sichtbare Datei und # auf die alternative Datei.
Sie können einfach zwischen diesen beiden Dateien wechseln, indem Sie auf drücken Ctrl Shift 6
Bearbeiten: So
:ls
können:reg
Sie den aktuellen Inhalt Ihrer Register anzeigen, einschließlich der 0-9-Register, die das enthalten, was Sie gelöscht haben. Dies ist besonders nützlich, wenn Sie zuvor gelöschten Text wiederverwenden möchten.quelle
Vim (aber nicht das ursprüngliche Vi!) Hat Registerkarten, die ich (in vielen Zusammenhängen) den Puffern überlegen finde. Sie können sagen
:tabe [filename]
, dass Sie eine Datei in einem neuen Tab öffnen möchten. Das Wechseln zwischen Registerkarten erfolgt durch Klicken auf die Registerkarte oder durch Drücken der Tastenkombinationen [ n ]gt
undgT
. Graphical Vim verfügt sogar über grafische Registerkarten.quelle
vim -p dir/*
. Die maximale Größe der Registerkarte beträgt 10, Sie können sie jedoch ändern,~/.vimrc
indem Sietabpagemax
einen anderen Wert festlegen.Viele Antworten hier! Was ich benutze, ohne das Rad neu zu erfinden - die bekanntesten Plugins (die nicht so schnell sterben werden und von vielen Menschen verwendet werden) sind ultraschnell und geekig.
BEARBEITEN: Vor kurzem habe ich dyng / ctrlsf.vim verwendet , um mit der Kontextansicht zu suchen (wie die Sublime-Suche), und ich habe die Engine von ag auf ripgrep umgestellt . Die Leistung ist hervorragend.
EDIT2: Zusammen mit CtrlSF können Sie mg979 / vim-visual-multi verwenden , Änderungen an mehreren Dateien gleichzeitig vornehmen und diese am Ende auf einmal speichern.
quelle
Dinge wie
:e
und:badd
werden nur EIN Argument akzeptieren, daher wird das Folgende fehlschlagenWenn Sie mehrere Dateien aus vim hinzufügen möchten, verwenden Sie
arga[dd]
quelle
Einige Antworten in diesem Thread schlagen die Verwendung von Registerkarten vor, andere die Verwendung von Puffer, um dasselbe zu erreichen. Tabs und Puffer sind unterschiedlich. Ich empfehle Ihnen dringend, diesen Artikel " Vim Tab Wahnsinn - Puffer gegen Tabs " zu lesen .
Hier ist eine schöne Zusammenfassung, die ich aus dem Artikel gezogen habe:
Zusammenfassung:
quelle
:help window
VimWenn ich mehrere Dateien in vim verwende, verwende ich meistens diese Befehle (mit ~ 350 geöffneten Dateien):
:b <partial filename><tab>
(zu einem Puffer springen):bw
(Puffer löschen, Puffer entfernen):e <file path>
(bearbeiten, neuen Puffer öffnen>pltags
- Aktivieren Sie das Springen zu Unterprogramm- / Methodendefinitionenquelle
:b <partial filename><tab>
Plusset wildmenu
in deinen.vimrc
Arbeiten gut, wenn du Tonnen von Puffern offen hast. Dann stimmen Sie nur teilweise überein und scrollen durch die gefundenen. In anderen anständigen Editoren haben Sie Fuzzy-Suche, aber normalerweise können Sie diese Fuzzy-Suche nicht nur auf die Dateien beschränken, die Sie geöffnet haben.Hinzufügen einer weiteren Antwort, da diese von keiner der Antworten abgedeckt wird
So ändern Sie alle
tab
anzuzeigenden Puffer .öffnet alle Puffer für die Registerkartenansicht. Dann können wir beliebige tabulatorbezogene Befehle verwenden
Details unter
:help tab-page-commands
.Wir können vim anweisen, als Registerkartenansicht mehrere Dateien von zu öffnen
vim -p file1 file2
.alias vim='vim -p'
wird nützlich sein.Das Gleiche kann auch erreicht werden, indem der folgende automatische Befehl eingegeben wird
~/.vimrc
Wie dem auch sei , die Frage zu beantworten: zu arg Liste hinzuzufügen:
arga file
,So löschen Sie aus der Arg-Liste:
argd pattern
Mehr bei
:help arglist
quelle
Möglicherweise möchten Sie globale Vim-Marken verwenden .
Auf diese Weise können Sie schnell zwischen Dateien und sogar zum markierten Speicherort in der Datei springen. Außerdem sind die Tastenbefehle kurz:
'C
Bringt mich zu dem Code, mit dem ich arbeite, und'T
zu dem Komponententest, mit dem ich arbeite.Wenn Sie die Position wechseln, können Sie die Markierungen auch schnell zurücksetzen:
mC
Markiert den neuen Code-Spot undmT
den neuen Test-Spot.quelle
Ich verwende dieselbe .vimrc-Datei für gVim und die Befehlszeile Vim. Ich verwende normalerweise Registerkarten in gVim und Puffer in der Befehlszeile Vim, daher habe ich meine .vimrc-Datei so eingerichtet, dass die Arbeit mit beiden einfacher ist:
Dies blockiert die vorhandenen Zuordnungen für Hund L, macht jedoch das Wechseln zwischen Dateien extrem schnell und einfach. Einfach Hfür das nächste und Lfür das vorherige drücken; Unabhängig davon, ob Sie Registerkarten oder Puffer verwenden, erhalten Sie die beabsichtigten Ergebnisse.
quelle
Wenn Sie mehrere Puffer verwenden, ist es meiner Meinung nach am wichtigsten, die Puffer so auszublenden, dass Sie die Puffer wechseln können, auch wenn Sie nicht gespeicherte Änderungen an dem Puffer vorgenommen haben, den Sie verlassen.
quelle
Wenn Sie nur die in vim integrierten Befehle verwenden , ist der beste, den ich je gesehen habe, um zwischen mehreren Puffern zu wechseln, folgender:
Es kombiniert sowohl Befehle
:ls
als auch:b
Befehle perfekt - listet alle geöffneten Puffer auf und wartet darauf, dass Sie den Befehl zum Umschalten des Puffers eingeben.Wenn Sie die obige Zuordnung in vimrc angegeben haben
<Leader>f
,23
, um zu Puffer 23 zu gelangen.#
, um zum alternativen / MRU-Puffer zu gelangen.<Tab>
oder<C-i>
zur automatischen Vervollständigung ein.<CR>
oder<Esc>
um auf dem aktuellen Puffer zu bleibenEine Momentaufnahme der Ausgabe für die obige Schlüsselzuordnung lautet:
Im obigen Schnappschuss:
%a
für aktuell,h
für versteckt,#
für vorher, leer für wurde nicht umgeschaltet.+
für modifiziert.Auch empfehle ich stark
set hidden
. Siehe:help 'hidden'
.quelle
:b
und:ls
viel , aber unabhängig. Ich denke, dies wird weniger nützlich, wenn Sie mehr als eine Seite Puffer haben, aber dann können Sie immer noch einfach auf:b
nnoremap <leader>f :ls<cr>:b<space>
, was jedoch zu Problemen mit dem Befehl 'more' führen kannset more
Sachen machen nur dann einen Unterschied, wenn viele Dateien geöffnet sind (mehr als eine Seite), z. B.vim /usr/include/*
obwohl sie dann weniger nützlich sind.Ich verwende Folgendes: Dies bietet Ihnen viele Funktionen, die Sie in anderen Editoren wie Sublime Text / Textmate erwarten würden
.vimrc
:let g:airline#extensions#tabline#enabled = 1
. Dadurch werden automatisch alle Puffer als Registerkartenüberschriften angezeigt, wenn keine Registerkarten geöffnet sindset wildmenu
in Ihrem.vimrc
dann bei der Eingabe:b <file part>
+ Tabfür einen Puffer erhalten Sie eine Liste der möglichen Puffer erhalten , dass Sie mit der rechten Pfeile links / verwenden können , um zu blättern:Explore
, erleichtert jedoch die Arbeit. Geben Sie einfach ein-
, um den Explorer zu öffnen. Dies ist der gleiche Schlüssel wie das Aufrufen eines Verzeichnisses im Explorer. Beschleunigt die Navigation (mit fzf verwende ich dies jedoch selten):cdo
die Ergebnisse, um zu suchen und zu ersetzenquelle
Meine Art, effektiv mit mehreren Dateien zu arbeiten, ist die Verwendung von tmux.
Sie können Fenster vertikal und horizontal teilen, wie in:
Ich habe es sowohl auf meinem Mac als auch auf meinem Linux-Computer so und finde es besser als den nativen Mechanismus zum Umschalten des Fensterbereichs, der bereitgestellt wird (auf Macs). Ich finde das Umschalten einfacher und nur mit tmux konnte ich die "neue Seite im selben aktuellen Verzeichnis" auf meinem Mac zum Laufen bringen (trotz der Tatsache, dass es Optionen zu geben scheint, neue Fenster im selben Verzeichnis zu öffnen) ein überraschend kritisches Stück. Ein sofortiger neuer Bereich am aktuellen Standort ist erstaunlich nützlich. Eine Methode, die neue Fenster mit denselben Tastenkombinationen für beide Betriebssysteme erstellt, ist für mich von entscheidender Bedeutung und ein Bonus für alle für die zukünftige persönliche Kompatibilität. Abgesehen von mehreren tmux-Fenstern habe ich auch versucht, mehrere Registerkarten zu verwenden, z. B. und mehrere neue Fenster, zund letztendlich habe ich festgestellt, dass mehrere tmux-Fenster für mich am nützlichsten sind. Ich bin sehr "visuell" und mag es, meine verschiedenen Kontexte direkt vor mir zu halten, verbunden als Scheiben.
tmux unterstützt auch horizontale und vertikale Bereiche, die der ältere
screen
nicht unterstützt hat (obwohl iterm2 von mac dies zu unterstützen scheint, aber auch hier hat die aktuelle Verzeichniseinstellung bei mir nicht funktioniert). tmux 1.8quelle
Ich benutze die Kommandozeile und git viel, also habe ich diesen Alias in meinem bashrc:
Dadurch wird jede neue Datei in einer neuen Registerkarte in einem vorhandenen Fenster geöffnet und ein Fenster für jedes Git-Repository erstellt. Wenn Sie also zwei Dateien aus Repo A und drei Dateien aus Repo B öffnen, erhalten Sie zwei Fenster, eines für Repo A mit zwei Registerkarten und eines für Repo B mit drei Registerkarten.
Wenn die Datei, die Sie öffnen, nicht in einem Git-Repo enthalten ist, wird ein Standardfenster angezeigt.
Um zwischen Registerkarten zu springen, verwende ich diese Zuordnungen:
Um mehrere Dateien gleichzeitig zu öffnen, sollten Sie dies mit einer der anderen Lösungen kombinieren.
quelle
Ich verwende mehrere Puffer, die in meiner
~/.vimrc
Datei versteckt sind .Das Mini-Buffer-Explorer-Skript ist auch gut, um eine schöne kompakte Liste Ihrer Puffer zu erhalten. Dann
:b1
oder:b2
..., um zum entsprechenden Puffer zu gelangen, oder verwenden Sie den Minipuffer-Explorer und blättern Sie durch die Puffer.quelle
Versuchen Sie, den folgenden Karten zu folgen, um mehrere Dateien bequem bearbeiten zu können
"geteilte Fenster
nmap <leader>sh :leftabove vnew<CR>
nmap <leader>sl :rightbelow vnew<CR>
nmap <leader>sk :leftabove new<CR>
nmap <leader>sj :rightbelow new<CR>
"sich bewegen
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l
nmap <C-h> <C-w>h
quelle
Ich habe ein sehr einfaches Video gemacht, das den von mir verwendeten Workflow zeigt. Grundsätzlich verwende ich das Ctrl-P Vim-Plugin und habe die Puffernavigation der Eingabetaste zugeordnet.
Auf diese Weise kann ich im normalen Modus die Eingabetaste drücken, die Liste der geöffneten Dateien anzeigen (die in einem kleinen neuen Fenster am unteren Bildschirmrand angezeigt wird), die Datei auswählen, die ich bearbeiten möchte, und erneut die Eingabetaste drücken. Um schnell mehrere geöffnete Dateien zu durchsuchen, geben Sie einfach einen Teil des Dateinamens ein, wählen Sie die Datei aus und drücken Sie die Eingabetaste.
Ich habe nicht viele Dateien im Video geöffnet, aber es wird unglaublich hilfreich, wenn Sie anfangen, viele davon zu haben.
Da das Plugin die Puffer mithilfe einer MRU-Reihenfolge sortiert, können Sie einfach zweimal die Eingabetaste drücken und zur zuletzt bearbeiteten Datei springen.
Nach der Installation des Plugins benötigen Sie lediglich folgende Konfiguration:
Natürlich können Sie es einem anderen Schlüssel zuordnen, aber ich finde die Zuordnung sehr praktisch.
quelle
Ich würde vorschlagen, das Plugin zu verwenden
Hier ist der Github-Link mit Anweisungen.
Nerdtree
Ich benutze vim-plug als Plugin-Manager, aber Sie können auch Vundle verwenden.
vim-plug
Vundle
quelle
Bei meinen und vielen anderen vim-Benutzern ist die beste Option:
Und dann nur noch Strg + 6, um zum letzten Puffer zu wechseln. Oder Sie können jederzeit drücken
Und dann
<C-W><C-H/K/L/j>
die Arbeitsaufteilung zu ändern.Sie können natürlich jede Datei in beliebig vielen Teilungen bearbeiten.
quelle
Als ich anfing, VIM zu verwenden, war mir nicht klar, dass Registerkarten als unterschiedliche Fensterlayouts verwendet werden sollten, und der Puffer dient als Rolle für das Bearbeiten / Wechseln mehrerer Dateien untereinander. Eigentlich sind Tabs am Anfang noch nicht einmal vor Version 7.0 vorhanden, und ich habe gerade ein VIM in einem Terminal-Tab geöffnet (ich habe im Moment Gnome-Terminal verwendet) und zwischen Tabs mit Alt + -Nummern gewechselt, da ich dachte, Befehle wie : Puffer ,: bn und: bp waren zu viel für mich. Als VIM 7.0 veröffentlicht wurde, ist es für mich einfacher, viele Dateien zu verwalten und darauf umzuschalten. Vor kurzem wurde mir jedoch klar, dass Puffer immer der richtige Weg sein sollten, es sei denn, eines muss konfiguriert werden, damit es richtig funktioniert.
Also habe ich vim-airline ausprobiert und die visuelle, tab-artige Pufferleiste oben aktiviert, aber die Grafik hatte Probleme mit meinem iTerm2, also habe ich ein paar andere ausprobiert und es scheint, dass MBE für mich am besten funktioniert. Ich habe auch Shift + h / l als Verknüpfungen festgelegt, da die ursprünglichen (Verschieben zum Kopf / Ende der aktuellen Seite) für mich nicht sehr nützlich sind.
map <S-h> :bprev<Return>
map <S-l> :bnext<Return>
Es scheint noch einfacher zu sein als gt und gT, und: e ist auch einfacher als: tabnew. Ich finde: bd ist zwar nicht so praktisch wie: q (MBE hat ein Problem damit), aber ich kann mit allen Dateien im Puffer leben, denke ich.
quelle
Wenn Sie auf osx sind und auf Ihre Registerkarten klicken möchten, verwenden Sie MouseTerm und SIMBL (von hier aus ). Schauen Sie sich auch diese verwandte Diskussion an .
quelle
Die meisten Antworten in diesem Thread verwenden einfache vim-Befehle, was natürlich in Ordnung ist, aber ich dachte, ich würde eine ausführliche Antwort mit einer Kombination von Plugins und Funktionen geben, die ich besonders nützlich finde (zumindest einige dieser Tipps stammen aus Gary Bernhardts Datei Navigationstipps ):
Um zwischen den letzten beiden Dateien umzuschalten, drücken Sie einfach
<leader>
zweimal. Ich empfehle,<leader>
der Leertaste Folgendes zuzuweisen:Um sich schnell in einem Projekt zu bewegen, ist die Antwort eine Fuzzy-Matching-Lösung wie CtrlP . Ich binde es
<leader>a
für einen schnellen Zugriff an.Für den Fall, dass ich eine visuelle Darstellung der aktuell geöffneten Puffer sehen möchte, verwende ich das BufExplorer-Plugin . Einfach aber effektiv.
Wenn ich mich im Dateisystem umsehen möchte, würde ich die Befehlszeile oder ein externes Dienstprogramm (Quicklsilver, Afred usw.) verwenden, aber um die aktuelle Projektstruktur zu betrachten, ist NERD Tree ein Klassiker. Verwenden Sie dies jedoch nicht anstelle
2
Ihrer Hauptmethode zum Auffinden von Dateien. Es wird dich wirklich verlangsamen. Ich benutze die Bindung<leader>ff
.Diese sollten ausreichen, um Dateien zu finden und zu öffnen. Verwenden Sie von dort natürlich horizontale und vertikale Teilungen. In Bezug auf Splits finde ich diese Funktionen besonders nützlich:
Öffnen Sie neue Teilungen in kleineren Bereichen, wenn nicht genügend Platz vorhanden ist, und erweitern Sie sie in der Navigation. Siehe hier für Kommentare zu was diese tun genau:
Wechseln Sie einfach von Split zu Split:
quelle
Sie können ein absoluter Verrückter und Alias sein
vim
,vim -p
indem Sie Folgendes hinzufügen.bashrc
:alias vim="vim -p"
Dies führt dazu, dass mehrere Dateien aus der Shell in Registerkarten geöffnet werden, ohne dass Sie anschließend
:tab ball
von vim aus aufrufen müssen .quelle