Tmux vergisst irgendwie das Präfix nach bestimmten Tastenkombinationen

701
Shivam

Ich habe das Standardpräfix nicht geändert C-b. Ich habe die folgende Schlüsselbindung in meine tmux.conf eingefügt

bind -n C-M-w send-keys M-w\; \ run-shell "tmux save-buffer - | xclip -i -selection clipboard" 

Grundsätzlich wollte ich, dass C-b [ich save-bufferim Kopiermodus auch in die Zwischenablage kopieren kann . Es funktioniert gut, aber nur zum ersten Mal. Und nachdem es einmal ausgeführt wurde, werden die prefixund andere Tastenkombinationen auf magische Weise gelöst . Ich weiß nicht, warum das so ist.

Ich habe ziemlich einfach tmux config wie folgt:

# 0 is too far from ` ;) set -g base-index 1  # Automatically set window title set-window-option -g automatic-rename on set-option -g set-titles on  #set -g default-terminal screen-256color set -g status-keys vi set -g history-limit 10000  setw -g mode-keys emacs setw -g mode-mouse on setw -g monitor-activity on  bind-key v split-window -h bind-key s split-window -v  bind-key J resize-pane -D 5 bind-key K resize-pane -U 5 bind-key H resize-pane -L 5 bind-key L resize-pane -R 5  bind-key M-j resize-pane -D bind-key M-k resize-pane -U bind-key M-h resize-pane -L bind-key M-l resize-pane -R  # Use Alt-vim keys without prefix key to switch panes bind -n M-h select-pane -L bind -n M-j select-pane -D  bind -n M-k select-pane -U bind -n M-l select-pane -R  # Use Alt-arrow keys without prefix key to switch panes bind -n M-Left select-pane -L bind -n M-Right select-pane -R bind -n M-Up select-pane -U bind -n M-Down select-pane -D  # Shift arrow to switch windows bind -n S-Left previous-window bind -n S-Right next-window  bind -n C-M-w send-keys M-w\; \ run-shell "tmux save-buffer - | xclip -i -selection clipboard"\; \ set -g prefix 'C-b'  # No delay for escape key press set -sg escape-time 0  # Reload tmux config bind r source-file ~/.tmux.conf 
1

1 Antwort auf die Frage

4
Ahed Eid

Einfach austauschen

bind -n C-M-w send-keys M-w\; \ run-shell "tmux save-buffer - | xclip -i -selection clipboard"\; \ set -g prefix 'C-b 

mit

bind -n C-M-w send-keys M-w\; \ run-shell "tmux save-buffer - | xclip -i -selection clipboard >> /dev/null "\; \ set -g prefix 'C-b 

Nachdem Sie sich mit diesem Problem befasst haben , bedanken wir uns bei Severyn Kozak, der / dev / null vorschlägt

Ich denke, das Problem in einigen Befehlen, die keinen Ausgabe- oder Beendigungsstatus wie xclip zurückgeben, so dass das Umleiten der Ausgabe nach / dev / null ausreicht, um aus dem Einfügepuffer in die Zwischenablage zu kopieren.

Ich konnte nicht verstehen, warum Sie die Befehlstasten und die Präfixbefehle verwenden. Für tmux 1.8+ sollten Sie stattdessen den Befehl copy-pipe verwenden, um den ausgewählten Text in den Puffer und die Zwischenablage zu kopieren

Kopieren Sie die Methode mit dem Emacs-Modus aus dieser Antwort und fügen Sie sie ein :

bind-key -n -t emacs-copy M-w copy-pipe "xclip -i -sel p -f | xclip -i -sel c " bind-key -n C-y run "xclip -o | tmux load-buffer - ; tmux paste-buffer" 

Verwenden des vi-Modus "Präfix C- [um in den Kopiermodus zu gelangen >> v um Text zu markieren >> y um Text in den Einfügepuffer und in die Zwischenablage zu kopieren >> Präfix p zum Einfügen":

set -g mode-keys vi bind -t vi-copy 'v' begin-selection bind -t vi-copy 'y' copy-pipe "xclip -i -sel clip" bind p paste-buffer