10
votes

Autocmd Vérifiez le nom de fichier dans Vim?

Je veux écrire des autocmd qui vérifient si le nom de fichier est-ce ou que ..

J'ai essayé: xxx

mais rien de tout cela ne fonctionne?

Que dois-je faire?

(Cet exemple est trop simplifié, notez que je voudrais aussi avoir une déclaration d'autre).


4 commentaires

Je doute si Vimentateur est le meilleur événement pour déclencher cet autocmd. Vimeur se produit une fois lorsque vous démarrez une instance Vim et non après cela. Boufread arrive chaque fois qu'un tampon est ouvert, que Vim soit déjà ouvert ou non (et de même avec Bufnewfile).


Ouais je suis en train d'utiliser bufnew pour le faire fonctionner


Merci à tous pour vos réponses rapides!


C'est ce que j'utilise pour changer la palette de couleurs, sauf si le tampon actuel est un gonflement minibufexpl et il semble fonctionner: autocmd bufenter * Si Bufname ("%")! =? '-Minibufexplorer-' | ColorsCheme par défaut | endif


4 Réponses :


7
votes
autocmd BufRead,BufNewFile preamble Explore

2 commentaires

Ok cela fonctionne .. je voudrais aussi avoir une déclaration sinon . Est-ce possible?


@Romeoevs: pour effet d'un ele d'une manière consiste à créer un autre autocmd qui correspond à tout sauf 'préambule'. Je pense que cela le ferait: autocmd bubfread, bufnewfile [^ \ (préamble \)] Function_Here (voir ma réponse distincte pour info sur ce que vous faisiez mal et comment le logement de fichiers dans AutoCMD fonctionne. )



4
votes

Il y a deux problèmes avec les exemples de l'article original:

  1. ni le % ni et nom de fichier retournera le nom de fichier comme vous les avez utilisés.
    Regardez l'aide de la fonction Développer () pour voir comment obtenir le nom de fichier: : h Développer ()

  2. Vous ignorez la fente dans AutoCMD où un modèle de correspondance de fichier serait normalement spécifié. La troisième emplacement dans l'autocmd ( * dans vos versions) est en fait un motif pour correspondre aux noms de fichiers. Voir : H Autocmd-motifs . Cela devrait fonctionner correctement si vous souhaitez ignorer la fente de modèle, mais si oui, vous devez résoudre le problème au paragraphe 1 ci-dessus. E.g.,

    autocmd bufread, bufnewfile * Si Développer ('%') = ~ "Préambule" | Explorer | endif


0 commentaires

13
votes

Vous devez obtenir le nom du fichier actuel comme @% . Par ex., @% @% vous donnera le nom de fichier, alors que echo% ne sera pas. Toutefois, pour les actions sur le fichier, utilisez % , par ex. source% .

Cela devrait probablement fonctionner pour ce que vous voulez faire: xxx


1 commentaires

Est-il possible de faire plus d'une chose dans la partie «si» ou «autre»? par exemple. Autocmd Vimaler * Si @% == 'Préambule' | ECHO 'HELLO1'; Echo 'Hello2' | sinon | echo 'World1'; echo 'World2' | endif



2
votes

Informations supplémentaires en utilisant '@%' avec autocmd

Quelques Autocmd Events Ne pas prendre en charge le @% Nommé enregistrer pour lire le nom du fichier actuel. Dans ces cas, il est préférable d'utiliser : xxx


0 commentaires