C-x 2
Emacsでは、C-x 3
(1つは別のものの上に)または(1つは別のものの横に)を使用してウィンドウを分割できます。
同じキーバインディングをどのように取得できますかtmux
?
また、ウィンドウが分割されると、emacsはウィンドウを循環させることができますC-x o
。tmux
同じキーを使用するように設定できますか?
答え1
これで夢が叶います。 https://github.com/tmux/tmux/issues/2904
私のユースケースは次のとおりです
- tmuxウィンドウにフォーカスがあるがemacsclientにない場合(たとえば、端末プロンプトで)、[Cx o]を使用して同じウィンドウの次のtmuxウィンドウに切り替えます。
- tmuxウィンドウにフォーカスとemacsclientがある場合集中する同様に、emacsに[Cx o]を処理させるようにしてください。
tmux.conf:
is_emacs='echo "#{pane_current_command}" | grep -iqE "emacs"'
bind -Temacs-keys o if-shell "$is_emacs" "send C-x; send" "select-pane -t :.+"
bind -Temacs-keys Any { send C-x; send }
bind -Troot C-x switch-client -Temacs-keys
初期化.el:
;;; Tmux integration (See tmux.conf for details).
(defun id/other-window ()
"Switch to the next window if opened, otherwise select next tmux pane."
(interactive)
(if (eq (next-window) (get-buffer-window))
(call-process "tmux" nil nil nil "select-pane" "-t" ":.+")
(other-window 1)))
(global-set-key [remap other-window] #'id/other-window)
答え2
私はこのtmux confを使って分割と同じ動作をシミュレートします。同じショートカットを使用してウィンドウを別のウィンドウに分割し、プレフィックスをCxに設定すると、選択ウィンドウはemacsのバッファ操作と同様に機能します。一度試してみて、より快適に感じるように自分で修正してみてください。
# remap prefix from 'C-b' to 'C-x'
unbind C-b
set-option -g prefix C-x
bind-key C-x send-prefix
# split panes using 3 and 2
bind 3 split-window -h
bind 2 split-window -v
unbind '"'
unbind %
# switch panes using Alt-arrow without prefix
bind Left select-pane -L
bind Right select-pane -R
bind Up select-pane -U
bind Down select-pane -D
# Enable switch session similar than emacs selecting buffer
unbind s
bind b choose-tree -w
# Kill window
bind k confirm kill-window
# Source the conf file
bind r source-file ~/.tmux.conf
# Use C-x 0 to close panel, similar than emacs when closing the splitted window
unbind 0
bind 0 kill-pane
答え3
必ず読むべき内容を確認してくださいhttp://pragprog.com/book/bhtmux/tmux;追加で必要なものを得ることができます。以下を試してください。
# Setting the prefix from C-b to C-d
# START:prefix
set -g prefix C-d
# END:prefix
# Ensure that we can send Ctrl-A to other apps
bind C-d send-prefix
# Free the original Ctrl-b prefix keybinding unbind C-b
unbind C-b
bind | split-window -h
bind _ split-window -v
これはウィンドウ間を移動するために使用されます。
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
どちらも前の参照とman
ページから取得されます。