Finalización de nombre de archivo con espacios

8

Tengo muchos archivos que tienen espacios en sus nombres, y esto me está dando problemas. Si trato de completar la línea de comando para el comando find, y aparece uno de estos archivos, Vim lo encontrará, pero no se cargará porque no se escapan los espacios.

Ejemplo: ya estoy en vim y escribo

:find fo<Tab>

Para completar foo bar.txt, Vim lo encuentra y arroja un error porque solo espera un nombre de archivo. Lo que significa que ahora se lee

:find foo bar.txt

Lo que no se carga.

¿Hay alguna forma de evitar esto y hacer que Vim escape automáticamente de los espacios?

Estoy usando VimTouch, que ejecuta Vim 7.3

Editar: Recientemente me di cuenta de que Vim escapará de los nombres de ruta por mí, pero misteriosamente no lo hará por los nombres de archivo.

Un hombre de oro
fuente
1
Esto parece ser una línea de comandos en lugar de un vimproblema (al menos, parece que estás hablando de abrir una vimsesión en lugar de realizar algo vim); pero, de todos modos, ¿colocaría un "trabajo de liderazgo ? Es decir, si desea completar el archivo con pestañas a b, escriba vim "ay luego pestaña, en lugar de vim ay luego pestaña. (No estoy seguro, porque, en vim tanto mi y mi concha, el espacio se escapó automáticamente cuando pestaña de completar.)
LSpice
1
¿Puedes explicar qué estás haciendo exactamente ? ¿Cómo se ve tu búfer? ¿Qué comandos usaste? ¿Qué pasó exactamente ?
Martin Tournoij
Edité la pregunta para aclararla.
Un hombre de oro el

Respuestas:

1

: encontrar foo bar.txt

Este comando buscará 2 archivos a la vez, lo que no es posible en vim. Esta es la causa de tu error.

Cuando se trata de archivos que tienen espacio en ellos, puede agregarlos\ después de cada palabra

al igual que :find foo\ bar.txt

Pero este método es un poco incómodo ya que tienes muchos archivos

así que modifiqué un comando para satisfacer tus necesidades

Espero que funcione

Agréguelo a su .vimrc

y usar :Findpara buscar y abrir archivos con espacios

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

No está relacionado con la pregunta formulada, pero podría ser de alguna ayuda.

Este problema también se enfrenta al guardar archivos con espacio en ellos

como :w foo bar.txtda error

Para resolver eso

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

Agregue esto a .vimrc para usar :Wo :Savepara guardar archivos con espacios.

Ashok Arora
fuente