Achèvement du nom de fichier avec des espaces

8

J'ai beaucoup de fichiers qui ont des espaces dans leurs noms, et cela me pose des problèmes. Si j'essaie de terminer la ligne de commande pour la commande find et que l'un de ces fichiers s'affiche, Vim le trouvera, mais il ne se chargera pas car les espaces ne sont pas échappés.

Exemple: je suis déjà dans vim et je tape

:find fo<Tab>

Pour terminer foo bar.txt, Vim le trouve ensuite et génère une erreur car il n'attend qu'un seul nom de fichier. Ce qui signifie qu'il lit maintenant

:find foo bar.txt

Qui ne se charge pas.

Existe-t-il un moyen de contourner ce problème et que Vim s'échappe automatiquement des espaces?

J'utilise VimTouch, qui exécute Vim 7.3

Edit: J'ai récemment réalisé que Vim échappera aux noms de chemin pour moi, mais mystérieusement ne le fera pas pour les noms de fichiers.

Un homme d'or
la source
1
Cela semble être une ligne de commande plutôt qu'un vimproblème (au moins, il semble que vous parlez d'ouvrir une vimsession plutôt que d'effectuer quelque chose vim); mais, de toute façon, placer un "travail de premier plan ? Autrement dit, si vous voulez un fichier de tabulation complète a b, tapez vim "apuis tabulation, plutôt que vim aet puis tabulation? (Je ne suis pas sûr, car, à la fois dans mon vim et dans mon shell, l'espace s'échappe automatiquement à la fin de la tabulation.)
LSpice
1
Pouvez-vous préciser ce que vous faites exactement ? À quoi ressemble votre tampon? Quelles commandes avez-vous utilisées? Que s'est-il passé exactement ?
Martin Tournoij
J'ai édité la question pour la clarifier.
Un homme d'or

Réponses:

1

: trouver foo bar.txt

Cette commande recherchera 2 fichiers à la fois, ce qui n'est pas possible dans vim. C'est la cause de votre erreur.

Lorsque vous traitez des fichiers qui contiennent de l'espace, vous pouvez ajouter\ après chaque mot

ainsi :find foo\ bar.txt

Mais cette méthode est un peu délicate car vous avez beaucoup de fichiers

j'ai donc modifié une commande selon vos besoins

Esperons que ça marche

Ajoutez-le à votre .vimrc

et utiliser :Findpour rechercher et ouvrir des fichiers avec des espaces

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

Pas lié à la question posée mais pourrait être utile

Ce problème est également rencontré lors de l'enregistrement de fichiers avec de l'espace en eux

comme :w foo bar.txtdonne une erreur

Pour résoudre ça

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

Ajoutez-le à .vimrc pour l'utiliser :Wou :Savepour enregistrer des fichiers avec des espaces.

Ashok Arora
la source