それゆけ!ターミナル部 第2回 必殺ショートカット!
skill

それゆけ!ターミナル部 第2回
必殺ショートカット!

2016.10.31

みなさんこんにちは。ターミナル部 部長のタナカトモフミです。

本連載では意外と見落としがちな基本的な事柄からちょっとマニアックなテクニックまで、ターミナルを使いこなすための方法を若手エンジニアのタミ夫くんとシェルスキー先生と一緒に学んでいきます。

第2回となる今回はターミナルで利用可能なショートカットについて紹介します。無駄なタイピングを減らして効率よく作業しましょう!

タナカトモフミ

タミ夫くんは今日も元気にターミナルで作業しています。

カタカタカタカタカタカッターン!
カタカタカタカタカタカッターン!カチャパーン!

キ、キーボード打ち過ぎじゃろ。なんでそんな連打してるんじゃ?

先頭のコマンド名をタイポしちゃってて、カーソルキーめっちゃ押さないとダメなんスよー

エンジニアならタイピングも省エネしないと、ツラいじゃろ。
シェルで使えるショートカットを使うんじゃ。

シェルにショートカットとかあるんスか?
そういうの早く言ってくださいよー!

お、おう(正確にはttyとかreadlineとかあるらしいけど、まあ細かい話はええじゃろ)

ショートカットキーを覚えて
コマンドラインの操作を楽にしよう!

ショートカットの読み方

ショートカットの説明に入る前に、ショートカットの読み方について説明します。

  • • 「C-f」は コントロール(Control)キーを押しながら f キーを押すという意味です。
  • • 「ESC f」は、Escキーを押した後に、f キーを押すという意味です。同時ではなく順番に押す点に注意してください。
  • • 「M-f」は、 メタ(Meta)キーを押しながら fキーを押すという意味です。

Mac OS Xでメタキーを利用するには、ターミナル(Terminal.app) の「環境設定」から「プロファイル」を開き、「メタキーとしてOptionキーを使用」にチェックを入れると、Optionキーがメタキーとして有効になります。WindowsやLinuxではキーボードによりますが、Alt キーが メタキーとして利用可能なことが多いです。

移動系

まずはもっとも基本的なカーソル移動のショートカットです。しっかりと覚えましょう。

ショートカット説明
C-f 前に1文字移動する(覚え方:forward の f)
C-b 後ろに1文字移動する(覚え方:backward の b)
C-a 先頭位置に移動する。Homeキーと同じ
(覚え方:アルファベットは a から始まる)
C-e 末尾位置に移動する(覚え方:end of line の e)
M-f (ESC f) 次の単語の先頭に移動する。「ESC f」も同じように動く
M-b (ESC b) 前の単語の先頭に移動する。「ESC b」も同じように動く
図 1 移動系のショートカット

編集系

次に編集系のショートカットをマスターしましょう。

ショートカット説明
C-h カーソルの前の文字の削除(Backspace)
C-d カーソル位置の文字の削除(Delete)
C-u カーソル位置の手前の文字列を全てカットする
C-k カーソル位置の後ろの文字列を全てカットする
C-w カーソル位置から手前の単語までをカットする
M-d カーソル位置より後ろの単語をカットする
C-y カーソル位置に最後にカットした文字列をペーストする
図 2 編集系のショートカット

コマンド履歴

コマンドの履歴(history) へのアクセスを楽にするショートカットもあります。

ショートカット説明
C-n 1つ前のコマンドを表示する。矢印キーの上と同じ
(覚え方: next の n)
C-p 1つ次のコマンドを表示する。矢印キーの下と同じ
(覚え方: previous の p)
C-r コマンド履歴のインクリメンタルサーチする
ショートカット後に、文字列を入力すると、その文字列でコマンド履歴を検索できる

C-r のコマンド履歴のインクリメンタルサーチは、わかりづらいので補足します。C-r を入力すると、以下のように、プロンプトの表示が変化します。

(reverse-i-search)`':

この状態で文字列を入力すると、その文字列が含まれる履歴に近いものが表示されます。

# 例: ls と入力して、候補として ls -al が表示されている状態
(reverse-i-search)`ls': ls -al

この状態で、Enterキーを押すと、候補として表示されたコマンドが実行されます。その他以下のような操作ができます。

ショートカット説明
C-r 次の候補を表示する(さらに履歴を遡る)
C-g キャンセルする
ESC

候補をプロンプトに入力した状態にするが、実行はしない。少しコマンドを変えて実行したい場合等に使います

  • • C-a や C-e でも同様のことができます
  • • C-e の場合はカーソル位置が末尾になります
  • • C-a は ESCと同じ状態です
図 3 コマンド履歴のショートカット

その他

ショートカット説明
C-i (TAB) 入力候補を補完する
コマンドや引数として渡すファイル名などの補完に使用できる
C-j (Enter) Enterと同じ。また C-m も同じ
C-l 表示をクリアする。clearコマンドと同じ
C-_ Undo機能
例えば C-u などで文字をカットした後に使うと、カットした部分が復活する
図 4 その他のショートカット

ターミナルで使えるショートカットも使おう

これまで紹介したショートカットは MacやLinuxといったUNIX系OSの標準的なターミナル環境で使える共通のものです。それ以外にもターミナルのGUIのアプリそのものにも便利なショートカットが組み込まれていることがあります。ここでは、Mac OSでよく使われる標準のターミナル(Terminal.app)と iTerm2 のショートカットを少しだけ紹介します。

GUIアプリのショートカットですので、これまで登場しなかったCmd(コマンドキー)がショートカットキーとして利用される点に注意してください。

Terminal.app

ショートカット説明
Cmd-n 新しいウィンドウを開く
Cmd-Shift-w 現在のウィンドウを閉じる
わかりづらいですが、コマンドキーとシフトキーを同時に押しながら w キーを押す必要があります
Cmd-t 新しいタブを開く
Cmd-w 現在のタブを閉じる
Cmd-w 現在のタブを閉じる
Cmd-} 次のタブ(右側)に移動する
Cmd-{ 前のタブ(左側)に移動する

iTerm2

iTerm2 は Mac OSで人気のターミナルアプリケーションです。標準のターミナルに比べて便利な機能が追加されています。

インストールするには、前回紹介した、Homebrew Cask を使用します。

$ brew cask install iterm2

ウィンドウやタブの開く・閉じるは標準のターミナルと同じです。ここでは、iTerm2 の特徴の1つである、ウィンドウの分割(ペインを作成)のショートカットを紹介します。

ショートカット説明
Cmd-d ウィンドウを垂直分割する
つまり、左右にウィンドウが並びます
Cmd-Shift-d ウィンドウを水平分割する
つまり、上下にウィンドウが並びます
Cmd-] 次のペインに移動する
Cmd-[ 前のペインに移動する

まとめ

カタカッターン!ちらっ(ドヤ顔)

いやそんなドヤ顔でこっち見られても困るんじゃが。

数は多くないんでもう完璧に覚えたッス。
ただ、手癖がついちゃってて、ついカーソルキーで移動しちゃうんよねー。

まあ最初はみんなそんなもんじゃろ。
わしは毎日ショートカットの練習をしておったわ。

は?なんすかそれーウケるッスわー。
ショートカット練習とかどんだけーw

ぐぬぬ。(こやつ。。。確かにちょっと恥ずかしいぞ。。。)

翌朝

カタカタ!カタカタ!
フゥ〜〜疲れたー。

朝からどうしたんじゃ?

ショートカットキーの朝練始めたんスよ。手に馴染むまでやろうかなって。
やっぱ先輩のいうことは大事じゃないスか?

そ、そうか。(こ、こいつかわいいとこあるのぅ。)

ショートカットを覚えることでタミ夫くんのタイプ数も劇的に減り、作業効率がアップしたようです。皆さんも是非ショートカットを練習してみてください。さて、次回はシェルの展開について紹介します。ワイルドカードやブラケットを用いることでターミナル上での面倒なファイル操作を簡単に行えるようになります。お楽しみに!

原稿: 株式会社ビズリーチ ターミナル部部長 タナカトモフミ
株式会社ビズリーチ所属。ScalaコードをVimで書く日々をおくる。たまにうっかりIntellij IDEAに浮気してしまう。社内のVim部とEmacs部を和解させ、ターミナル部に統合することに成功したが、社内はEclipse, Intellij IDEA, Sublime Text, Atomが主流のため、戦いは続く。
https://twitter.com/tanacasino

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW