はじめに
サーバー上での作業ではGUIを使うことができないことが多く、基本的にはCUI上で作業する必要があります。そこで、GUI上でしか作業したことがない人は、VScodeやatomなどのようなエディタが使えないことに戸惑うかもしれません。
そこで、この記事では、CUI上で動くエディタであるVimについて、使い方やおすすめの拡張機能の設定などの紹介をしていきます。
また、Vim以外にもEmacsというエディタがありますが、私は根っからのVimerなのでEmacsの紹介は行いません。このVimかEmacsかというのはきのこ・たけのこ戦争と同じくらい派閥の争いが激しいので、一方のエディタの悪口を言うととても面倒なことになるので、控えるようにしましょう。ちなみに、ユーザー数的にはVimの方が多いです。
vim8のインストール
基本的に、linux(UbuntuやcentOSなど)ならば最初からvimがインストールされており、端末を起動してvimと入力すれば、vimが起動します。
もしかしたら、今確認のためにvimを起動した人がいるかもしれませんが、その人はvimの終了の仕方がわからずにしょんぼりしてしまうことでしょう。
そんな人のために、vimの終了の仕方を教えてあげます。優しいでしょう?
:q
このコマンドを入力してエンターを押せばvimを終了させることができるのでやってみてください。この辺りの詳しい説明は後々していきます。
話を戻しまして、Vimは基本的にインストールされているのですが、Vimがインストールされていない or Vim7が入っている場合があります。ちなみにVimのバージョンは以下のコマンドで調べることが出来ます。
vim --version
これでもし、以下のように7.xが表示されている場合はvim7が入っています。
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 07 2019 15:35:43)
まあ別にVim7でも構わないのですが、拡張機能とか入れるときに面倒なことがおきるので、Vim8を入れておきましょう。
以下のコマンドを順に実行することで、Vimがインストールされていない or Vim7が入っている場合でもVim8をインストールすることができます。
sudo add-apt-repository ppa:jonathonf/vim sudo apt update sudo apt install vim
Vimの特徴
Vimは皆さんが普段使っているであろうVScodeやAtomとは大きく異なる点がひとつあります。それは、マウスを使わずにキーボード操作だけで操作が完結することです。
まあ、これは当然の話で、CUI上でコードを書くために作られたエディタがVimですので、そもそもマウスなんて贅沢品は存在しないのです。なので、VScodeやAtomではマウス操作で行っていた部分は、Vimでは決まったコマンドを入力することになります。
そして、そのキーボード操作だけで操作を完結させるために、Vimでは「モード」という概念が存在します。主要なモードは以下の4つです。
モード | 内容 |
---|---|
ノーマルモード | カーソル移動やコピペ |
コマンドモード | ファイルの保存やファイル内検索 |
挿入モード | ファイルにコードを入力 |
ヴィジュアルモード | 範囲選択 |
これらのモードを切り替えることによって、キーボード操作だけでファイル編集をすることができます。
この辺りは慣れないと中々うまく出来ませんが、慣れるとVimが最強、Vimが使えない世界なんてありえない、というVim信者に生まれ変わることができます。みなさんもこの記事を通して一緒にVIm信者になりましょう。
Vimの基本的な使い方
先ほど紹介した4つのモードは以下のように遷移します。
では、4つのモードの説明をファイルを作成・編集しながら説明していきます。
今回の記事では、Vim起動・VIm終了・ファイル作成・文字入力・ファイル保存・コピー・ペースト・切り取りというコードを書くための最低限の使い方を説明していきます。
挿入モード
試しに、適当なファイルを作成して、Vimで編集してみましょう。以下のコマンドで、ファイルを作成+ファイルをVImで編集する準備をすることができます。
vim sample.txt
作成したいファイル名の前にvimと入力するだけですね。そうするとVimが起動するかと思います。多分、初見では「え?これ起動したの?」ってなるかもしれませんが、画面の下の方に、
"sample.txt" [新ファイル]
みたいな表示が出ていて、かつ、画面の左端に「~」が縦に並んでていたら起動できています。
ただ、このままだと、ファイルに何かコードを書くことが出来ません。それは、今のvimの状態が「ノーマルモード」となっているからです。コードを書くためには「挿入モード」に切り替えなければなりません。
では、挿入モードに切り替えてみましょう。現在の状態から以下の文字を入力することで切り替えることができます。
i
「i」だけですね。そうすると、画面の下に
--挿入--
が表示されるかと思います(環境によっては「--insert--」かも)。これで挿入モードにきりかえることができました。キーボードの入力が受け付けられるようになったので、適当に入力してみてましょう。
例えば、「hello」と入力したとします。
コマンドモード
このファイルを保存してみましょう。ファイルの保存は、挿入モードではなくコマンドモードでないとできませんので、コマンドモードに切り替える必要があります。
挿入モードからコマンドモードの切り替えは先ほどの図(もう一度貼っておきます)のように、挿入モード->ノーマルモード->コマンドモードという順に切り替える必要があります。
挿入モードからノーマルモードへの切り替えはEscapeキーでできます。そして、コマンドモードに切り替えるのは「:」を入力してから特定のコマンドを入力することでできます。
例えば、先ほど作成したファイルの保存は以下のコマンドを入力することでできます。
:w
また、ファイルの編集を終了したい場合は、最初の方でちょろっと使いましたが、以下のコマンドを入力してエンターを押します。
:q
ちなみに、ファイルを保存かつ、編集の終了をしたい場合は以下のコマンドを入力してエンターを押します。
:wq
ノーマルモード
保存してファイルの編集を終えてしまったので、もう一度Vimで開き直しましょう。
VImでファイルを開くのは、ファイルを作成するコマンドと同じです。
vim sample.txt
ファイルを開いくとVImはノーマルモードになっています。このノーマルモードでは、カーソル移動や、コピー、ペースト、切り取りなどができます。
今のsample.txtには、helloが入力されていると思いますが、まずはコピーしてみましょう。helloの行にカーソルを移動させておいて、以下のコマンドを入力します。
yy
次にペーストは以下のコマンドです。
p
これで、helloの下の行にhelloがもう一個追加されました。
ちなみに、コピーのコマンドがなぜ、「cc」ではなく「yy」かというと、Vimではコピーではなく実際にはヤンクという操作をしています。ヤンクとコピーは何が違うの?と思うかもしれませんが、基本的には同じだと思って問題ないかと思います。
次は、切り取りをしてみましょう。切り取りは以下のコマンドです。
dd
皆さんお気づきかもしれませんが、今までのコピー・切り取りは行ごとに行われます。複数行にわたって、コピー・切り取りを行いたいときは、上のコマンドの前に数字をいれることで可能になります。
これだと、3行のコピー(ヤンク)
3yy
これだと、3行の切り取り
3dd
こんな感じです。
また、行の一部分だけをコピーしたりしたいときがあるかと思います。そんな要望に応えるために、ヴィジュアルモードが存在します。
ヴィジュアルモード
ヴィジュアルモードでは、部分選択をすることができます。
ヴィジュアルモードはノーマルモードの時に、「v」を入力することで切り替わります。
v
また、ノーマルモードに戻すのは、挿入モードと同じようにEscapeキーです。
試しに、helloの行にカーソル移動して「v」を入力してヴィジュアルモードに切り替えてみましょう。そうすると、また画面の下に、
-- ヴィジュアル--
といった表示がされます。
そして、カーソルを右に移動してみてください。なんか文字の上に白いのが表示されるかと思います。ヴィジュアルモードでは、この白くなっている箇所とカーソルがいる位置までが、選択されている状況になっています。
その状態でコピーをしてみましょう。ヴィジュアルモードでのコピーは「y」だけです。そうすると、ヴィジュアルモードからノーマルモードに自動で切り替わりますので、「p」を入力してペーストすることができます。
ペーストすると、さっきまで選択していた部分がペーストされたかと思います。同じ要領で切り取りもすることができますので、試してみましょう。
ヴィジュアルラインモード
ヴィジュアルモードは部分選択を行うことができますが、このヴィジュアルラインモードでは、行単位での選択をすることができます。やっていることは「3yy」とかと同じなのですが、選択される行が白くなるので、こちらの方が視覚的に見やすくなるので、行選択をしてコピーや切り取りをしたいときは、こちらを使うことをおすすめします。
ヴィジュアルラインモードには、大文字のVで切り替えることができます。
V
要するに、「shift + v」ですね。試しにやってみると、カーソルがいる行全体が以下の画像のように白くなるかと思います。
Vimの設定と拡張機能
Vimは単体では割と簡素なエディタで、設定をしないと行番号が表示されなかったりします。なので、Vimを使うときには、「.vimrc」に設定を書いたり、拡張機能を追加したりすることをおすすめします。
今回は、私が使用している設定や拡張機能を紹介します。
dein.vim
まずは拡張機能の設定をしていきます。
拡張機能の管理やインストールを簡単にやってくれる「dein.vim」を使っていきます。
dein.vimを使うには以下のようにホームディレクトリ上から、ディレクトリを作っていく必要があります。
mkdir .vim cd .vim mkdir rc cd rc
そして、作ったディレクトリ内(~/.vim/rc/)に「dein.toml」と「dein_lazy.toml」を作成します。
それぞれのファイルは、私が今使っている設定を何も考えずにコピペしてください。Vimにおいて、クリップボードに保存されているテキストのペーストは、以下のようなコマンドでファイルを開いて、挿入モードに切り替えて、マウスの右クリックをすればできます。
vim ~/.vim/rc/dein.toml
dein.toml
dein_lazy.toml
.vimrc
Vimの設定はホームディレクトリ上にある「.vimrc」に書き込んで行きます。
こちらでも、何も考えずに私が今使っている設定をコピペしましょう。
以下のようなコマンドでvimrcを開いて、挿入モードに切り替え、
vim ~/.vimrc
以下のvimrcをコピペしてください。
github.com
そして、Vimでsample.txtを開いてみましょう。おそらく、dein.vimのインストールが始まります。終わったら、Enterを押せば、設定や拡張機能が反映されているかと思います。
試しに、vimを起動してみましょう。
おそらくこのような画面になっているかと思います。
左端にディレクトリ内のファイルやディレクトリが表示されるようになりました。これはNerdTreeという機能です。個人的に見た目がかっこいいのとVim上でディレクトリの中身を弄くれるので愛用しています。他にも、pythonのファイルを開くと、上の画像のようにシンタックスがついていたり、細かい所がいろいろと変わっていますので確認してみてください。