Emacsと同じキーを使ってtmuxウィンドウを分割しますか?

Emacsと同じキーを使ってtmuxウィンドウを分割しますか?

C-x 2Emacsでは、C-x 3(1つは別のものの上に)または(1つは別のものの横に)を使用してウィンドウを分割できます。

同じキーバインディングをどのように取得できますかtmux

また、ウィンドウが分割されると、emacsはウィンドウを循環させることができますC-x otmux同じキーを使用するように設定できますか?

答え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ページから取得されます。

関連情報