Ich weiß, dass ich Dateinamen / Pfade aus dem aktuellen Verzeichnis mit Strg + x, Strg + f ( compl-filename
) vervollständigen kann . Das funktioniert hervorragend in Kombination mit set autochdir, das das aktuelle Verzeichnis in das Verzeichnis des aktiven Puffers aktualisiert.
Ich habe jedoch damit begonnen airblade/vim-rooter
, das aktuelle Verzeichnis zum Ordner "Projekt" zu machen. Jetzt beginnt die Vervollständigung des Dateinamens immer im Projektordner.
Die Frage: Gibt es eine Möglichkeit, die Vervollständigung des Dateinamens so zu gestalten, dass das Verzeichnis des aktiven Puffers anstelle des aktuellen Verzeichnisses verwendet wird? Oder eine andere Problemumgehung?
autocompletion
Rafael Barbosa
quelle
quelle
path
). Dies hängt davon ab, wie Sie Vim-Rooter verwenden möchten. Je nachdem, was Sie davon wollen, können wir auch andere Plugins verwenden. Nebenbei: Ich verwende youcompleteme, das Pfade aus dem Verzeichnis des aktuellen Puffers vervollständigt, wenn Sie mit der Eingabe beginnen./
. Siehe reddit.com/r/vim/comments/216jdd/…Antworten:
Wie @muru erwähnt, gibt es keine Optionen zum Konfigurieren des Verzeichnisses, aus dem Pfad- und Dateinamen vervollständigt werden sollen. Es wird immer das Arbeitsverzeichnis des Fensters verwendet.
Ich habe ein paar Funktionen und Zuordnungen geschrieben, um dabei zu helfen. Hinter den Kulissen ändern sie
:lcd
vorübergehend das lokale Arbeitsverzeichnis (using ) und stellen anschließend das vorherige Arbeitsverzeichnis wieder her.Elefant
Aus mir selbst unbekannten Gründen habe ich dieses Mikro-Plugin Elephant genannt .
Hier ist der Code (kopiert von meiner Vim-Konfiguration auf GitHub ):
Wie man es benutzt
Die Verwendung dieser Zuordnungen erfolgt in 3 Schritten.
1. Rufen Sie das Mapping auf
Rufen Sie im Einfügemodus oder im Befehlszeilenmodus die Zuordnung mit auf
<C-R><C-E>
.2. Wählen Sie ein Verzeichnis
Geben Sie ein einzelnes Zeichen ein, um auszuwählen, aus welchem Stammverzeichnis die Vervollständigung erfolgen soll. Der obige Code bietet zwei Arten von Wurzeln:
f
- Das Verzeichnis, in dem sich die aktuelle Datei (Puffer) befindetp
- Das Basisverzeichnis des Git-Projekts, zu dem die aktuelle Datei gehört3. Geben Sie den Pfad oder Dateinamen ein
Sie werden aufgefordert, den Pfad oder Dateinamen relativ zum angegebenen Verzeichnis einzugeben, wobei der Abschluss verfügbar ist. Drücken Sie,
Enter
wenn Sie fertig sind.Einige Notizen
<C-X><C-F>
dies der Fall ist. Stattdessen geben Sie den Pfad oder den Dateinamen in die Eingabeaufforderung ein (wohin die:
Befehle gehen). Beim DrückenEnter
wird der Pfad in den Puffer eingefügt.Enter
und vergessen, dass Sie immer noch drücken müssenEnter
, um den Befehl auszugeben, den Sie gerade eingegeben haben.g:elephant_map
.quelle