内容
以下ページが大変勉強になりました。
当記事では主に、自分がよく使うキーバインドを上記ページから抜粋しています。
stty(端末)
キーバインド確認
(bash)$
# 端末のキーバインド確認
stty -a
キーバインド変更(設定)
~/.bashrc
# C-sによる画面の停止を無効にする
stty stop undef
Bash キーバインド(GNUReadline emacsキーバインド)
キーバインド確認
(bash)$
# bashのman(デフォルトのキーバインド・機能の説明がある)
man bash
# 現在のキーバインド確認
bind -p
中でも自分がよく使うキー
区分 | readlineの関数名 | name | 説明 (#メモ) |
コマンド実行 | C-j | accept-line | Enter |
カーソル移動 | C-a | beginning-of-line | 行頭に移動 # Home |
C-e | end-of-line | 行末に移動 # End | |
C-b | backward-char | 1文字戻る # ← | |
C-f | forward-char | 1文字進む # → | |
M-f | forward-word | 次の単語に移動 | |
M-b | backward-word | 前の単語に移動 | |
C-] | character-search | 文字を 1 つ読み込み、その文字が次に現われる場所に移動 | |
M-C-] | character-search-backward | 文字を 1 つ読み込み、その文字が前に現われた場所に移動 | |
文字削除、 貼り付け |
C-h | backward-delete-char | 直前の1文字を削除 # BackSpace |
C-d | delete-char | 直後の1文字を削除 # Delete | |
C-w | unix-word-rubout | 直前の1単語を削除(単語境界は空白類) | |
MC-h | backward-kill-word | 直前の1単語を削除 | |
M-d | kill-word | 直後の1単語を削除 | |
C-u | unix-line-discard | カーソル以前の文字を削除 # パスワード間違ったときなどに | |
C-k | kill-line | カーソル以降の文字を削除 | |
C-y | yank | 削除,killした単語を貼り付け | |
他編集 | C-t | transpose-chars | 直前の文字と、その前の文字を入れ替える |
M-t | transpose-words | スペース区切りでカーソル位置の単語と前の単語を入れ替える | |
C-xC-u | undo | 変更を元に戻す(ExcelなどのCtrl + zと同じ) | |
履歴利用 | C-n | next-history | 次の履歴を表示 # ↓ |
C-p | previous-history | 前の履歴 # ↑ | |
C-r | reverse-search-history | 履歴を後方に(遡って)インクリメンタルサーチ | |
C-s | forward-search-history | 履歴を前方にインクリメンタルサーチ *2 | |
M-< | beginning-of-history | 履歴の先頭を表示 | |
M-> | end-of-history | 履歴の最後を表示 | |
補完 | C-i | complete | コマンド、引数など。適した単語を補完 # Tab |
M-. | insert-last-argument | 直前のコマンドの最後の引数を挿入 | |
他 | C-l | clear-screen | ターミナルをクリア # clearコマンド |
M-の押し方
M-は通常Altが割り当てられていますが、ターミナルで別の機能に使われていたり、
メニューバーへのフォーカスに取られたりすることがあります。
teratermを使用している場合、設定-キーボード-メタキーを「on」にすれば、
Alt単発押しでメニュー、Alt+他のキーでキーバインドと使い分け可能です。
備考
あわせてbashで個人的によく使うオプションを備忘録としてメモ。
Ctrl-Wの単語削除をスラッシュ区切りにする設定。
※最近は設定しなくても、MC-hを使えば事足りるような気がしている。
~/.bashrc
if [[ -t 1 ]]; then
stty werase undef
bind '\C-w:unix-filename-rubout'
fi
リダイレクトの上書き抑止
以下のとおり、リダイレクトでの上書きは、set -C で抑止可能です。
history反映・再読み込み
(bash)$
# historyをhisotryファイルに書き出し(ログアウトせずに)。
history -a
# historyfileのload
history -r
# 同時にやる場合
history -a && history -r
tty
リモート(ssh)で警告が出ることがあるので、 test -t 1でチェックして設定したほうが良さそうです。(下記サイトを参考)