Wie stelle ich das Arbeitsverzeichnis / das aktuelle Verzeichnis in Vim ein?

108

Wenn ich also mit dem Befehl: e eine neue Datei erstellen möchte, möchte ich nicht den gesamten Pfad angeben, sondern nur den neuen Dateinamen. Kann es gemacht werden?

Fred
quelle

Antworten:

143

Wie bereits vorgeschlagen, können Sie autochdir verwenden, das in das Verzeichnis der geöffneten Datei wechselt. Die andere Option ist

:cd mydirectory

Dadurch wird das Verzeichnis geändert. Dies kann ein absoluter oder relativer Pfad sein, :cd ..der sich um eine Ebene nach oben bewegt. Oder Sie können verwenden, :cd %:hwelches auch in das Verzeichnis wechselt, in dem sich die aktuelle Datei befindet, ohne jedoch autochdir festzulegen.

:cd

wechselt das Verzeichnis in Ihr Ausgangsverzeichnis (oder druckt unter Windows das aktuelle Verzeichnis).

:cd -

ändert das Verzeichnis in das vorherige Verzeichnis, das Sie besucht haben.

falstro
quelle
13
Wenn Sie mehrere Fenster verwenden, können Sie sogar Folgendes verwenden: lcd, um das Verzeichnis nur für das aktuelle Fenster zu ändern.
Nutzlos
1
@ Nutzlos: interessant ... Ich glaube nicht, dass ich das jemals wollen würde, aber ich nehme an, das ist Geschmackssache. Danke für die Information.
Falstro
3
Ich versuche herauszufinden, was%: h bedeutet, irgendeine Hilfe?
Michael
10
@Michael %übersetzt in den aktuellen Dateinamen einschließlich Pfad, :fügt Modifikator hinzu, hist Kopf, dh der Pfad bis zum letzten Pfadtrennzeichen, das den Dateinamen selbst ausschließt.
Falstro
@falstro, wissen Sie, wie: Der Befehl cd kann auf alle Fenster innerhalb derselben vim-laufenden Instanzen angewendet werden? Beispiel: bei Verwendung von split: sp
mgouin
15

Wenn Sie das Dateisystem mit dem netrw-Datei-Explorer durchsuchen, können Sie das aktuelle Verzeichnis durch Drücken der Taste c festlegen.

Dave Kirby
quelle
Verwenden Sie diese Option auch set autochdir, um den 'c' keyTake-Effekt in der Shell zu erzielen, damit Sie ihn !command args unter geändertem Verzeichnis verwenden können.
Pimgeek
9

Versuchen Sie, set autochdirzu Ihrem hinzuzufügen .vimrc. Wenn Sie es nur einmal ändern möchten, verwenden Sie :cd(oder :cd!erzwingen Sie es).

John Feminella
quelle
1
Die Hilfe sagt, dass dies einige Plugins kaputt macht (ich weiß nicht welche), also habe ich die Vorsichtsmaßnahme getroffen, Mapping in meine .vimrc hinzuzufügen: cnoremap cd. lcd %:p:hund nnoremap ,cd :cd %:p:h<CR>:pwd<CR>stattdessen
ErichBSchulz
Verwenden Sie dazu auch den 'c' keyNetrw-Datei-Explorer.
Pimgeek
3

Ich weiß nicht, was mit vim los ist. Ich möchte das Verzeichnis, in dem ich vim starte, als das aktuelle.

Ich habe den obigen Tipp zu autochd befolgt und ihn in meiner .vimrc auf noautcd gesetzt.

Ich habe es noch nicht getan, aber ich bin dabei, vim von nun an so zu starten:

vim —cmd 'cd `pwd`'

Dadurch bleibt es beim aktuellen Verzeichnis!

McUsr
quelle
2

Mit netrw:zusätzlich zum Drücken der cTaste zum Einstellen des aktuellen Verzeichnisses können Sie auch Folgendes eingeben:

let g:netrw_keepdir= 0

in deinem .vimrc; Dies bedeutet, netrwdass das Browserverzeichnis mit dem aktuellen Verzeichnis identisch bleibt.

Chip Campbell
quelle
Dies scheint ein äquivalentes Verhalten zu haben wie: lcd für jede Änderung des netrw-Ordners. Haben Sie eine Idee, wie diese Einstellung stattdessen einer CD entsprechen könnte (Verzeichnis für alle Fenster ändern)? Vielen Dank!
mgouin
1

Wenn Sie dies zu my .vimrchinzufügen, wird das Arbeitsverzeichnis von Vim automatisch in die aktuelle Datei geändert:

autocmd BufEnter * silent! :lcd%:p:h
Matthias Braun
quelle
3
set autochdirmacht das auch :-)
Ciro Santilli 法轮功 冠状 病 六四 事件 23