tmux bind-key com duas chaves

3

Em ~/.tmux.conf , com

 bind-key v split-window "vim"

Eu posso iniciar o vim em uma janela dividida.

como eu posso usar duas chaves em um tmux bind-key ?
Exemplo:

 bind-key vG split-window "vim +$"
    
por juanpablo 09.07.2012 / 17:11

4 respostas

5

Você não pode. tmux permite apenas ligações de teclas únicas (sozinho, usando bind-key -n ou seguindo a chave de prefixo).

No entanto, você pode tentar vincular "v" a uma invocação de command-prompt :

bind-key v command-prompt "tmux-vim.bash %%"

onde tmux-vim.bash é parecido com

if [ $1 = "G" ]; then
    tmux split-window "vim +$"
fi

Depois de digitar v para acessar o prompt de comando, basta digitar "G" e pressionar Enter. "G" seria passado como argumento para tmux-vim.bash , e esse script cuidaria de executar o comando tmux que você (originalmente) queria associar a "vG".

    
por 09.07.2012 / 17:47
4

Como @chepner disse, você não pode fazer isso diretamente . O que você pode fazer é ligar v para criar uma ligação para G que faz o que você quer e depois se desvincula.

bind-key v bind-key -n G split-window "vim +$" \; unbind -n G

Há algumas coisas importantes a serem observadas com essa abordagem:

  1. Isso entrará em conflito com as ligações de nível superior existentes (nesse caso, G ); Se você quiser ter algo vinculado a G e outra coisa vinculada a vG , sua etapa de desvinculação precisa restaurar a vinculação original.
  2. tmux será segmentado se o seu .tmux.conf incluir uma instrução bind-key que seja muito longa. Se isso se tornar um problema, você pode contorná-lo colocando seu contexto alternando em scripts bash e, em seguida, vinculando uma chave para executar esses scripts.

Para um exemplo mais envolvido, veja esta essência .

    
por 23.05.2014 / 00:46
0

Além da abordagem command-prompt sugerida nas outras respostas, você pode ter um segundo conjunto de mapeamentos usando um prefixo diferente:

     prefix key
         Set the key accepted as a prefix key.

     prefix2 key
         Set a secondary key accepted as a prefix key.

Assim, você pode fazer o seguinte:

set -g prefix C-v
bind-key G split-window "vim +$"

para mapear para c-v g em vez de c-b vG . A desvantagem é que ele irá sombrear qualquer mapeamento padrão, pois ele também estará acessível através de c-b g .

    
por 14.08.2014 / 15:48
0

Resposta

Existe apenas uma solução certa para isso:

    # you can use "vim +$" as well, but I don't think that +$ prefix have any sense without the file path argument...
    bind -T multiKeyBindings G split-window "vim" 
    bind v switch-client -T multiKeyBindings

Se você quiser a possibilidade de passar argumentos personalizados, use este:

    bind -T multiKeyBindings G command-prompt 'split-window "vim %%"'
    bind v switch-client -T multiKeyBindings

Mais exemplos:

    # Toggle maximizing of current pane by typing PREFIX mm 
    bind -T multiKeyBindings m resize-pane -Z
    bind m switch-client -T multiKeyBindings

    # or without PREFIX
    bind -T multiKeyBindings m resize-pane -Z
    bind -n m switch-client -T multiKeyBindings

    # rename current window by typing PREFIX mr
    bind -T multiKeyBindings r command-prompt 'rename-window %%'
    bind -n m switch-client -T multiKeyBindings

A coisa notável

Você deve usar o nome de um único tablet para cada atalho de teclado. Exemplo:

    bind -T multiKeyBinding1 G split-window "vim"
    bind v switch-client -T multiKeyBinding1

    bind -T multiKeyBinding2 m resize-pane -Z
    bind -n m switch-client -T multiKeyBinding2
    
por 05.11.2017 / 12:34

Tags