2016-08-09 17 views
3

Eine meiner größten Schwierigkeiten bei der Arbeit in bash ist die chronisch gebrochenen Befehlsvervollständigungen. Es gibt Hunderte von programmierten Befehlsvervollständigungen, mehr wird jeden Tag geschrieben, einige von der Distro (ich benutze derzeit meist Ubuntu Linux) oder Upstream, und einige von Menschen in meiner Firma. Es ist unvermeidlich, dass zu jeder Zeit Dutzende von ihnen gebrochen sind. Ich akzeptiere das.Emergency Override von gebrochenen Befehlsabschlüssen in bash?

Was ich nicht akzeptiere, ist, wenn kaputte Befehlsvervollständigungen verhindern, dass ich Dateiname vervollständigen kann. Dateiname Vervollständigung ist wesentlich für meine Arbeitseffizienz; Wenn ich nicht darauf zugreifen kann, ist das extrem belastend und störend für meinen Workflow.

Für eine Weile habe ich einfach alle Befehlsabschlüsse deaktiviert, da ich beurteilt habe, dass eine zuverlässige Dateinamenergänzung für mich wichtiger ist als der Wert aller anderen Befehlsabschlüsse kombiniert.

Aber ... dann habe ich beschlossen, sie noch einmal zu versuchen, so dass anstelle der Sperrung sie alle, ich bin eine schwarze Liste diejenigen, die ich weiß, um gebrochen werden, eins nach dem anderen, in meinem .bashrc:

# 
# Blacklist for known broken command completions 
# 

    # Command completions prevent vim'ing .jpg files!? Not ok. 
    complete -r vi 
    complete -r vim 
    complete -r view 

    complete -r google-chrome # google-chrome ./myFil<tab> 

    # The rest of these are gratuitous strong evil magic 
    # that can't be killed by "complete -r", 
    # so stronger good magic "complete -F _minimal" is necessary instead. 
    complete -F _minimal ci # ci -l ./java<tab> when ./javacpp and ./javarenumber both exist but only javarenumber has been previously checked in 
    complete -F _minimal alias # alias pppp ~/<tab> 

die schwarze Liste funktioniert für mich, zum größten Teil, außer in diesem schrecklichen Moment, als ich einen anderen Befehl Abschluss entdecken erste wird gebrochen, als ich bin in der Mitte einen Dateinamen zu versuchen, schnell zu beenden. In diesem Moment brauche ich eine Art "Überbrückungsmechanismus für Notfälle".

Was für ich frage ist eine der folgenden Möglichkeiten:

  • (a) eine Möglichkeit, einen Schlüssel zu binden/Schlüssel Abschluss nur in Dateinamen, unter Umgehung programmierbare Befehlsvervollständigung
  • (b) einer So einen Schlüssel/Schlüssel zum vorübergehend programmierbaren Befehlsvervollständigung für den aktuellen Befehl, die I eingegeben habe teilweise
  • deaktivieren zu binden
  • (c) eine andere geschickte non-intrusive Weise bei Vervollständigung von Dateinamen auf dem I Moment zu erhalten entdecken, dass es durch einen programmierbaren Befehl ausgeblendet wird.

Antwort

1

Verwenden Alt + /. Es wird als Dateiname und nicht als programmierbare Ergänzung abgeschlossen.

Von man bash:

complete-filename (M-/) 
    Attempt filename completion on the text before point. 
+0

Fantastic! Das wird mein Leben wirklich erheblich verbessern. –