2016-06-05 15 views
2

Wenn ich den Befehl :find gefolgt von den ersten Buchstaben eines Dateinamens und dann drücken Sie die Tab (um Autovervollständigung), VIM sperrt, und ich muss herunterfahren und neu beginnen.Vim: Befehl Deadlock

Zum Beispiel schreibe ich

:find nam 

und dann traf ich Tab. VIM schreibe drei Punkte nach:

und dann funktioniert nicht mehr. Unbegrenzt. Dies geschieht, wenn ich mich im Stammverzeichnis eines Projekts befinde, an dem ich gerade arbeite. Dieses Verzeichnis enthält die folgenden Unterordner:

.git/ 
.idea/ 
.sass-cache/ 
.tmp/ 
app/ 
node_modules/ 
phone/ 
test/ 

Und diese Dateien:

.bowerrc 
.gitattributes 
.gitignore 
.jshintrc 
Gruntfile.js 
Readme.md 
bower.json 
karma.conf.js 
npm-debug.log 
package.json 
todo.txt 

Wenn ich cd in das App-Verzeichnis und den gleichen Befehl versuchen, wenn ich Registerkarte traf die automatische Vervollständigung perfekt funktioniert.

Ich verwende VIM unter Windows. Ich habe die Pfadvariable auf .,,** auf meiner _vimrc-Datei (set path=.,,**) festgelegt.

Nun, hat jemand eine Idee, was passiert? Vielen Dank.

Antwort

2

AFAIK, :find verwendet eine verschwenderische depth-first-Strategie, die es in jedes Verzeichnis und jedes Unterverzeichnis, bevor er in das nächste Verzeichnis auf dem gleichen Niveau graben macht.

Frühere Versionen von npm waren berüchtigt für die mögliche Tiefe der node_module Verzeichnisstruktur, so dass es sehr wahrscheinlich ist, dass Ihr node_modules Verzeichnis als eine Falle fungiert, hier.

Da Sie wahrscheinlich in node_modules etwas nicht bearbeiten, möchte ich vorschlagen, dass Sie es zu Ihrem wildignore Option hinzufügen:

set wildignore+=*/node_modules/* 

Auch ** in set path=.,,** impliziert ,, so könnte man diesen Wert vereinfachen .,**.