Completamento del nome file con spazi


8

Ho molti file con spazi nei loro nomi e questo mi dà problemi. Se provo a completare la riga di comando per il comando find e viene visualizzato uno di questi file, Vim lo troverà, ma non verrà caricato perché gli spazi non sono salvati.

Esempio: sono già in vim e scrivo

:find fo<Tab>

Per completare foo bar.txt, Vim quindi lo trova e genera un errore perché prevede solo un nome file. Significa che ora legge

:find foo bar.txt

Che non si carica.

Esiste un modo per aggirare questo problema e Vim può sfuggire automaticamente agli spazi?

Sto usando VimTouch, che esegue Vim 7.3

Modifica: Di recente ho capito che Vim sfuggirà ai nomi dei percorsi per me, ma misteriosamente non lo farà per i nomi dei file.


1
Questa sembra essere una riga di comando piuttosto che un vimproblema (almeno, sembra che tu stia parlando di aprire una vimsessione piuttosto che eseguire qualcosa in vim); ma, comunque, metterebbe un "lavoro da protagonista ? Cioè, se si desidera completare il file tab a b, digitare vim "ae quindi tab, anziché vim ae quindi tab? (Non sono sicuro, perché, sia nella mia vim che nella mia shell, lo spazio viene automaticamente evaso al completamento della scheda.)
LSpice

1
Puoi elaborare esattamente cosa stai facendo? Che aspetto ha il tuo buffer? Quali comandi hai usato? Che cosa è successo esattamente ?
Martin Tournoij,

Ho modificato la domanda per chiarirla.
A Gold Man l'

Risposte:


1

: trova foo bar.txt

Questo comando cercherà 2 file contemporaneamente, cosa impossibile in vim. Questa è la causa del tuo errore.

Quando si ha a che fare con file che contengono spazio, è possibile aggiungere\ dopo ogni parola

così :find foo\ bar.txt

Ma questo metodo è un po 'imbarazzante poiché hai molti file

quindi ho modificato un comando per soddisfare le tue esigenze

Spero funzioni

Aggiungilo al tuo .vimrc

e utilizzare :Findper cercare e aprire file con spazi

" :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

Non correlato alla domanda posta, ma potrebbe essere di aiuto

Questo problema si presenta anche quando si salvano file con spazio al loro interno

come :w foo bar.txtdà errore

Per risolverlo

" :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

Aggiungi questo a .vimrc per usare :Wo :Saveper salvare i file con spazi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.