Help us understand the problem. What is going on with this article?

もっと早くから知りたかった、bashのreadline系オプション

More than 1 year has passed since last update.

この記事に書いてあることは、全部、bashのmanページに、より詳しく書かれている。manページを全部読んだ人には、全く読む価値のない記事だ。
けれど私は、10年以上Linuxを使っているにも関わらず、読み飛ばしていた。

もちろんいくつかは知っていたが、知らなかったものも結構あり、bash人生を損してきた気がしたので、記事にする。

あまりに長いと読んでもらえないので、似たようなのがいくつもある場合は、よさそうなのだけを選んだ。
「なぜ削った!」ってのがあったら、コメント欄で指摘いただけるとありがたい。

記法の読み方

Emacsではおなじみの形式で、キーバインドは書かれている。
C- は、Ctrlを押しながら、つまりC-aは、よく見かける記法で書くとCtrl+Aだ。

M- は、多くの環境では、Altキーを押しながら。(もともとはMetaキーってのがあったらしい)または、Escキーを一旦押して離してから(Altを使う場合は同時押しだが、Escの場合は一旦押して離してから、なので注意)。Macの人は、何か設定すればCommandキーか何かが使えるらしい。「mac metaキー」などでぐぐってほしい。

例:
M-C-yは、Alt+Ctrl+y (指がつりそう!) もしくは、Escを押して離してから、Ctrl+y
C-x eは、Ctrl+xを押したあとで、e

移動系コマンド

カーソルを動かす系のコマンドです。

コマンド 効果
C-a 行頭に移動
C-e 行末に移動
C-b 1文字戻る(左矢印と同じ)
M-b 1単語戻る
C-f 1文字進む(右矢印と同じ)
M-f 1単語進む
C-l 現在の行が一番上の行になるよう、画面をクリアまたはスクロール

履歴操作系コマンド

コマンド 効果
C-p 履歴を戻る(上矢印と同じ)
C-n 履歴を進む(下矢印と同じ)
M-< 一番最初の履歴に移動
M-> 一番最後の履歴に移動
C-r 履歴を古い方に向かってインクリメンタル検索
C-f 履歴を新しい方に向かってインクリメンタル検索

1つ前の履歴を利用するコマンド

コマンド 効果
M-C-y 1つ前の履歴の、最初の引数(echo foo barだと、foo)を挿入する
M-. 1つ前の履歴の、最後の引数を挿入する
M-数字 M-C-y 1つ前の履歴の[数字]番目の引数を挿入する
C-o 現在の行を実行した後、次の行に現在の行を挿入する

M-数字 M-C-yは、例えばM-2に続けてM-C-yを入力すると、2番目の引数が挿入される。
C-oの説明は難しいが「Enterを押して行を実行し、次の行が出たら上矢印を押す」のと同じようなことを、1回のキー操作でやってくれる。

補完

コマンド 効果
M-/ ファイル名の補完を試みる
C-x / ファイル名の補完候補を列挙する
M-! コマンド名の補完を試みる
C-x ! コマンド名の補完候補を列挙する
M-{ ファイル名の補完候補を、シェルに読める形で全部挿入する(すごいものが見られるので、ファイルの多いディレクトリで一度やってみてください)

キルとヤンク

「キル」とは、削除と似たようなものだが「キルリング」という、bash専用クリップボードみたいなところに入って「ヤンク」操作(C-y)で、貼り付けることができる。しかも、キルリングには複数のテキストを保持できる。

コマンド 効果
C-k カーソル位置から行末までをキル
C-u カーソル位置から行頭までをキル
M-d カーソル位置から単語の終わりまでをキル
M-BackSpace カーソル位置から単語の始まりまでをキル
C-y 一番最後にキルしたテキストを挿入する
M-y (C-yまたはM-yの後で使うと)ひとつ前のキルに遡って挿入する

キーボードマクロ

C-x ( で、キーボードマクロの記録が始まる。C-x )を押して、キーボードマクロの記録を終了したら、C-x eでキーボードマクロを再実行できる。つまりC-x (からC-x )までの間のキー入力を再度繰り返すことができる。

コマンド 効果
C-x ( キーボードマクロの記録を開始する
C-x ) キーボードマクロの記録を終了する
C-x e キーボードマクロを再実行する

その他

コマンド 効果
M-数字 この直後に行った文字挿入またはコマンド入力を数字の回数分、繰り返す
M-C-e エイリアスや履歴の展開など、シェルの行うすべての単語展開をその場で行う
C-x C-e エディタを起動して現在のコマンドラインの内容を開き、編集結果をシェルのコマンドとして実行する。

M-数字の例を紹介する。M-3 aaaaと入力するのと同じ。M-4 M-bは4単語戻る。また、コマンドによっては、単なる繰り返しではなく、特殊な動きをするものがある。その一例が、既に紹介したM-数字 M-C-yだ。
C-x C-eコマンドを使用した際、エディタは$VISUAL, $EDITOR, emacsの順で起動を試みるので、お気に入りのエディタを.bashrcなどにEDITOR=vimのように登録しておけばいい。

参考

manページ
http://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした