takashi kono's blog

コーヒーとキーボードと共に何かを記録していくブログ

はじめてUNIXで仕事をする人が読む本 の備忘録 03

はじめてUNIX で仕事をする人が読む本 の備忘録 03

お世話になった本

この連載ブログを書くにあたり、お世話になった本がこちら。LPICと被っているところもありますが、実務での使い方なんかも扱っており、良書だと思います。

テキストエディタ

個人的な備忘録なので、ここは、Vi/Vim にフォーカスする。

とはいえ、名前の紹介くらいはする。(章立てはする)

ed

限定された環境でのファイル編集

時として、テキストエディタさえもない過酷な環境がある。(まだ見たこと無いけど。)
ファイルシステムを吹き飛ばした時や、組み込み環境等がそれに当たるらしい。

そんな時でも慌てず騒がず、最低限作業できるようにしたい。それには、以下のようなコマンドを駆使していくらしい。
また、そのコマンドはシェルの組み込みコマンド(ビルドインコマンド)らしい。
具体的な使い方は追って記事にする。

例)

$ type echo
echo is a shell builtin  <- これがその証。

コマンド一覧

  1. echo
  2. read
  3. cat

この3つのコマンドを駆使することで何とか、ファイル一覧を見たり、ファイルの作成・編集が出来る。

ViとVim

Vi は現在のほぼ全てのUNIX に初期状態でインストールされている。そのため、他のエディタを使っている人でも、Vi の基本操作は知っておいて損はない。
Vi には、クローンと呼ばれる互換エディタがいくつか存在する。FreeBSD では、/user/bin/viの実態はnviであり、Ubuntu/usr/bin/viの実態はvimである。

Vim は数々の拡張機能を備えた高機能なエディタである。

起動

$ vim

Vim は設定を~/.vimrc に記載されている。起動時に読み込むことで設定が反映される。

Vim の基本操作

Vim にはモード存在する。ノーマルモードでカーソル移動などの基本的な編集。インサートモードで文字の挿入を行う。ヴィジュアルモードもあるが、使わなくても編集できる。
ノーマルモードで、iなどを入力するとインサートモードに遷移する。ノーマルモードに戻りたければ、ESCを押下する。
終了するときは、ノーマルモードで:qで保存せずに終了。:q!で保存せずに強制終了。:wqで保存して終了。

基本的なキーバインドはググって下さい。

help - Vim日本語ドキュメント

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に表示する機能を持っている。
Vimgrep内部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オプションで指定できる。

実際にタグジャンプしたい場合

  1. キーワードにカーソルを合わせる
  2. ノーマルモードで
  3. <C-]> を入力する

元に戻るときは、<C-t> を入力すれば良い。
ジャンプ先が複数のとき、:cprevious:cnextでジャンプ先を切り替えることができる。

Vim と外部プラグイン

Vimには多くのプラグインがある。ただし、Emacsのように同梱はされていない。
代表的なもの

netrw
ファイルだけでなく、ディレクトリを開けるのは標準で付属する、netrwというプラグインの機能。

:edit ディレクトリ名
または
:Explorer ディレクトリ名

ディレクトリを開いたら、Enterでそのファイルを編集できる。

netrwは圧縮ファイルをそのまま閲覧・参照できる。

:edit foo.zip

見方は、通常のディレクトリの中身の見方と同じ。
zipbzip2tar.gzも扱える。

netrwnetwork 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章 作業の自動化(シェルスクリプト) に入ります。