Existe-t-il un moyen d'obtenir la gf
commande de vim (ou quelque chose de similaire) pour reconnaître un +{cmd}
argument pour les chemins de fichiers?
On peut démarrer vim et aller directement à un terme de recherche en faisant:
$ vim +/coding_effort ~/project/file
De même, en mode commande, vous pouvez faire:
:e +/coding_effort ~/project/file
Je prends souvent des notes et me réfère à d'autres fichiers comme celui-ci:
For more info see +/coding_effort ~/project/file where there's a detailed discussion.
J'adorerais pouvoir sélectionner +/coding_effort ~/project/file
, taper quelque chose comme gf
et que vim fasse la bonne chose.
key-bindings
command-line
search
Oliver Taylor
la source
la source
Réponses:
Non, le premier problème est que l'espace nécessaire entre la commande et le nom de fichier ne fait pas partie de l'
isfname'
option ' , et l'ajouter signifierait que les bordures de fichier ne pourraient pas être reconnues du tout. Vous devez soit toujours utiliser une sélection visuelle (à la fois de la commande et du nom de fichier), soit implémenter une analyse personnalisée dans unegf
surcharge de commandes.Deuxièmement, le intégré
gf
ne reconnaît pas la+{cmd}
syntaxe, il n'y a donc vraiment aucun moyen d'implémenter votre propre mappage personnalisé. Ceci est certainement possible ( en utilisant des fonctions commeexpand('<cfile>')
,getline()
, etc.), mais prend probablement quelques lignes de la fonction Vimscript.Si vous choisissez une syntaxe différente (
filename:+command
), vous pouvez conserver lesgf
commandes d' origine et implémenter le fractionnement dans un:autocmd
, semblable à ce que fait le plugin de fichier très lié : linefilespec:linenumber
).la source
Voici une fonction qui devrait reproduire le
gf
comportement intégré , et recherche également les œuvres commençant par+
qui sont ensuite transmises à:edit
Les commentaires devraient expliquer ce que fait la fonction plus en détail ... J'ai écrit cela dans le train le matin, et (évidemment) je ne l'ai pas testé de manière approfondie ;-)
la source
Une option serait (en supposant que le
+cmd file/path
est sélectionné) de copier la sélection dans un registre, puis d'insérer ce registre dans l'invite de commande. Je l'ai fait avec la cartographie suivante:vnoremap gsf "0y:e <c-r>0<cr>
la source
Cette notation fonctionne (
file name
+trailing :
+/ pat /
)avec fonction et cartographie ci-dessous.
la source