tmuxには、さまざまな種類のメニューを生成できる主キーバインディングがたくさんあります。明らかに、これらのキーバインディングは表示されるメニュー全体のコードを開きます。
bind-key -T prefix < display-menu -T "#[align=centre]#{window_index}:#{window_name}" -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window }
非常に役に立つと思いますが、それらのいくつかを別のキーに移動したいと思います(例:とを、および<
に>
移動したい)。しかし、メニュー定義全体を自分の設定にコピーすることは、アップストリームが変わるかどうかはわかりませんので、次善のようです。[
]
私の定義を複製せずに既存のtmuxキーバインディングを別のキーに「移動」する方法はありますか.tmux.conf
?
答え1
tmux list-keys
.tmux.conf
ソースとして選択したファイル内または内部で再利用可能な出力を生成します(または少なくとも生成する必要があります)(例:use source-file
)。
アイデアは、 から出力を取得して にtmux list-keys -T prefix "<"
渡し、最後に に供給することです(「標準入力から読むもの」と解釈されます)。シェルでは、次のコマンドを使用してこれを実行できます。sed
<
[
tmux source-file -
-
tmux list-keys -T prefix "<" | sed "1 s/</[/" | tmux source-file -
.tmux.conf
パイプを設定するにはまだシェルが必要なので、以下を使用してくださいrun-shell
。
run-shell 'tmux list-keys -T prefix "<" | sed "1 s/</[/" | tmux source-file -'
この場合、最初の行の最初の行をsed "1 s/</[/"
変更することをお勧めします。<
ただし、キーがある場合は、i
likeを使用しての一致sed "1 s/ i / [ /"
を避ける必要があります。あるいは、場合によっては、構文全体を検索して置き換える必要があります。また、一部の文字は正規表現で特別であることに注意してください。とにかく必要な変更を加えるコマンドを書くことができれば、このアプローチはうまくいくでしょう。i
bind-key
-T prefix …
sed