L'une des principales fonctionnalités qui me manquent à propos de Vim, c'est qu'il enregistre toujours le nom du fichier actuel dans le %
tampon ( plus d'informations ). Cela permet de lancer facilement des commandes comme:
;; compile current file
:! gcc %
;; source current file (useful when I'm editing .vimrc
:source %
;; get the size of current file
:! du -sh %
;; etc, etc...
Je voudrais avoir des fonctionnalités similaires sous emacs
(version 24, si cela fait une différence), à savoir avoir un moyen facile d'insérer le nom du fichier ouvert dans le tampon actuel.
Exemples de ce que je veux faire
Ici, je décris quelques cas d'utilisation de base pour mieux expliquer quand je ressens le besoin d'un tel raccourci
Compiler: lorsque j'entre dans
M-x compile
emacs, il me demande une commande de compilation. Je voudrais entrergcc (current-buffer)
facilement.Charger le fichier: Lorsque je modifie mon fichier .emacs, je voudrais le charger immédiatement pour tester les modifications. La façon dont je le fais est
M-x load-file
puis j'épelle toujours le nom . e m a c s. J'aimerais avoir un raccourci.Lancer des processus externes: j'ai donné
du -sh
comme exemple, seulement pour illustrer que je veux que le raccourci soit également disponible lorsque j'exécute des commandes shell avecM-!
Ce que j'ai trouvé jusqu'à présent
- Cette question ici sur U&L. Les réponses données montrent essentiellement où trouver le nom de fichier d'un tampon afin que l'on puisse l'ajouter au kill-ring. Ce n'est pas exactement ce que je recherche, je ne veux pas avoir à tuer manuellement le nom de fichier avant de l'utiliser. (De plus, les solutions décrites dans les deux réponses ne semblent pas fonctionner aussi bien dans mes emacs et nécessitent des touches supplémentaires, ce qui les rend un peu pénibles).
EDIT : Un peu sans rapport, j'ai découvert pourquoi ces solutions ne fonctionnent pas. J'ai activé IDO, pour le meilleur ou pour le pire.
- La
(current-buffer)
fonction décrite dans le manuel renvoie le nom du fichier dans le tampon actuel, mais nulle part dans les exemples que j'ai donnés ci-dessus, j'évalue le code elisp. Existe-t-il un moyen d'insérer le résultat de l'évaluation de cette fonction dans un (mini) tampon et de le lier de cette façon à un raccourci?
Ai-je tort de penser de cette façon?
J'apprends actuellement à utiliser emacs (cela fait en fait quelques mois) après des années d'utilisation de Vim. Je veux éviter un piège prévisible utilisant-emacs-in-a-Vim-way . Si vous pensez que ce que je demande n'est pas très émacieux , et qu'il devrait y avoir une meilleure façon (plus propre?) De le faire, veuillez le mentionner dans vos réponses.
(global-set-key (kbd "C-i") buffer-file-name)
si vous souhaitez que ce soit Ctrl + I. À propos de .emacs,M-x load-file RET
fait ce que vous voulez; vous n'avez pas besoin d'écrire quoi que ce soit.(buffer-file-name)
pendant que vous tapez le mini-tampon, vous obteneznil
, car(current-buffer)
c'est le mini-tampon. Vous pouvez également changer de tampon lorsque vous êtes dans le mini-tampon, il est donc difficile de savoir quel tampon est ce que vous pensez du tampon actuel au moment où le tampon actuel, comme Emacs le voit, est le mini-tampon.Réponses:
Vous pouvez mettre une fonction comme suit dans votre .emacs et la lier à n'importe quelle touche que vous aimez.
Voir aussi cette question , elle semble être similaire.
la source
Une légère variante de la réponse de @ easyb consiste à copier le chemin vers votre kill ring au lieu de le placer dans votre tampon (utile pour les fichiers en lecture seule):
la source