- Choose mode, which allows an item to be chosen from a list. This may be a client, a session or window or pane, or a buffer. This mode is entered with the choose-buffer, choose-client and choose-tree commands.
E se olharmos para o choose-tree
comando:
The following keys may be used in tree mode:
Key Function
Enter Choose selected item
Up Select previous item
Down Select next item
+ Expand selected item
- Collapse selected item
M-+ Expand all items
M-- Collapse all items
x Kill selected item
X Kill tagged items
< Scroll list of previews left
> Scroll list of previews right
C-s Search by name
m Set the marked pane
M Clear the marked pane
n Repeat last search
t Toggle if item is tagged
T Tag no items
C-t Tag all items
: Run a command for each tagged item
f Enter a format to filter items
H Jump to the starting pane
O Change sort field
r Reverse sort order
v Toggle preview
q Exit mode
Especificamente, eu também gostaria de vincular C-c
ao Exit mode
, assim como q
já está.
Ao contrário do modo de cópia, modo de cópia-vi e root, não há tabela de chaves para este chamado "modo de escolha". Então isso é possível?
Parece que em um modo (diferente de
copy-mode
*) aroot
tabela chave é relevante; mais as chaves específicas do modo (como o que você citou na pergunta), mas aroot
tabela de chaves é aplicada primeiro.Isso significa que se fizermos a
root
conversão da tabela-chaveC-c
paraq
quando estiver no modo, o modo reagirá ao nosso Ctrl+ ccomo reage ao q.Podemos converter
C-c
paraq
condicionalmente. Esta é uma linha para~/.tmux.conf
:Lembre-se de que o arquivo é analisado quando um servidor tmux é iniciado. Para afetar nosso servidor já em execução, precisamos passar o comando para o tmux (por exemplo,
tmux bind-key …
em um shell dentro do tmux) ou recarregar o arquivo alterado ( prefix:source-file ~/.tmux.conf
Enter).Ao Ctrl+ ca ligação detecta se o painel atual está em
tree-mode
(-F '#{==:#{pane_mode},tree-mode}'
). Se sim, ele enviaq
(send-keys q
); caso contrário, ele enviaC-c
(send-keys C-c
) pois não queremos perder a funcionalidade de Ctrl+ cquando não estiver no modo.Para aprender o nome formal de outro modo, podemos fazer o seguinte:
echo "$TMUX_PANE"
. Suponha que a saída seja%0
.tmux display-message -t %0 -p '#{pane_mode}'
, onde%0
está a saída da etapa 1.Eu identifiquei
view-mode
,tree-mode
,client-mode
,buffer-mode
, e (que se destaca no contexto da sua pergunta, veja a nota de rodapé *)options-mode
. Pode haver outros.clock-mode
copy-mode
Para detectar mais de um modo, precisamos de alguma lógica. Exemplo:
Se quisermos converter
C-c
paraq
em todos os modos*, usaremos a seguinte linha:* Para
copy-mode
aroot
tabela chave (-T root
) parece irrelevante. Como você notou, uma tabela separadacopy-mode
(oucopy-mode-vi
) é usada no modo de cópia.