2017-07-11 2 views
3

Angenommen, ich arbeite an der Analyse sehr großer Datendateien (jede Datei hat ungefähr mehrere Megabyte). Ich möchte mit dem Lesen dieser Datendateien Parsing-Code schreiben, also habe ich mehrere Fenster in Vim, einige sind Code-Dateien und einige sind Datendateien.Wie kann ich einige Dateien für Vim Word Complete ignorieren?

In diesem Fall ist die Vim-Wortvervollständigung im Einfügemodus extrem langsam, da versucht wird, die Datendatei zu scannen. Um diese Situation zu vermeiden, möchte ich diese Datendateien ignorieren, die keine Programmerweiterung haben (z. B. dat, txt anstelle von c, rb, py), aber weiterhin Programmdateien ansehen. Also der beste Fall ist, dass ich einige Erweiterungen für das Ignorieren während der Wortvervollständigung registrieren kann.

Wie kann ich das erreichen? Ich schaute auf h: 'complete', aber ich konnte nicht finden, was ich machen möchte. Zum Beispiel, set complete-=w in .vimrc befriedigt mich nicht, weil es nicht nur Datendateien, sondern auch Programmdateien ignoriert, was die Wortvervollständigung komplett zerstört.

Vielen Dank für Ihre Hilfe.

+0

Eine sehr einfache und sehr offensichtliche Problemumgehung wäre das Öffnen Ihrer Datendateien in einer anderen Vim-Instanz oder, da Sie sie nicht bearbeiten wollen, in einem Pager wie "less" (der viele Befehle mit Vi teilt) [m]). – romainl

+0

Ja, ich denke darüber nach. Um alles auf einmal anzuzeigen (dies ist ein Teil von dem, was ich tun möchte), kann ich Screen, iTerm2 oder was auch immer verwenden, um den Bildschirm zu teilen und die Daten zu öffnen. Allerdings möchte ich aus vielen Gründen einen Weg finden, dies in einer reinen vim-Umgebung zu tun: "less" hat keine Plugins, die ich benutze, selbst wenn ich nur Dateien sehe. Wenn ich zum Beispiel mehrere Instanzen von Vim auf einem Bildschirm unter Verwendung der Bildschirmaufteilung zum Beispiel durch den Bildschirm habe, bin ich sicher, dass ich verwirrt werde, weil es Vim-Funktion und Bildschirm-Funktion mischt, was sehr schmerzhaft ist. – horiem

+0

Alle guten Punkte. In Vim selbst ist die einzige Möglichkeit, eine Datei vom Scannen auszuschließen, sie aus der Pufferliste zu entfernen oder zu entladen, aber das bedeutet auch, dass sie * nicht angezeigt wird, damit der Zweck nicht erfüllt wird. Alternativ können Sie '' und '' verwenden. – romainl

Antwort

3

Sie haben zwei Möglichkeiten: Arbeiten Sie mit den Abschlussquellen in der Option 'complete' oder konfigurieren Sie sie neu, oder schreiben Sie eine benutzerdefinierte Fertigstellung.

Für letzteres bietet meine CompleteHelper library Hilfsfunktionen, die das ziemlich einfach machen. Die SameFiletypeComplete plugin (die auf dieser Bibliothek basiert) berücksichtigt nur Puffer mit demselben Dateitypen. Natürlich ist jede benutzerdefinierte Vervollständigung nicht so schnell wie die eingebaute, und meine Bibliothek ist derzeit auf Puffersuchen beschränkt (keine Tags, Wörterbücher usw.)

Ich persönlich würde diese großen Datendateien nicht gelistet machen über :setlocal nobuflisted, und öffnen Sie sie in einer separaten Registerkarte; Der Standardwert für 'complete' würde dann diese ignorieren (da er den Wert U nicht enthält).

+0

Ihr Plugin klingt sehr nett, aber es hat nicht für mich funktioniert. Ich extrahierte beide vimballs, CompleteHelper und SameFileTypeComplete und ich sehe SameFiletypeComplete.vim mit ': scriptnames' installiert. Ich setze 'let g: SameFiletypeComplete_complete = '., W, b'' in meiner einfachen .vimrc, dann tippte aber es sucht nicht nach Stichwörtern, die in anderen Fenstern geschrieben wurden. Die lokale Fertigstellung funktioniert wie gewohnt. Irgendeine Idee, was ist los? Meine Umgebung: 'VIM - Vi IMproved 8.0 (2016 Sep 12, kompiliert 10.07.2017 18:00:13) MacOS X (Unix) Version Enthaltene Patches: 1-703 Zusammengestellt von Homebrew' – horiem

+1

Sie müssen auch dies installieren Bibliothek: http://www.vim.org/scripts/script.php?script_id=4433 Oh, und die gleiche Dateitypenvervollständigung wird über ' =' ausgelöst (Standard; kann geändert werden). –

+0

Arbeitete perfekt! Das ist genau das, was ich wollte, vielen Dank !! – horiem

Verwandte Themen