Dateinamenvervollständigung mit Leerzeichen

8

Ich habe viele Dateien, deren Namen Leerzeichen enthalten, und dies gibt mir Probleme. Wenn ich versuche, die Befehlszeile für den Befehl find zu vervollständigen, und eine dieser Dateien angezeigt wird, wird sie von Vim gefunden, aber nicht geladen, da die Leerzeichen nicht maskiert werden.

Beispiel: Ich bin bereits in vim und tippe

:find fo<Tab>

Zum Abschluss foo bar.txtfindet Vim es und gibt einen Fehler aus, da nur ein Dateiname erwartet wird. Das heißt, es lautet jetzt

:find foo bar.txt

Welches nicht lädt.

Gibt es eine Möglichkeit, dies zu umgehen und Vim automatisch aus den Räumen entkommen zu lassen?

Ich verwende VimTouch, auf dem Vim 7.3 ausgeführt wird

Bearbeiten: Ich habe kürzlich festgestellt, dass Vim Pfadnamen für mich entkommen wird, aber auf mysteriöse Weise nicht für Dateinamen.

Ein Goldmann
quelle
1
Dies scheint eher eine Befehlszeile als ein vimProblem zu sein (zumindest klingt es so, als würden Sie über das Öffnen einer vimSitzung sprechen, anstatt etwas auszuführen vim). aber würde trotzdem eine führende "Arbeit platzieren? Das heißt, wenn Sie Tabula komplette Datei möchten a b, geben vim "aund dann auf die Registerkarte, statt vim aund dann Reiter? (Ich bin nicht sicher, weil sowohl in meinem vim als auch in meiner Shell das Leerzeichen automatisch
ausgeblendet
1
Können Sie näher erläutern, was genau Sie tun? Wie sieht Ihr Puffer aus? Welche Befehle haben Sie verwendet? Was genau ist passiert?
Martin Tournoij
Ich habe die Frage bearbeitet, um sie zu klären.
Ein

Antworten:

1

: finde foo bar.txt

Dieser Befehl sucht nach 2 Dateien gleichzeitig, was in vim nicht möglich ist. Dies ist die Ursache Ihres Fehlers.

Wenn Sie mit Dateien arbeiten, in denen Speicherplatz vorhanden ist, können Sie nach jedem Wort anhängen\

wie so :find foo\ bar.txt

Diese Methode ist jedoch etwas umständlich, da Sie viele Dateien haben

Deshalb habe ich einen Befehl an Ihre Bedürfnisse angepasst

Hoffe, es funktioniert

Fügen Sie es Ihrer .vimrc hinzu

und verwenden :Find, um Dateien mit Leerzeichen zu suchen und zu öffnen

" :Find will escape a file name and open it
command! -bang -nargs=* Find :call Find(<q-bang>, <q-args>) 
function! Find(bang, filename) 
    :exe "find".a:bang." ". fnameescape(a:filename) 
endfu

Nicht im Zusammenhang mit der gestellten Frage, könnte aber hilfreich sein

Dieses Problem tritt auch beim Speichern von Dateien mit Speicherplatz auf

wie :w foo bar.txtgibt Fehler

Um das zu lösen

" :W and :Save will escape a file name and write it
command! -bang -nargs=* W :call W(<q-bang>, <q-args>) 
command! -bang -nargs=* Save :call Save(<q-bang>, <q-args>)

function! W(bang, filename) 
    :exe "w".a:bang." ". fnameescape(a:filename) 
endfu

function! Save(bang, filename) 
    :exe "save".a:bang." ". fnameescape(a:filename) 
endfu

Fügen Sie dies zu .vimrc hinzu, um Dateien mit Leerzeichen zu verwenden :Woder :Savezu speichern.

Ashok
quelle