SIerからWeb系に転職したやつの日記

タイトルの通り大手SIerからWeb系に転職した、世間一般的には変な奴のブログです。技術的な成長記録を書いていこうと思います。筆者とともに成長するブログです。今は初心者のような内容しか書いてませんが、そのうち上級者のようなブログになってるはずです。

初めてのvimを使おう

どうもです。

apacheについてまとめようと思ったのですが、
htmlのファイルを編集しようと思ったときに、
「あれ?コンソール上でどうやってファイルの編集をするんだ??」
と、疑問になったのでちょっと自分の教科書を先のページに飛ばしたところ方法を見つけました。


入門者のLinux 素朴な疑問を解消しながら学ぶ (ブルーバックス)

編集用のファイルを作成してみる

テキストファイルを編集するツール、その名も「vim
コマンドでは「vi」というらしいのですがどっちで呼べばいいんですかね?
ヴィム?ブイアイ??

私の教科書によると、vimには古いもので使いにくいものと新しくて使いやすいものがあるそうです。
ubuntu16.04の場合だと初期で入っているのは残念ながら前者の使いにくいほうらしいです。

そもそも見たことも触ったこともないので、よくわかりませんがさっそく使いにくいものから触ってみます。

まずはテスト用のファイルを作ってみましょうか。
こういう時、Linuxの世界では拡張子は何にするのが一般的なのでしょうか・・・?
私はWindowsのことしかわからないので、こういう時は「メモ帳」をよく使うため、txtファイルとさせていただきましょう。

シェルで「test.txt」を作成してみようと思います。

$ touch test.txt

f:id:regponpon:20180123235658p:plain

この状態でlsコマンドで作成できたか確認します。

f:id:regponpon:20180123235759p:plain

ここで新出のtouchコマンドについてまとめます。

touch・・・ファイルのタイム・スタンプを変更するコマンド
指定したファイルやディレクトリのタイム・スタンプを変更する。オプションを何も付けない場合は現在の時刻にタイム・スタンプが書き換えられる。また,存在しないファイル名を指定した場合は新規に空ファイルが作成される。

Linuxの世界ではタイムスタンプをそんな簡単にいじれるんですね。Windowsではそう簡単にはいかないはずです。

このコマンドはファイル作成するときにはたくさんお世話になるんですかね?
それとも基本的に既存の複製してファイルを作成するのかなぁ。

まぁいいか。

vimを触ってみる

んで、作成したら以下のコマンドでさっそくコンソール上で編集画面に行っちゃいましょう。

$ vi test.txt

f:id:regponpon:20180124000422p:plain

こんな画面に来たらvimの世界への入場成功らしいです。

vimには大きく編集モードとコマンドモードの二種類のモードがあり、編集モードではその名の通りテキストの編集が行えます。
コマンドモードでは編集したテキストを保存する、削除する、切り取る、貼り付けるなどそういった操作ができるようになってます。

あれあれ?よく見るとGit Bashで使っていたコミットステートメント編集したりする画面とほとんど一緒だ!
これは前職で少し触ってたので馴染みがあります。

師匠に使い方を教わってました。ありがとう師匠。これはvimっていうんだね。

モードの切り替え

vimを起動した直後はコマンドモードとなっているため、編集モードに切り替えてあげる必要があります。
その切り替えのコマンドで一般的なのが「i」
vimが起動した直後(コマンドモード)に「i」と打つと、カーソルのある位置から文字入力を開始(編集モードに切り替えることが)できます。

例えば、vimを起動して直後に「i12345」と打つと、編集画面上には以下のように「12345」と表示されます。
f:id:regponpon:20180124001530p:plain
私の解釈では、「i」はInsert【挿入】の意味で、カーソル位置に文字を挿入するぞ!ってことだと思ってます。

ちなみに、コマンドモード時に「a」を入力するとだとカーソルの右側から文字を入力する編集モードに切り替わります。
要はコマンドモードから編集モードに切り替えるコマンドはいろいろあり、どこから編集を開始するかを決めることができるようです。
ほかにもカーソルを移動するコマンドなどいろいろあるみたいで、多くのサイトでまとめてもらってます。
「vi コマンド」でググれば無数に出てくるので、自分にとって一番見やすいものをブックマークします。よく使いそうなので。

私は下記のMemo On The Webさんのページをブックマークさせてもらいました。
motw.mods.jp

ちなみに下記のhaya14busaさんの記事でvimのコマンドについていろいろ記載されてて参考になります。
haya14busa.com

とまぁこんな感じで編集モードに切り替えることができます。
逆に編集モードからコマンドモードへ切り替えるときは「Esc」キーを押します。

f:id:regponpon:20180124003014p:plain

コマンドモードに切り替えるとカーソルが最後に入力した文字のところに来たのがわかります。

この状態で再度「i」を入力し、「123」と記載するとこうなります。
f:id:regponpon:20180124004239p:plain

このように4と5の間に記載が始まってしまいました。

5の右から記載を開始したい場合は「a」で編集モードに切り替えるのが正解です。

文字の削除

文字の削除もなかなかやりにくくて、バックスペースキーだと消さないんですよ。
カーソルが戻るだけで文字は消えません。

つまりコマンドモードでカーソルを移動しつつ、文字の削除を行う必要があります。
これはなかなか不便ですね。。。メモ帳とかのほうがいいな。。。

カーソル移動はjhklキーで行い、xキーで消します。

それで編集モードに戻りまた記載し、ミスったらまたコマンドモード。。。

これをもっと楽にする方法はないのかなと調べたところ、なんとそれを解決できるのが冒頭で説明した新しくて使いやすいvimだそうです!

保存

vimを早くインスコしたいんですがはやる気持ちを抑えて、まずは保存してみます。
保存はコマンドモードに切り替えてから「:w」と打ってエンターです。

f:id:regponpon:20180124012603p:plain

終わったら、「:q」でvimを終了してもとの画面に戻ります。

vim-tinyとvim

古くて使いにくいvimvim-tinyというもので新しくて使いやすいものがvimだそうです。
-tinyがついてる分新しいほうに感じるのは私だけでしょうか。

この新しいvimに切り替えるのは簡単で、vimをインストールしなおせばいいみたいです。

$ sudo apt install vim

ちなみにシェル上で「vim」と打って実行したら以下のような返答がありました。

プログラム 'vim' は以下のパッケージで見つかりました:
* vim
* vim-gnome
* vim-tiny
* vim-athena
* vim-athena-py2
* vim-gnome-py2
* vim-gtk
* vim-gtk-py2
* vim-gtk3
* vim-gtk3-py2
* vim-nox
* vim-nox-py2
次の操作を試してください: sudo apt install <選択したパッケージ>

めっちゃ種類あるーーーーw
でも一番上のvimがおすすめなんでしょうな。教科書もvimしか紹介していないし。

ということでインスコしてみます。

f:id:regponpon:20180124011524p:plain

こんな感じでいつも通りインスコしました。

続いて先ほどのファイルを開いて「i」で編集モードへ切り替えます。

f:id:regponpon:20180124013356p:plain

おおーちょっとUIも変わって「挿入」と表示されていて今何のモードなのか分かりやすいですね。
そして何よりうれしいのが、編集モードだろうがコマンドモードだろうが、キーボードの矢印キーで普通にカーソルを移動させることができ、編集モードならばバックスペースキーで文字の削除もできます。
こりゃ便利だ!

あとの操作は大体同じですね。保存時はコマンドをたたいて閉じるとかもろもろ。


あと気になったのが一人が編集してる場合に、ほかの人がアクセスしてきたらどうなるのか。
試しに二つのターミナルを起動して、片方でviの編集をしてる最中にもう片方がviでアクセスしたときどうなるか見てみました。

f:id:regponpon:20180124014618p:plain

なるほど。こういう編集中だとスワップファイルができるんですね。
スワップファイルがあれば排他をとっているというわけですな。

これはおそらくWindowsの世界も同じような感じなんだろうなぁ。特にExcelとか編集してたら「~$」が頭についたファイルが出てくるもんね。
いや、あれは自動回復用の一時ファイルだったっけか。

まぁ何はともあれスワップファイルを作成した人、時間、そのプロセスがまだ生きてるかどうかまでここでわかるんだから便利ですね。
これで事務所内で、「誰だ!!このファイル開いてるやつ!!」なんて怒鳴る人も出てこないだろうなぁ。


あと、内容を参照したいだけならば、vimを使わなくてもcatというコマンドで確認できます。

$ cat {ファイル名}

f:id:regponpon:20180124021335p:plain

viコマンドとcatコマンドはめちゃくちゃ使うだろうなぁ。
なんかちょっとずつですがLinuxの世界に入ってきた気がします。

というわけで今日はvimの使い方でした!


次回はapacheのことか、また教科書の内容をまとめたいと思いますー。
でもWebサーバの構築の前にちゃんと教科書で学ぶべきこと学んどいたほうがよさそうだなぁ・・・。