はじめてUNIX で仕事をする人が読む本 の備忘録 03
お世話になった本
この連載ブログを書くにあたり、お世話になった本がこちら。LPICと被っているところもありますが、実務での使い方なんかも扱っており、良書だと思います。
- 作者: 木本雅彦,松山直道,稲島大輔
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
テキストエディタ
個人的な備忘録なので、ここは、Vi/Vim にフォーカスする。
とはいえ、名前の紹介くらいはする。(章立てはする)
ed
限定された環境でのファイル編集
時として、テキストエディタさえもない過酷な環境がある。(まだ見たこと無いけど。)
ファイルシステムを吹き飛ばした時や、組み込み環境等がそれに当たるらしい。
そんな時でも慌てず騒がず、最低限作業できるようにしたい。それには、以下のようなコマンドを駆使していくらしい。
また、そのコマンドはシェルの組み込みコマンド(ビルドインコマンド)らしい。
具体的な使い方は追って記事にする。
例)
$ type echo echo is a shell builtin <- これがその証。
コマンド一覧
- echo
- read
- cat
この3つのコマンドを駆使することで何とか、ファイル一覧を見たり、ファイルの作成・編集が出来る。
ViとVim
Vi は現在のほぼ全てのUNIX に初期状態でインストールされている。そのため、他のエディタを使っている人でも、Vi の基本操作は知っておいて損はない。
Vi には、クローンと呼ばれる互換エディタがいくつか存在する。FreeBSD では、/user/bin/vi
の実態はnvi
であり、Ubuntuの/usr/bin/vi
の実態はvim
である。
起動
$ vim
Vim は設定を~/.vimrc
に記載されている。起動時に読み込むことで設定が反映される。
Vim の基本操作
Vim にはモード存在する。ノーマルモードでカーソル移動などの基本的な編集。インサートモードで文字の挿入を行う。ヴィジュアルモードもあるが、使わなくても編集できる。
ノーマルモードで、i
などを入力するとインサートモードに遷移する。ノーマルモードに戻りたければ、ESC
を押下する。
終了するときは、ノーマルモードで:q
で保存せずに終了。:q!
で保存せずに強制終了。:wq
で保存して終了。
基本的なキーバインドはググって下さい。
例
Vim のチュートリアル
Vimの使い方は実はチュートリアルで学ぶことが出来る。しかも、日本語の環境なら、日本語で出来る。
$ vimtutor
Vim のヘルプ
:help :edit
とすると、edit コマンドのヘルプを見ることが出来る。
ヘルプウィンドウが表示される。基本操作でスクロールしたり、検索が出来る。
閉じるときは、:q
で出来る。
詳しい使い方は、ヘルプのヘルプがあるのでそちらで。
:help help
Vim と日本語入力
Vim では日本語入力が出来ることがある。出来なかったとしても日本語入力出来るように設定することが可能。
ちなみに、インサートモードで日本語入力をしていて、ESC
でノーマルモードに戻り、もう一度インサートモードに戻ると、日本語入力のモードのまま。Vim が日本語を制御しているかららしい。
Vim とプログラミング
QuickFix
Vim には、QuickFixと呼ばれる機能がある。エラー結果やgrep
の結果を表示させる専用のウィンドウ。(あまり使ってこなかった。。。)
QuickFix ウィンドウを開くには、:copen
を実行する。終了は:cclose
だ。(:q
でも行けた)
Vim は内部でgrep
を呼び出し、結果をQuickFixに表示する機能を持っている。
Vim のgrep
は内部grep
と外部grep
の2種類がある。
内部grep
は:vimgrep
を使う
:vimgrep /vim *.vim 構文 :vimgrep /{pattern}/{flag} {file} ...
ファイルには検索対象ファイルを複数指定できる。ワイルドカードを使える。
:vimgrep
実行後に:copen
を実行すると検索結果の一覧が表示される。
外部のgrep
の実行は下記の通り。
:grep! vim *.vim 構文 :grep {pattern} {file}...
引数は、シェルから実行するgrep
コマンドと同じ。
:grep # 最初に見つかった行に自動的に移動 :grep! # grep の動きを抑制できる。 なので、 :grep 実行後、:copenを実行することで、検索結果の一覧が見れる。
ハイライト
シンタックスハイライトに対応している。(よく使うので、.vimrc
に記載しておくと良い。)
~/.vimrc syntax enable
もしかしたら、言語ごとに構文が違うかもしれないし、パッケージを入れる必要があるかもしれない。
タグジャンプ
編集中のファイルに含まれるキーワード定義部分にジャンプする機能。
タグファイルの生成
$ ctags -R
カレントディレクトリにあるタグファイルを読み込む。
タグファイルの認識確認
:echo tagfiles()
タグファイルを検索するときのパスは、tags
オプションで指定できる。
実際にタグジャンプしたい場合
- キーワードにカーソルを合わせる
- ノーマルモードで
- <C-]> を入力する
元に戻るときは、<C-t>
を入力すれば良い。
ジャンプ先が複数のとき、:cprevious
と:cnext
でジャンプ先を切り替えることができる。
Vim と外部プラグイン
Vimには多くのプラグインがある。ただし、Emacsのように同梱はされていない。
代表的なもの
netrw
ファイルだけでなく、ディレクトリを開けるのは標準で付属する、netrw
というプラグインの機能。
:edit ディレクトリ名 または :Explorer ディレクトリ名
ディレクトリを開いたら、Enter
でそのファイルを編集できる。
netrw
は圧縮ファイルをそのまま閲覧・参照できる。
:edit foo.zip
見方は、通常のディレクトリの中身の見方と同じ。
zip
、bzip2
、tar.gz
も扱える。
netrw
はnetwork reader writer
の略。
SSH先のファイルを開くこともできる。
:edit scp://hostname or IP address/path/to/file
操作は、通常のVim と同じ。
Vim のカスタマイズについて
Vim は~/.vimrc
に設定を記述できる。
比較的新しいVim では、~/.vim/vimrc
が使用されることもある。
基本的にVim の起動時に読み込まれる。
設定内容を変更した後に、Vim を再起動するのが面倒であれば、:source $MYVIMRC
を実行すると読み込める。
Vim の設定はVim script という言語で記述する。
しかし、これを書き出すと膨大な量になるので、割愛。
:help vim-script-intro
を見るか書籍を買ったり、ネット上のサンプルをみたりしてください。
ちなみに筆者のvimrc
はGit で管理しています。どうせ誰も見ないので心置きなく公開しています。
dotfiles/_vimrc at master · shimesaba-type0/dotfiles
Emacs
Emacs は全ての操作がキーボードで完結できる高機能なエディタらしい。もちろんマウスも使えるが、キーボードの方がより効率的に作業を行えるらしい。
起動と終了だけとりあえず残しておく
# 起動 $ emacs # 終了 Ctrl + x を押して、x キーを話した後に、Ctrl を押したまま c キーを押す
どうやら、Emacsでは、「コントロールキーを押したまま○○きーを押す」というのが多いらしい。
あとは、ググっていくスタンスで。
第3章は以上です。
次回は、第4章 作業の自動化(シェルスクリプト) に入ります。