Dans la vanille Emacs, je dois le faire C-x b
, puis taper manuellement le nom du tampon à permuter. Si j'oublie le nom du tampon, je dois taper TAB
pour lister les achèvements possibles. Est-ce que je peux faire quelque chose pour accélérer ce processus?
key-bindings
buffers
cycling
nixeagle
la source
la source
C-x C-<left/right>
pour changer rapidement de tampon. Lorsque j'ai besoin de passer à un tampon "plus éloigné", je l'utiliseIBuffer
.Réponses:
Il y a un mode ido qui devrait aider.
MODIFIER:
mettez ceci dans votre fichier init, pour activer le mode ido par défaut:
(ido-mode 1)
Maintenant,
C-x b
va vous montrer une liste de candidats.Mettez ceci dans votre fichier init, si vous préférez que les éléments soient affichés verticalement:
(setq ido-separator "\n")
Gracieuseté d' ergoemacs
Permettez-moi également de suggérer que cet article parle du passage au tampon précédent / suivant.
la source
J'ai récemment commencé à utiliser
C-x <left>
etC-x <right>
. Ce sont deux liaisons Emacs standard - rien à configurer. Left vous ramène au tampon précédent (initialement le même queC-x b RET
), mais vous le refait, vous amène au 3ème tampon le plus récemment visité. Si vous faites beaucoup de va-et-vient entre 3 ou 4 mémoires tampons, je trouve cela beaucoup plus facile que d'essayer de mémoriser les noms de mémoire tampon.De plus, je viens de découvrir
C-x C-<left>
et d’C-x C-<right>
être lié aux mêmes fonctions afin que vous puissiez simplement maintenir la touche Ctrl enfoncée et alterner entre x et les flèches pour parcourir les tampons. Pas mal!la source
Vous pouvez utiliser Helm .
Dans ma configuration, je suis passé
C-x b
pourM-l
. Cet alliéhelm-buffers-list
rend le processus assez rapide, du moins pour moi.la source
ido
ouiswitchb
ou desicicles
choses comme ça, mais ils sont fondamentalement obsolètes par Helm. Oui,ace-jump-buffer
c'est cool, mais ce n'est pas aussi rapide que Helm, car avant de savoir sur quelle touche appuyer, vous devez trouver le tampon dans la liste. Helm vous permet de réduire la liste avec quelques frappes que vous connaissez déjà (comme le nom du tampon). J'utiliseC-TAB
pour changer de tampon, charger des fichiers récents, des signets, etc. Rien n'est plus rapide.helm
. Mais je préfère utiliserhelm-mini
, qui vous montre aussiRecentf
àhelm-buffers-list
.ivy-switch-buffer
.Juste pour ajouter des réglages que j'utilise avec Ido déjà mentionné :
J'utilise également
ace-window
pour basculer entre les tampons etace-jump-mode
pour passer d' une fenêtre visible à une autre. Livré avec certains s'y habituer mais vaut la peine d'essayer.Je l'ai combiné avec
key-chord-mode
et frappéso
pour un saut rapide:Tous les packages mentionnés ci-dessus sont disponibles via le gestionnaire de packages de Melpa.
la source
use-package
parrequire
pour éviter toute confusion. Dans l'exemple donné, l'utilisateur n'a pas besoin d'installer un package supplémentaire pour implémenter cette solution.Comme @kuanyui le dit dans un commentaire,
next-buffer
&previous-buffer
sont très rapides, si vous ne disposez que de quelques mémoires tampons. (Pour plus que quelques-uns, et pour plus de fonctionnalités de choix de tampon, j'utiliseicicle-buffer
.)Toutefois, par défaut,
next-buffer
etprevious-buffer
sont sur une touche préfixe,C-x
.Cela signifie qu'ils ne sont pas répétables : vous ne pouvez pas simplement frapper
C-x <right> <right> <right>...
. Vous devez plutôt lier ces commandes à différentes clés pouvant être répétées, ou vous devez utiliserC-x <right> C-x <right> C-x <right>...
, ce qui n’est pas très rapide.Pour les versions répétables de ces commandes, chargez la bibliothèque
misc-cmds.el
et remappez les versions non répétables de la vanille sur celles répétables définies ici:(De même, dans la même bibliothèque, vous trouverez une version
undo
répétable même sur une clé de préfixe:.undo-repeat
)En passant, vous pouvez faire à peu près toutes les commandes répétables (même sur une touche de préfixe), en utilisant function
repeat-command
(frommisc-cmds.el
). C'est tout ce qui était nécessaire pour définir la version répétable denext-buffer
:la source
C-,
etC-.
pour gagner de la répétabilité, et quand vous y êtes, définissezC-x.
etC-x,
surother-window
et(lambda()(interactive)(other-window -1))
. Le cycle des fenêtres a probablement besoin de moins de répétabilité et vous vous évadez en une minute, sans forfait supplémentaire.next-buffer
etprevious-buffer
la meilleure solution, indépendamment de toute liaison de clé spécifique. Par conséquent mon commentaire.Je suis surpris personne n'a
iswitchb
encore mentionné . Il n’est peut-être pas aussi puissant queido
, mais bien avantido-mode
sa naissanceiswitchb-mode
était déjà standard pour emacs, et il est toujours utile de nos jours. Pour l'essayer il suffit de mettredans votre .emacs ou activer via
M-x iswitchb-mode
.la source
iswitchb
est obsolète depuis Emacs 24.4. Toutes ses fonctionnalités sont disponibles viaido
maintenant.Utilisez helm-buffer-list ou helm-mini pour sélectionner visuellement l'entrée de mémoire tampon et la correspondance floue. Il peut faire beaucoup de choses en dehors du changement de tampon. Vous devriez voir la démo dans le lien.
la source
D'autres ont évoqué des packages utiles pour simplifier la vie en ce qui concerne la commutation tampon / fenêtre / trame. (J'utilise personnellement
helm
ce qui est phénoménal.) Je souhaite discuter de modifications plus simples susceptibles de rendre l'expérience Emacs plus agréable.Pour moi, la solution à mes problèmes de tampon / trame (parce que je pense
C-x o
est le pire) n’était pas un paquet; c'était simplement:C-;
surother-window
(en passant par les fenêtres)C-'
surother-frame
(passage d'une image à l'autre). En fait, j’ai commencé à utiliser beaucoup plus de cadres après avoir ajouté ce raccourci).help
fenêtre qui s’ouvre (lors de la lecture de pages de manuel, à propos, etc.) quelle que soit la fenêtre précédemment visible).J'ai également pensé partager quelques réflexions sur les raccourcis clavier que les débutants pourraient trouver utiles. (Désolé si c'est le mauvais endroit.) Je n'ai pas de suggestions spécifiques, mais plutôt une "philosophie" qui me permet de conserver un ensemble efficace de combinaisons de touches pour moi-même.
Les commandes fréquemment utilisées ne méritent pas des raccourcis clavier faciles.
keyfreq.el
et voyez ce que vous utilisez vraiment beaucoup. J'utilise une méthode de survie du plus apte pour décider quelles commandes attribuent le meilleur rapport qualité-prix sur mon clavier.C-\
est un excellent raccourci (pour les raisons évoquées au point 2) ... et le laisser correspondre à sa commande par défaut serait un crimechange-input-method
. (Peut-être que certains d'entre vous l'utilisent beaucoup, ce n'est certainement pas le cas.)Les facteurs suivants déterminent la facilité et la rapidité d'un raccourci clavier (en commençant par le plus important):
Ctrl
,Meta
, etc.). Par exemple, il est beaucoup plus rapide pour moi de frapperC-c C-l C-p
que de frapperC-x o
. Je trouve personnellement très gênant de devoir retirer laCtrl
clé entre les touches successives d’une séquence de touches donnée; il est tellement plus facile de continuer à écraser le bouton de modification (dans ce cas,Ctrl
). (Cet exemple spécifique peut être influencé par le fait que j'ai remappé maCtrl
clé et maCaps-Lock
clé.)C-c C-l C-p
que de frapperC-p C-' C-;
. (Essayez-le et cela devrait être évident.) En règle générale, il est beaucoup plus facile d'utiliser des séquences de frappe qui utilisent des mains alternées (ou, au moins, des doigts alternés sur la même main).Juste quelques réflexions qui, selon moi, pourraient être utiles aux débutants. J'en ajouterai peut-être plus tard.
la source
J'utilise
windmove.el
etbs.el
pour changer de tampon rapidement. Les deux modes sont inclus avec Emacs.windmove.el
- bascule vers une fenêtre (un tampon actuellement affiché) dans une direction spécifiée, par exemple gauche, droite, haut, bas.bs.el
- J'utilisebs-cycle-next
etbs-cycle-previous
pour passer au tampon suivant qui n'est pas affiché dans une fenêtre.Vous pouvez windmove de configuration avec
(windmove-default-keybindings)
qui lieront les commandes appropriées àShift-Left Arrow
,Shift-Right Arrow
etc.Pour l'installation
bs.el
, quelque chose comme ceci fonctionnera:la source
windmove.el
trouve dans la page EmacsWiki "Changerbs.el
de tampon ", et fonctionne sur les tampons, pas sur les fenêtres.Le moyen le plus rapide de changer de tampon, à ma connaissance, est avec
ace-jump-buffer
. Un trait de touche ouvre le menu de la mémoire tampon, puis sélectionnez la lettre en regard de la mémoire tampon souhaitéeace-jump-line-mode
. Cela fonctionne mieux pour les 26 mémoires tampons les plus récentes. Pour basculer vers des mémoires tampons plus loin dans votre historique d’utilisation,ido-switch-buffer
c’est toujours un bon choix.la source
Je préfère la navigation par onglets de style navigateur. J'ai lié Ctrl + Tab et Ctrl + Maj + Tab aux tampons suivant et précédent respectivement:
la source
D'une manière générale, il existe 2 façons de changer de tampon et la plupart des solutions tomberont dans l'une d'elles.
C'est ce que
C-x b
fait par défaut. Ido vous donne une belle complétion automatique afin que vous n'ayez pas besoin de TAB TAB TAB. Des projets tels que helm, projectile, etc. vous facilitent la tâche en vous permettant de travailler avec des fichiers dans un projet, etc., et avec ido, ils peuvent être très utiles.Ceci est utile lorsque vous avez autant de tampons et que vous voulez une liste de tous. Vous pouvez monter et descendre dans la mémoire tampon et appuyer sur enter pour visiter un fichier particulier. Ibuffer est très bon pour ça.
J'utilise les deux et voici comment vous pouvez le configurer.
la source
Ajout à ido, j'ai la configuration suivante.
En cas de mode diabolique, utilisez les raccourcis clavier suivants pour changer de tampon.
Définissez le nom du tampon comme titre de la fenêtre. Cela vous aidera lors de la navigation avec les combinaisons de touches ci-dessus.
Si vous utilisez le mode maléfique, vous pouvez essayer
evil-leader
. Reliez les clés fréquemment utilisées au leader. par exemple, vous pouvez vous lierC-x b
à<leader>-b
.Lier le mode dir à
C-<f8>
. Maintenant, lorsque vous voulez ouvrir un fichier dans un répertoire, appuyez surC-<f8>
, naviguez jusqu'au nom du fichier et appuyez sura
au lieu deRET
. Le tampon ainsi dirigé sera tué immédiatement.Utilisez le
recentf
mode pour parcourir les fichiers récents.C-x C-r
Un dernier point important est - utilisez un clavier mécanique ergonomique. Ainsi, vous pouvez appuyer sur la touche "Ctrl" facilement et rapidement avec le poignet au lieu de vous faire mal.
J'espère que cela pourrait aider quelqu'un.
la source
Comme vous pouvez le constater dans les autres réponses, il existe de nombreuses façons de rationaliser cette tâche particulière. Personnellement, j'utilise Lusty Emacs en tant qu'appareil de commutation de mémoire tampon, car il gère assez bien la finition floue. Cela minimise le nombre de touches nécessaires à la sélection du nouveau tampon. Par exemple, il suffit de taper oxr pour basculer vers ox -veve.el , ou même juste la deuxième fois car il suit également l'historique des commutateurs.
la source
Si vous voulez simplement continuer à parcourir vos tampons, ajoutez ceci à votre fichier init:
Vous avez besoin du paquet bind-key et vous pouvez modifier les raccourcis clavier selon vos souhaits, mais j'ai trouvé ces raccourcis clavier les plus confortables. Avant d’ajouter ce fragment de code, vous devez demander à bind-key de,
la source
J'utilise C-Tab et CS-Tab comme des applications générales.
la source
Ce n’est pas une solution très élégante (car elle utilise des macros au lieu de fonctions) et elle ne dit pas comment passer rapidement à n’importe quel tampon, mais seulement comment accéder aux tampons récemment utilisés. Mais cela fonctionne très bien pour moi:
J'ai une série de macros à utiliser
ido-switch-buffer
pour accéder au tampon précédent, le tampon avant, le tampon avant, etc. Et j'ai lié ces macros à des liaisons de touches que je trouve commodes.Pour sauter au dernier tampon:
Pour passer à l'avant dernier tampon:
Pour accéder au tampon antépénultième:
Etc. (vous pouvez en redire autant
?\C-n
que vous le souhaitez, l'historique de la mémoire tampon visitée étant aussi lointain que vous le souhaitez).Il existe une fonction intégrée pour accéder au tampon précédent, mais l’avantage de l’utilisation de macros
ido-switch-buffer
est que vous pouvez personnaliser la variableido-ignore-buffers
pour supprimer les tampons spéciaux tels que*Messages*
ou*scratch*
ou tout autre tampon indésirable de la liste. De cette façon, les seuls tampons auxquels vous accédez sont ceux que vous souhaitez vraiment utiliser.la source
Sur ma machine virtuelle, Cx ALT-RIGHT / LEFT est trop lent. Je dois attendre que Cx soit enregistré dans la barre d'état avant de pouvoir faire autre chose. en plus c'est juste trop de clés. Donc, j'ai mappé C-TAB et CM-TAB dans les tampons next et prev comme c'est ce que je fais dans la plupart des programmes Windows de toute façon. C'est facile à faire depuis emacs:
M-x
vous amène à la barre d'état. Puis tapezglobal-set-key
qui vous demandera la séquence de touches que vous souhaitez lier (C-TAB
), puis la commande à laquelle vous souhaitez lier (next-buffer
). C'est ça!la source