Tenho duas janelas abertas e divididas verticalmente (quadro único):
A) contém meu trabalho
B) contém dired ou ibuffer.
Gostaria de poder navegar para um arquivo / buffer no painel B e pressionar "o" para abri-lo no painel A. Isso é possível? No momento, o emacs está criando um novo painel na parte inferior do painel A para abrir o arquivo.
editar: de acordo com a lista de leis do usuário, o comportamento descrito acima ocorrerá quando o quadro for grande. Parece ser esse o meu caso, porque agora que estou em casa (não em um monitor externo, quadro menor), o emacs está se comportando como desejo. A questão agora é: posso impedir que o emacs abra uma nova janela quando o quadro atual for grande?
window
para se referir a um quadrante de buffer dentro do mesmoframe
. Aframe
é considerado todo o kitten-kaboodle, que pode ter muitas janelas dentro dele. O Emacs pode gerar vários quadros, com cada quadro contendo várias janelas.Respostas:
Aqui estão quatro (4) exemplos de
display-buffer
famílias de funções personalizadas que podem ser personalizadas de acordo com as necessidades específicas de um usuário - acima ; abaixo ; esquerda ; direita - e aqui estão quatro (4)interactive
funções para exibir o arquivo ou diretório da linha atual de umdired-mode
buffer. Existem apenas três condições: (a) se já houver uma janela exibindo o buffer de destino, escolha-o; (b) se houver uma janela na direção desejada disponível, use-a; (c) o objetivo é criar uma nova janela na direção desejada se as outras condições não forem atendidas.Uso:
M-x dired-display-above
M-x dired-display-below
M-x dired-display-left
M-x dired-display-right
Existem tantas combinações de teclas já embutidas
dired-mode
edired+
que não ouso tentar criar minhas próprias. O usuário é livre para escolher seus próprios atalhos de teclado, que estão além do escopo deste exemplo limitado.O usuário pode adicionar condições adicionais à
display-buffer
família de funções de amostra para lidar com mais situações - por exemplo, mais janelas do que apenas algumas.EDIT: Aqui está uma implementação um pouco mais sofisticada / divertida do conceito acima, que dá ao usuário a capacidade de usá-lo de maneira não interativa ou interativa ; por exemplo,
M-x dired-display-buffer
- onde o usuário será solicitado a escolher um diretório, se não passar o mouse sobre um arquivodired-mode
, e escolher uma direção de exibição (esquerda, direita, acima, abaixo).fonte
dired-mode-map
, vinculada ao
e depoishjkl
para exibição acima / abaixo / esquerda / direita?(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
pode ser usada no final de cadamy-display-buffer-...
função. Como você pode ver, o resultado / valor que é lançado no final da última linha éwindow
. Se você não precisa o resultado / valor a ser usado em conjunto com uma outra função, então é só embrulhar owindow
na última linha com isto:(select-window window)
. Faça isso com todas as quatro (4) funções - iemy-display-buffer-below
,;my-display-buffer-above
;my-display-buffer-left
; emy-display-buffer-right
.Sua pergunta não é clara e, portanto, corre o risco de ser encerrada. Você tem dois quadros ou um único quadro com duas janelas do Emacs? Sejam quais forem, se houver dois, cada um deles será dividido verticalmente? E o que você quer dizer com "dividir verticalmente"? O que você quer dizer com "painel"? O que você quer dizer com "it", em "tê-lo aberto no painel A"?
Um palpite é que você tem um único quadro do Emacs dividido em duas janelas do Emacs, A e B, com a janela A acima da janela B, a janela B é selecionada e a janela B está mostrando um buffer Dired.
o
está vinculado por padrão adired-find-file-other-window
. Se o acima palpite estiver correto, em seguida,o
em um nome de arquivo em B deve abrir em A. Isto é o que eu vejo quando se inicia Emacs sem um arquivo de inicialização:emacs -Q
. Você não vê isso?Se esse não for o cenário, descreva claramente o que você está fazendo, passo a passo, começando com
emacs -Q
.fonte
display-buffer
família de variáveis afetará outras situações ainda não previstas. Você pode personalizar odisplay-buffer-alist
, o que é um pouco confuso, mesmo para usuários experientes do Emacs. Existem variáveis que controlam quando dividir janelas e tamanhos mínimos de janelas, e a lista continua. Para conter o surto, você pode aconselhardired-find-file-other-window
com uma versão limitadadisplay-buffer-alist
, mas deixarei essa resposta para outro participante do fórum. Há uma variedade de soluções. :)NOTA : As seguintes variáveis são globais , o que significa que elas afetarão outras funções além disso
dired-find-file-other-window
. O usuário pode aconselhar a função em questão para não afetar globalmente outras funções. [No entanto, este autor deixará essa opção para outro participante do fórum.] Como alternativa, há outra resposta que este autor postou contendo funções personalizadas que podem ser usadas para não afetar mais nada.A variável
split-width-threshold
possui uma sequência de documentos que afirma:Definir o seguinte no
.emacs
arquivo alcançará o efeito desejado. O usuário também pode definir o valor para um número maior. O valor padrão é 160Aqui está um link para a seção relevante no manual:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Choice.html
Consulte também a variável relacionada
split-height-threshold
, que tem um valor padrão de 80A sequência de documentos declara:
fonte