Je veux écrire des autocmd qui vérifient si le nom de fichier est-ce ou que ..
J'ai essayé: p> mais rien de tout cela ne fonctionne? P> Que dois-je faire? p> (Cet exemple est trop simplifié, notez que je voudrais aussi avoir une déclaration d'autre). P> P>
4 Réponses :
autocmd BufRead,BufNewFile preamble Explore
Ok cela fonctionne .. je voudrais aussi avoir une déclaration sinon code>. Est-ce possible?
@Romeoevs: pour effet d'un ele code> 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 code> (voir ma réponse distincte pour info sur ce que vous faisiez mal et comment le logement de fichiers dans AutoCMD fonctionne. )
Il y a deux problèmes avec les exemples de l'article original: P>
ni le 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 ( % code> ni et nom de fichier code> retournera le nom de fichier comme vous les avez utilisés.
Regardez l'aide de la fonction Développer () code> pour voir comment obtenir le nom de fichier: : h Développer () code> p>
li>
* code> dans vos versions) est en fait un motif pour correspondre aux noms de fichiers. Voir : H Autocmd-motifs code>. 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., P>
autocmd bufread, bufnewfile * Si Développer ('%') = ~ "Préambule" | Explorer | endif code> p>
li>
ol>
Vous devez obtenir le nom du fichier actuel comme Cela devrait probablement fonctionner pour ce que vous voulez faire: p> @% code>. Par ex., @% @% code> vous donnera le nom de fichier, alors que echo% code> ne sera pas. Toutefois, pour les actions sur le fichier, utilisez % code>, par ex. source% code>.
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 code>
Quelques Autocmd code> Events Ne pas prendre en charge le @% code> Nommé enregistrer pour lire le nom du fichier actuel. Dans ces cas, il est préférable d'utiliser
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 code> pour le faire fonctionnerMerci à 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 code>