Dans Vim comment basculer rapidement entre .h et .rpc fichiers avec le même nom?
Supposons que j'ai un dossier avec beaucoup de .h et .fichiers cpp. J'ai souvent besoin de faire ce qui suit:
- ouvrir un fichier
prefix_SomeReallyLongFileName.h
, - faire quelques modifications,
- puis ouvrez
prefix_SomeReallyLongFileName.cpp
.
Je peux le faire à l'aide de :e <filename>
à l'aide de l'auto-complétion, mais comme le préfixe est de même pour la plupart des fichiers, cela devient gênant.
Est-il un moyen rapide pour ouvrir un fichier avec le même nom que le fichier en cours, mais une extension différente?
Faire d'autres gens viennent dans cette situation aussi, et si oui, quelle est votre façon préférée de la navigation sur le C++ fichiers dans un répertoire? Merci.
- Je ne suis pas sûr si cela arrive à beaucoup de gens. Habituellement, vous avez vos fichiers d'en-tête dans un autre dossier que les fichiers source (par exemple
include/
etsrc/
), de sorte à ce que vous demandez n'arrive pas (sauf à la recherche pour le fichier dans../include/
ou../src/
). Ce que j'ai l'habitude de faire est d'ouvrir deux bornes de, garder le fichier d'en-tête de l'ouvrir dans un, et que le fichier source à l'autre, puisque d'habitude, j'ai des aller-retours entre les fichiers. - Vous pouvez taper
:e
, puis appuyez sur ctrl-r %. Cela permettra de mettre le nom de fichier sur la ligne, puis vous pouvez remplacer l'extension. - Questions connexes à l'Aide d'un.vim pour C++ et script Vim pour basculer entre en-tête et la mise en œuvre de fichier à l'aide de cscope.
- différents répertoires superset: stackoverflow.com/questions/3385491/... || SU superuser.com/questions/313064/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
:r
(racine) de nom de fichier modificateur qui supprime la dernière extension (découvrez:h filename-modifiers
pour plus d'informations)où
%
est un raccourci pour le nom de fichier actuel.:r
supprime l'extension.cpp
simplement ajoute une chaîne à la fin.Effectivement cela remplace l'actuelle extension du fichier avec l'autre, puis ouvrez le fichier avec la nouvelle extension.
Encore plus court chemin (avec l'aimable autorisation de Peter Rincker),
La documentation pertinente à
:h extension-removal
a.c
,:e %:e.h
devientc.h
au lieu d'attendrea.h
:r
. Je vais corriger le post.:e %<.cpp
Selon le Vim wiki il y a quelques suggéré des façons.
Je vais décrire quelques options à partir de l'article:
:e %<.c
ou:e %<.h
.%<
représente le fichier en cours w/o l'extensionnnoremap <F4> :e %:p:s,.h$,.X123X,:s,.cpp$,.h,:s,.X123X$,.cpp,<CR>
. Ajoutez ceci à votre~/.vimrc
..h
et.cpp
mais aussi d'autres remplaçants et peut être personnalisé.tag
au lieu dee
. Cependant, il est dittag not found
. Est-ce parce qu'il est appelé à partir de la.vimrc
fichier et non pas à partir du fichier source?:e
sont complètement différentes commandes.:e
édite un fichier donné tout:tag
sauts pour un tag donné. La commande ci-dessus (la cartographie) prend le nom de fichier courant,%
, et s'applique à certains de substitution de la ruse pour changer.h
->.cpp
et.cpp
->.h
. Cela signifie que la commande pour passer d'un fichier source et un fichier d'en-tête (et en arrière de nouveau). En utilisant:tag
avec cette cartographie vous êtes à la recherche pour le nom de fichier avec l'extension mis à l'écart qui n'a pas de sens. Pour plus d'aider à voir:h :tag
,:h :e
, et:h c_%
.Installer “intacts” et ensuite utiliser
]f
et[f
pour aller de la précédente et de la suivante de fichier. Depuis la source et d'en-tête ont-ils même nom, sauf pour le suffixe, ils sont à côté et fichiers précédents.]f
et[f
seulement passer par les fichiers dans le répertoire courant. Si ce n'est répondre à l'OP de la question, mais ne va pas aider ceux qui divisent en-tête et de la source des fichiers dans des répertoires différents, etc.C'est seulement à l'aide de simple(?!) vimscript, de sorte que vous pouvez mettre dans votre
vimrc
,maintenant, il travaille pour
.c
fichiers, mais peut être modifié assez facilement pour.cpp
(évidemment), il a même certains "erreur de manipulation" dans l'intérieur de la si-états (qui est probablement inutile), mais si quelqu'un en a besoin, hé, il est là! Sans cela, il est beaucoup plus court (il suffit de laisser la:e %<.h
, par exemple), afin de choisir ce que vous voulez.alors ajouter d'autres à votre
vimrc
quelque chose le long de ces lignes:Maintenant, chaque fois que vous êtes en mode normal, vous appuyez sur la touche virgule
,
(c'est notre<Leader>
bouton) puish
et la fonction de la ci-dessus est appelée, et vous permettra de basculer entre les fichiers. Tada!https://github.com/ericcurtin/CurtineIncSw.vim est une option.
Une fois configuré recherche dans le répertoire courant de manière récursive et le répertoire de votre fichier source est dans la manière récursive pour le fichier que vous souhaitez basculer.