2012-06-08 28 views
11

私はVmコマンドでTmuxとそのコピーモードが大好きですが、実際のVimほど効率的ではありません。Tmuxのコピーモード:独自のコマンドを作成する方法は?

たとえば、単語(yw)をコピーするだけのキーバインディングはありません。「単語の先頭に移動する」「選択を開始する」「単語の最後に移動してから選択を終了する」 "私はvimでywをやる必要があるときの操作の多く。

Tmuxコピーモードで自分自身の "yw"コマンドを作成する方法を検索しました。必要なすべての操作を連鎖させるのは良い考えですが、;で区切られたコマンドで簡単にバインドすることはできません(非コピーモードでも同様のことができます)。私が見逃しているものはありますか?またはTmuxのコピーモードは制限されていて、私が必要とするようなスクリプトではないのですか?

+0

「バインドキー」とはどのように見えましたか? – chepner

+2

何かのように: バインドキー-t vi-copy X先行単語\;開始選択\;次の単語\;コピー選択 – Jooj

答えて

4

私は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 

今、私は簡単で単語を選択することができ、コピーモードを行く後:

wが

Vそして

でコピー

y

tmuxでは、を選択する必要があります。をコピーしてください。通常のvi/vimコマンドから知っているように、ノーマルモードでコピーするようなものはありません。残念ながら、のいずれかのキー(たとえばvまたはyなど)をすべてのtmux引数に対してのみ使用できます。

あなたはtmuxはのviの運動についての詳細を見つけることができ、ここでコマンド:https://superuser.com/a/197272/57890

+0

バインドで「tartget」を使うのにクールなtmuxトリックがありますか、これはあなたがローカルに持っているものですか? – wonbyte

0

プロシージャを作成し、「モード」キーストロークのための任意の数のアクションを結合させるtmuxのためのパッチがあります:上流(2.4+)tmuxのバージョンでhttp://ershov.github.io/tmux/

2

これが始まるのバインディングを作成するために、変更されましたあなたが-T-Xとのsend-keysを使用する必要があります。

詳細情報はtmux changelogです。

ここでは一例としてviのコピーモードのための私のバインディング:

# 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 

あなたはemacsのコピーモードを使用している場合は、copy-modecopy-mode-viを交換するだけでは十分でなければなりません。

関連する問題