目次
はじめに
今まで、Ctrl + R
でコマンド履歴を戻りすぎた時、先に進む方法が分からず、
仕方なくCtrl + C
で一旦終了させてから再度Ctrl + R
でやり直すという方法を取っていましたが、
当然ながら、先に進む方法も用意されています。
しかし、有効にするのにちょっとした設定が必要となるようでした。
結論から先に言うと、先に進むコマンドはCtrl + S
なのですが、
デフォルトだとこちらには「スクリーンロック」という機能がバインドされているようです。
ちなみにスクリーンロックは、画面をロックしてくれる機能(詳しくは 横道">横道からどうぞ)のことで、
私は多分この先もきっと使わないので、この機能は無効にして履歴を進められるようにすることにしました。
ということで設定方法を見て行きましょう。
設定
設定を確認(設定前)
$ stty -a speed 38400 baud; rows 30; columns 120; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
起動スクリプトに追記
自分用なら ~/.bashrc
、全ユーザに適用でよければ /etc/bashrc
に以下を追記します。
標準だとスクリーンロックが割り当てられているため、それを解除する
stty stop undef stty start undef
設定を確認(設定後)
$ stty -a speed 38400 baud; rows 30; columns 120; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
操作イメージ
Ctrl + R
で履歴検索(reverse-i-search)になる。
その後、Ctrl + S
で履歴を進む(i-search)になる。
Ctrl + G
で元に戻る。
参考
横道
- (ITmedia) 「Ctrl」+「S」でキー入力が受け付けられなくなる
- 「Ctrl」+「S」でスクリーンロック
- 「Ctrl」+「Q」でスクリーンロックの解除