tmux での1行コピー または man tmux に載っていないコマンド
screen から tmux に乗り換えて2ヶ月ほど立ちますが、不便なことが4つありました。
- copy した文字列を直接ファイルやプログラムに渡せない
- 2ストロークの key bind が定義できない
- cdd が動かない
- copy mode で1行コピーがない
(1), (2) は未だに未解決ですが、
(3) は 「cdd を tmux, bash, multi session +α に対応した」で解決、
今回は先日解決した (4) について書こうと思います。
先日 .tmux.conf を整理しようと man tmux を眺めていたんですが、どこからかコピペしてきた begin-selection や copy-selection が man に載ってないことに気づきました。どうやら key-table を指定した際に使用可能なコマンドは基本的に載っていないようです。
そこでソースを検索してみたところ、mode-key.c に見たことのないコマンドが大量あり、copy-line といういかにもそれっぽいコマンドを見つけました。
例えば、
bind-key -t vi-copy Y copy-line
で vim や screen と同じように Y で1行コピーが出来るようになります。(tmux 1.5 以上)
最後に tmux 1.6 の mode-key.c からコマンド一覧を以下に抜粋しておきます。
それぞれの使い方についてはまとまった説明は見つけられなかったので、名前から推測するか、検索するか、ソースを読むのが良いと思います。
key-bind -t vi-edit/emacs-edit で使えるコマンド
| backspace | cancel | complete | cursor-left |
| cursor-right | delete | delete-line | delete-end-of-line |
| delete-word | end-of-line | enter | history-down |
| history-up | next-space | next-space-end | next-word |
| next-word-end | paste | previous-space | previous-word |
| start-of-line | switch-mode | switch-mode-append | transpose-chars |
key-bind -t vi-choice/emacs-choice で使えるコマンド
| cancel | choose | down | page-down |
| page-up | scroll-down | scroll-up | up |
key-bind -t vi-copy/emacs-copy で使えるコマンド
| back-to-indentation | bottom-line | cancel | clear-selection |
| copy-line | copy-end-of-line | copy-selection | cursor-down |
| end-of-line | goto-line | history-bottom | history-top |
| jump-forward | jump-again | jump-reverse | jump-backward |
| jump-to-forward | jump-to-backward | cursor-left | rectangle-toggle |
| middle-line | page-down | next-space | next-space-end |
| next-word | next-word-end | page-up | previous-space |
| previous-word | cursor-right | scroll-down | scroll-up |
| search-again | search-forward | search-reverse | search-backward |
| select-line | start-number-prefix | start-of-line | begin-selection |
| top-line | cursor-up |