Emacs와 동일한 키를 사용하여 tmux 창을 분할하시겠습니까?

Emacs와 동일한 키를 사용하여 tmux 창을 분할하시겠습니까?

C-x 2Emacs에서는 C-x 3(하나는 다른 것 위에) 또는 (하나는 다른 것 옆에)를 사용하여 창을 분할할 수 있습니다.

동일한 키 바인딩을 어떻게 얻을 수 있나요 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페이지에서 가져온 것입니다.

관련 정보