J'ai deux fenêtres ouvertes et divisées verticalement (un seul cadre):
A) contient mon travail
B) contient soit dired soit ibuffer.
Je voudrais pouvoir naviguer vers un fichier / tampon dans le volet B et appuyer sur "o" pour l'ouvrir dans le volet A. Est-ce possible? En ce moment, emacs crée un nouveau volet dans la partie inférieure du volet A pour ouvrir le fichier.
modifier: selon la loi de l'utilisateur, le comportement décrit ci-dessus se produit lorsque le cadre est grand. Cela semble être le cas pour moi car maintenant que je suis à la maison (pas sur un moniteur externe, un cadre plus petit), emacs se comporte comme je le souhaite. La question devient maintenant: puis-je empêcher emacs d'ouvrir une nouvelle fenêtre lorsque le cadre actuel est grand?
window
pour désigner un quadrant tampon dans le mêmeframe
. Aframe
est considéré comme l'ensemble du chaton-kaboodle, qui peut contenir de nombreuses fenêtres. Emacs peut générer plusieurs images, chaque image contenant plusieurs fenêtres.Réponses:
Voici quatre (4) exemples de
display-buffer
familles de fonctions personnalisées qui peuvent être personnalisées pour répondre aux besoins particuliers d'un utilisateur - ci - dessus ; ci-dessous ; gauche ; à droite - et voici quatre (4)interactive
fonctions pour afficher le fichier ou le répertoire de la ligne courante d'undired-mode
tampon. Il n'y a que trois conditions: (a) s'il existe déjà une fenêtre affichant le tampon cible, choisissez-le; (b) s'il existe une fenêtre disponible dans la direction souhaitée, alors utilisez-la; (c) le fourre-tout est de créer une nouvelle fenêtre dans la direction souhaitée si les autres conditions ne sont pas remplies.Usage:
M-x dired-display-above
M-x dired-display-below
M-x dired-display-left
M-x dired-display-right
Il y a tellement de raccourcis clavier déjà intégrés à
dired-mode
etdired+
que je n'ose pas essayer de créer le mien. L'utilisateur est libre de choisir ses propres raccourcis clavier, ce qui dépasse le cadre de cet exemple limité.L'utilisateur est libre d'ajouter des conditions supplémentaires à l'exemple de
display-buffer
famille de fonctions pour gérer plus de situations - par exemple, plus de fenêtres qu'un couple.EDIT: Voici une implémentation légèrement plus sophistiquée / amusante du concept ci-dessus, qui donne à l'utilisateur la possibilité de l'utiliser de manière non interactive ou interactive ; par exemple,
M-x dired-display-buffer
- où l'utilisateur sera invité à choisir un répertoire s'il ne survole pas un fichier dansdired-mode
, et à choisir une direction d'affichage (gauche, droite, dessus, dessous).la source
dired-mode-map
, lié ào
puishjkl
pour l'affichage au-dessus / en dessous / à gauche / à droite?(defhydra dired-open (dired-mode-map "O" :exit t) "dired-open" ("j" dired-display-below "below") ("k" dired-display-above "above") ("h" dired-display-left "left") ("l" dired-display-right "left"))
select-window
peut être utilisée à la fin de chaquemy-display-buffer-...
fonction. Comme vous pouvez le voir, le résultat / valeur qui est jeté à la fin sur la toute dernière ligne estwindow
. Si vous n'avez pas besoin du résultat / valeur à utiliser conjointement avec une autre fonction, puis juste envelopper lawindow
sur la dernière ligne avec ceci:(select-window window)
. Faites cela avec les quatre (4) fonctions - c'est-à-diremy-display-buffer-below
;my-display-buffer-above
;my-display-buffer-left
; etmy-display-buffer-right
.Votre question n'est pas claire et risque donc d'être fermée. Avez-vous deux cadres ou un seul cadre avec deux fenêtres Emacs? Quels qu'ils soient, s'il y en a deux, chacun d'eux est-il divisé verticalement? Et que voulez-vous dire par "diviser verticalement"? Qu'entendez-vous par un "volet"? Que voulez-vous dire par "il", dans "l'ouvrir dans le volet A"?
Une supposition sauvage est que vous avez un seul cadre Emacs qui est divisé en deux fenêtres Emacs, A et B, avec la fenêtre A au-dessus de la fenêtre B, la fenêtre B est sélectionnée et la fenêtre B affiche un tampon fatigué.
o
est lié par défaut àdired-find-file-other-window
. Si ce qui précède est correcte conjecture sauvage puiso
sur un nom de fichier B devrait ouvrir en A. C'est ce que je vois lors du démarrage Emacs sans fichier init:emacs -Q
. Ne voyez-vous pas cela?Si ce n'est pas le scénario, veuillez décrire clairement ce que vous faites, étape par étape, en commençant par
emacs -Q
.la source
display-buffer
famille de variables affectera d'autres situations non encore prévues. Vous pouvez personnaliser ledisplay-buffer-alist
, ce qui est quelque peu déroutant même pour les utilisateurs expérimentés d'Emacs. Il existe des variables qui contrôlent quand diviser les fenêtres et les tailles minimales des fenêtres, et la liste s'allonge encore et encore. Pour contenir l'épidémie, vous pouvez conseillerdired-find-file-other-window
une version reliée de ladisplay-buffer-alist
, mais je laisserai cette réponse à un autre participant au forum. Il existe différentes solutions. :)REMARQUE : les variables suivantes sont globales , ce qui signifie qu'elles affecteront d'autres fonctions en plus
dired-find-file-other-window
. L'utilisateur peut souhaiter conseiller la fonction en question afin de ne pas affecter globalement les autres fonctions. [Cependant, cet auteur laissera cette option à un autre participant au forum.] Alternativement, il y a une autre réponse que cet auteur a postée, contenant des fonctions personnalisées qui peuvent être utilisées pour ne rien affecter d'autre.La variable
split-width-threshold
a une doc-string qui indique:Le réglage de ce qui suit dans le
.emacs
fichier produira l'effet souhaité. L'utilisateur peut également définir la valeur sur un nombre supérieur. La valeur par défaut est 160Voici un lien vers la section pertinente du manuel:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Choice.html
Voir aussi la variable associée
split-height-threshold
, qui a une valeur par défaut de 80La doc-string indique:
la source