Erstellen Sie eine neue Datei im Verzeichnis der geöffneten Datei in vim?

90

Ich befinde mich an der Position, an der ich eine neue Datei im selben Verzeichnis erstellen möchte wie die geöffnete Datei. Wie erstelle ich eine neue Datei im Verzeichnis der geöffneten Datei in vim? Gibt es auch einen Ort, an dem ich diese Dinge selbst lernen kann? Googeln hat nicht geholfen.

Dawg
quelle
Sprechen Sie über vim, den Texteditor unter Linux?
Ianaz

Antworten:

167

In Vim werden neue Dateien erstellt, wie vorhandene Dateien bearbeitet werden, und zwar über Befehle wie :edit filenameoder :split filename. Um sie auf der Festplatte zu speichern, müssen Sie (optional Inhalte eingeben und) über beibehalten :write.

Wie eine Eingabeaufforderung hat Vim eine Vorstellung vom aktuellen Verzeichnis ( :pwdlistet es auf). Alle Dateipfade sind relativ dazu. Sie müssen den Pfad zu Ihrer aktuellen Datei nicht duplizieren, es gibt einige nette Verknüpfungen für sie: %Verweist auf die aktuelle Datei, :hist ein Modifikator für ihr Verzeichnis, abzüglich des Dateinamens (vgl. :help filename-modifiers). So,

:e %:h/filename
:w

erstellt eine neue Datei mit dem Namen filenameim selben Verzeichnis wie die aktuell geöffnete Datei und schreibt sie.

Alternativ möchten einige Leute, dass Vim immer in das Verzeichnis der aktuellen Datei wechselt. Dies kann durch Platzieren konfiguriert werden

:set autochdir

in Ihre ~/.vimrcDatei (die beim Start von Vim gelesen wird). Dann wird oben einfach

:e filename
:w

Schließlich hat Vim eine großartige eingebaute :help. Lerne zu navigieren und zu suchen!

Ingo Karkat
quelle
2
autochdirist leider schuppig und ich stellte fest, dass ich mich nicht darauf verlassen konnte. Stattdessen habe ich ein Autocmd in mein vimrc eingefügt:autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
dash-tom-bang
1
Dawg würde auch gerne Ihre Antwort abstimmen, aber Dawg hat nicht den notwendigen Repräsentanten. Danke für die gut geschriebene Erklärung!
Dawg
14

Sie sollten es mit dem Plugin "nerdtree" versuchen. Im Nerdtree-Fenster haben Sie die Taste m eingegeben, und die Auswahlmöglichkeiten für den Dateivorgang werden angezeigt

Harris
quelle
11

Wenn Sie eine neue Datei erstellen und diese auch im Fenster neben Ihrer aktuellen Datei anzeigen möchten, können Sie Folgendes versuchen:

:vsp newfile

Das vspsteht für vertical splitund teilt den Bildschirm in zwei Hälften, wobei eine Ihre aktuelle Datei und die andere Ihre neue Datei zeigt (funktioniert auch mit just sp, was eine horizontale Aufteilung ist).

Gemäß dem obigen Kommentar von @ MartinLyne wird die Datei im Verzeichnis der Datei erstellt, in der Sie sie geöffnet haben vim. Um dies anzupassen, können Sie das aktuelle Arbeitsverzeichnis wie folgt ändern:

:cd %:p:h

Dieser Befehl ändert das aktuelle Arbeitsverzeichnis in das Verzeichnis der aktiven Datei. Wenn Sie also den vspBefehl (oder einen der oben genannten Befehle) ausführen, wird die Datei in diesem Verzeichnis erstellt.

RocketDonkey
quelle
2

Wenn Sie vim an einem nicht vorhandenen Ort wie geöffnet haben $ vim /etc/<some_folder/<next_folder>/file.cfg

Um dann ein neues Verzeichnis zu erstellen, während Sie sich in vim befinden, führen Sie es einfach im normalen Modus aus :! mkdir -p /etc/<some_folder/<next_folder>und speichern Sie dann Ihr Dokument wie gewohnt :w :x ZZ(was auch immer Sie möchten).

das ist es

Watson Kepson
quelle
1

Das ist für Gvim! Geben Sie dies ein, um das aktuelle Verzeichnis anzuzeigen.

:cd

dann ändern Sie es mit

:cd desktop/somefolder

Speichern oder erstellen Sie dort eine neue Datei

:enew asd.cpp

Jetzt sehen Sie noch einmal die Datei

:cd
Der Blitz
quelle
0

Ich bin ziemlich spät zur Party, aber eine andere Möglichkeit ist, NERDtree mit :Eoder :Explore(oder seinen Aufteilungsalternativen :Vexplore/ :Sexplore== :Vex/ :Sex) zu öffnen .

In NerdTree können Sie eine neue Datei mit erstellen %und den Namen eingeben . Die Datei wird automatisch geöffnet und nach dem :wSpeichern erstellt.

Mazunki
quelle