Make: edit {file} verwendet das aktuelle Verzeichnis während: Explore

8

Ich verwende :Exoder untersuche :Sexdas Dateisystem häufig aus einem geöffneten Dateiverzeichnis oder rufe einfach vim auf, indem ich ein Verzeichnis übergebe, um das Dateisystem zu erkunden und dann eine Datei zu öffnen.

In jedem Fall werden beim Navigieren in der Verzeichnisstruktur beim Verwenden des :edit {file}Befehls zum Öffnen neuer Dateien immer Pfade relativ zum aktuellen Verzeichnis verwendet, aus dem vim ausgeführt wurde. damit:

~# vim .
-> navigate to Development/
-> open a file
:e <tab> will complete path from home dir

oder:

~# vim Development/
-> open a file
:Sex
:e <tab> will complete paths from Development/

Ist es möglich (automatisch oder mit einem Befehl), das aktuelle Arbeitsverzeichnis von vim in das aktuell ausgewählte Verzeichnis zu ändern, während Sie im Dateisystem navigieren?

Guido
quelle

Antworten:

5

Sie können die Konfigurationsvariable netrw g:netrw_keepdirauf 0 setzen (Standard ist 1).
Fügen Sie in die .vimrc-Datei die folgende Zeile ein, um sie dauerhaft zu machen:

let g:netrw_keepdir=0
Giovanni Maggiorani
quelle
7

Ja, vim hat einen :cdBefehl, der entweder das aktuelle Verzeichnis druckt oder das aktuelle Verzeichnis ändert. In der Hilfe ist dies - beachten Sie die letzten Zeilen:

:cd[!] {path}           Change the current directory to {path}.
                        If {path} is relative, it is searched for in the
                        directories listed in |'cdpath'|.
                        Does not change the meaning of an already opened file,
                        because its full path name is remembered.  Files from
                        the |arglist| may change though!
                        On MS-DOS this also changes the active drive.
                        To change to the directory of the current file: >
                                :cd %:h

Wie oben in der Hilfe für erwähnt :cd, wirkt sich dies auf das Arbeitsverzeichnis von vim aus, nicht nur auf die :ExRückkehr oder die Verwendung interner Befehle. Daher verwenden externe Befehle auch den neuen Speicherort.

Izkata
quelle
Gibt es während der Navigation ein "Verzeichnis geändert" -ähnliches Ereignis, an das ich einen Autobefehl binden könnte? Funktioniert es auch nur nach dem Öffnen einer Datei?
Guido
@guido Nicht das ich weiß, aber die anderen beiden Antworten scheinen eine Möglichkeit für automatische Änderung zu sein
Izkata
7

Ich habe die folgenden zwei Optionen festgelegt, um sicherzustellen, dass das aktuelle Arbeitsverzeichnis von Vim immer mit dem des aktuellen Puffers übereinstimmt.

set autochdir                   " Changes the cwd to the directory of the current
                                " buffer whenever you switch buffers.
set browsedir=current           " Make the file browser always open the current
                                " directory.
Quincy Bowers
quelle
Der zweite Befehl macht es; Das erste ändert das Verzeichnis auch beim Öffnen einer Datei, mit vim path/to/fileder ich nicht möchte.
Guido
@guido Ich verstehe nicht, wie sich das Einstellen nur der browsedirEinstellung auf das von Ihnen beschriebene Verhalten auswirkt. Diese Einstellung wirkt sich darauf aus, welches Verzeichnis der GUI-Dateibrowser öffnet und nicht darauf, welches Verzeichnis für die Befehlszeilenvervollständigung verwendet wird.
Rich
@Rich du vollkommen richtig; Ich habe vergessen, let g:netrw_keepdir=0vor dem Testen von meinem vimrc zu löschen !
Guido