2012-06-08 10 views
11

Ich liebe Tmux und seinen Kopiermodus mit Vi-Befehlen, aber ich bin wirklich genervt von der Tatsache, dass dieser Modus weit davon entfernt ist, so effizient zu sein wie ein echter Vim.Tmux-Kopiermodus: Wie erstelle ich einen eigenen Befehl?

Zum Beispiel gibt es keine Tastenbindung, nur ein Wort (yw) zu kopieren, ich muss immer "zum Anfang eines Wortes gehen" "Beginne Auswahl", "gehe zum Ende des Wortes" dann "Auswahl beenden ". Viele Operationen, wenn ich nur in vim machen muss.

Ich suchte einen Weg, um meine eigenen "YW" -Befehl im Tmux-Kopiermodus zu erstellen. Das Verketten aller benötigten Operationen ist eine gute Idee, aber eine einfache Bindung mit Befehlen, die durch ; getrennt sind, funktioniert einfach nicht (Ähnliches funktioniert im Nichtkopiermodus). Gibt es etwas, das ich vermisse? Oder ist der Kopiermodus von Tmux nur begrenzt und nicht so skriptfähig wie ich es brauche?

+0

Wie haben Sie 'bind-key' aufgerufen? – chepner

+2

So etwas wie: bind-key -t vi-Kopie X vorheriges Wort \; Start-Auswahl \; nächstes Wort \; copy-selection – Jooj

Antwort

4

Ich habe dies in meinem tmux conf:

# vi-style controls in copy mode 
set-option -g status-keys vi 
set-window-option -g mode-keys vi 

# v and y like vi in copy-mode 
bind-key -t vi-copy 'v' begin-selection 
bind-key -t vi-copy 'y' copy-selection 

Jetzt, nachdem ich Kopie-Modus gehen kann leicht Wörter auswählen, indem Sie:

vw

und kopieren mit

y

In tmux müssen Sie wählen Sie etwas zu kopieren. Es gibt nichts Besseres als im normalen Modus zu kopieren, wie man es aus den üblichen vi/vim-Befehlen kennt. Leider können Sie nur einen Schlüssel (wie v oder y) für jedes tmux-Argument verwenden.

Sie können mehr über tmux der vi Bewegung finden Befehle hier: https://superuser.com/a/197272/57890

+0

Gibt es einen coolen tmux-Trick, um das "tartget" mit bind zu verwenden oder ist das nur etwas, das du lokal hast? – wonbyte

0

ein Patch für tmux Es gibt so dass Verfahren zu erstellen und binden, eine beliebige Anzahl von Aktionen für ‚Mode‘ Tastenanschläge: http://ershov.github.io/tmux/

2

Auf Upstream (2.4+) tmux Version dieses wurde geändert, um eine Bindung zu schaffen beginnen Auswahl müssen Sie -T und send-keys mit -X verwenden.

Weitere Informationen in tmux changelog.

Hier meine Bindungen für vi Kopiermodus als Beispiel:

# Bind `v` to trigger selection  
bind-key -T copy-mode-vi v send-keys -X begin-selection 

# Bind `y` to yank current selection 
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel 

# Rebind `mouse click + drag button release` to not jump away from context 
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection 

Wenn Sie Emacs Kopiermodus verwenden, sollten genug sein copy-mode-vi mit copy-mode ersetzen.

Verwandte Themen