MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

Vimmerの道

vi/Vimの魅力

以前にも記載したが私はVSCode大好き人間である。 しかしvi/Vimの何ともし難い魅力、吸引力には抗えず人気のガイド本を買ったりしている。

f:id:ProgrammingForEver:20200808224748j:plain
実践Vim

ed,ex

上記の本を読むと実に面白い。しかしvi/Vimをやるからにはそのご先祖様にも触れておきたい。 そう。ラインエディターのedやexだ(ed→ex→vi→Vimと進化しているのでコマンド体系は大体似ている)。

なおVimVSCode等のスクリーンエディターはファイルの中を自由に移動出来るが、ラインエディターは1行の中で編集を行うため、移動や削除、検索置換などを行う都度、コマンド実行が必要になる。

簡単に言ってしまえば「不便」なツールである。

しかし実際のプログラム開発で使えないかというとそんな事はなく、ワンライナーなど一画面で収まる程度のコード量であれば十分実用的だと考える。また状況によってはedしか使えない様な事態もあり得る。例えば、

  • コンテナにviが無い場合(当然emacsVSCodeも無い)
  • 旧来システムの設定ファイルを触る場合

Unix/Linuxには必ずと言っていい程edはインストールされているので、この様な事態でもedを使う事で仕事が出来る様にしておくのは技術者としての幅を広げる事になるだろう。

cat,echo

エディターの話をしているのにcatやechoって何?と思われるだろうが、実は非常時にはこれらもエディターとして使える。 流石にedが無いシステムはほぼないと思うが、例えば何らかの不具合で外部コマンドが使えない様な環境では内部コマンドのechoを用いる事でピンチを脱する事があるかもしれない。

参考までに内部コマンドだけでファイル作成・編集(追記)・表示を行う方法を記載する。

$ echo "This is No.1 line.
> This is No.2 line.                // 途中改行で複数行の入力も可能
> This is No.3 line." > test.txt    // 指定したファイル名の中身は、ゼロからの新規作成になる事に注意

$ read -rd '' file <test.txt ; echo "$file"   // 編集内容をreadで確認
This is No.1 line.
This is No.2 line.
This is No.3 line.
$

$ echo "Add No.4 line.
> Add No.5 Line.                  // 途中改行で複数行の入力が可能
> Add No.6 Line." >> test.txt     // >>でファイルの最後尾に追記出来る

$ read -rd '' file <test.txt ; echo "$file"   // 編集内容をreadで確認
This is No.1 line.
This is No.2 line.
This is No.3 line.
Add No.4 line.
Add No.5 line.
Add No.6 line.
$