プログラミング初心者が書くVimの基本的な使い方
ご無沙汰しています。最近は花粉症や季節の変わり目での疲れに負けて少しペースを落としつつVimの学習を進めていました。
Vimはhappiness chainに入るまで聞いたこともなかったし今回の学習でも見本通り文字を入れたらちゃんと動いたぞ!くらいの認識で進めていました(汗)
今回参考にさせていただいた動画はudemyにあります[現役シリコンバレーエンジニアが教えるNeoVim(VIM)+Tmux+zsh入門]です。 こちらの動画ではVimの基本的な操作方法以外にもVimのプラグインマネージャーを使用した拡張機能のインストールやzsh、Tmux、Screenの操作方法も解説されています。キーボードのどこを打ったか表示してくれるところもあり分かりやすく学習を進められます。
今回のブログは基本の操作方法を詰めこんだのでかなり長文になっています。
また、windows 11homeでWSLをインストールし、LinuxでNeoVimを使用したため、MacやVimでは異なった操作が必要になるかもしれないことを前提にお読みください。
なぜVimを使うのか?
マウスやキーボード右下にある矢印のキーでもカーソル移動はできますが、マウスや普段文字を打つ位置からは遠めなのでタイピングに時間がかかり長時間使うと疲れやすいです。Vimを使いこなせばマウス、矢印キーを使うことなく使いやすい位置のキー操作だけでコピー、ペースト、カーソル移動などできるため無駄な動きをせずに素早くコードを書けます。
vimとneovimの違い
vimはneovimより古くからあるため年月とともに機能が多くなった分動作や手順が複雑化し動作が重い傾向があります。そこでよりスムーズに動き分かりやすいものを求める声よりneovimが誕生しました。便利な拡張機能を追加できるプラグインもneovimの方がインストール方法が分かりやすく簡単に使えるものが多いです。
vimからneovimに移行する時の注意点
すでにVimを使っているけどneovimを使いたいときvimのコンフィグファイル名~/.vimrc
とneovimのコンフィグファイル名~/.config/nvim/init.vim
は違うのでそのままではファイルの中にある設定を引き継ぐことはできません。
先にvimを使用していて後からneovimに移行する時はファイルの中身を~/.config/nvim/init.vim
へコピーすることで引き継ぎできます。
VimとIDEとの違い
IDEの方がVimより進化が早く新しいアップデートが多いので開発向きです。 IDEの中でもVimをインストールして使えるためVimを先に学習して慣れておけばスムーズに開発環境でコーディングできるというメリットがあります。
Vimのコマンドは全部で2000コマンド程あります。ですが現在の時刻を表示コマンドなどあえてVimで使う必要はないなというものもあります。実際に使用するうえでは実用的なコマンド30個くらいを覚えると良いといわれています。
Vimのインストール
Vimのバージョン情報の表示vim --version
インストールされていた場合これでVimの情報が見れます。これでバージョンが見れない場合はVimをインストールする必要があります。
sudo apt-get install vim
と打ち Enterを押すと正常にインストールできたらyes/noという意味の(y/n)と表示されるのでyを押してエンターを押せばインストール完了です。
NeoVimを使いたいとき
NeoVimもVimと似たnvim --version
でバージョンを確認してみましょう。Vimは標準でインストールされていることが多いですがNeoVimはないことが多いようです。私もインストールされていませんでした。
インストール方法はVimのようにsudo apt-get install neovim
でyを押してインストールできます。
起動方法
vimの起動はvi
もしくはvim
+Enterと入力します。neovimの起動はnvim
です。
Vimの移動操作
vimを立ち上げると最初はNormal modeというモードになっていて文字を打ち込めません。内容の編集をしたいときはiを打ち編集ができるINSERT modeにしてから文字を打ちます。
Normal modeにしたいときはEscを押します。Nomal modeではk(上)j(下)h(左)i(右)で移動します。
Normal modeの時に:set number
と入力すると行番号を表示します。
:2
など:+数字でその行に移動することもできます。
shift+4
で行末に移動し、0で文頭に移動します。
^
でインデントの先頭に移動
{
で上の段落に移動
}
で下の段落に移動
[[
1つ上のセクションに移動
]]
1つ下のセクションに移動
:1
もしくはggでファイルの一番上に移動
shift+g
でファイルの一番下に移動
control+o
で移動する前の場所に戻る
kjhiで操作して遊べるゲームもあります。 英文なのですが翻訳可能なので登場人物のヒントの解読に時間がかかったりしますが隙間時間や息抜き感覚で覚えられます vim-adventures.com
ファイルの保存コマンドの種類
せっかく作ったり編集したファイルも保存をしなければ何の注意書きもなく消えてしまいます。変更を保存したいときは忘れないように気をつけましょう。
ファイルの保存:w
名前を付けて保存`:w+ファイル名
編集を終了して閉じる:q
編集内容を保存しないで閉じる:q!
編集内容を保存して閉じる(一番使い勝手がいいです):wq
次の文字からInsertモードで記入a
閲覧モードで開くview
view モードは編集しても保存しようとするとエラーが出るため間違えて文字を消したくない重要なファイルを開くときなど重宝します
Nomal modeで文字を消すときの操作
一文字消すx
一行消すdd
一単語を消すdw
2行消す2dd
2を他の数字にすればその行数分消せる
アンドゥ(元に戻す)u
アンドゥを取り消すControl+r
Nomal modeでコピーやペーストをしたいとき
一行コピーyy
二行コピー2yy
2を他の数字にすればその行の分コピー
現在の行にペーストshift+p
(特に使えます!)
下の行にペースト p
前のコマンドを再度行う .
(ピリオド。コピー関連以外のどのコマンドでも再度実行する)
ファイル内の単語を検索したい
Nomal modeの時/+単語
で/後に入力した単語に強調色が付きます。色はバージョンや設定により違う色になることもあります。
Enterを押してからn
を押すと検索した単語へ移動します。複数ある時はnを押すたびに違う場所の単語へ移動しますshift+n
でひとつ前に検索した単語へ移動します
:noh
で強調色をなくします。常に強調色をなくしたいときはNomal modeで:set nohlsearch
と入力してEnterを押します。
Nomal mode時にできる操作
Nomal modeの時shift+r
の後に文字を入力するとカーソルを合わせた場所の文字を書き換えます。
dw
でカーソル位置の単語を削除できます。間違えた時は慌てずu
(アンドゥ)を使いましょう。
単語の一択置換は:%s/置換したい単語/置換後の単語/g
と入力後Enterで置換したい単語を一括で書き換えます。
単語の置換を一つごとに確認しながら行う:%s/置換したい単語/置換後の単語/gc
+Enterを押した後にy(イエス)n(ノー)を押すことで1単語ずつ書き換えるかどうか選びながら置換できます。一つ上の方法では確認なしで書き換えるので慎重さが必要な時はこちらの方が安心です。どちらも関数名などを一括で変えたいときに便利に使えます。
Nomal modeの時o
を押すとカーソルのある行の下に空白の行を作ってInsert modeにします。
Nomal modeの時shift+o
でカーソルのある行に空白の行を作ってInsert modeにします。
shift+j
でカーソルのある行と下の行を連結して1行にまとめます。
>
右にインデントを移動
<
左にインデントを移動
v
でvisual modeにしてからjなどで移動すると色がつきます。その状態でy(コピー)を押すと色づいた部分を範囲選択してコピーができます。
複数行をコメントアウトしたいとき
コメントアウトは単語や行を設定やコードに反映しないでメモ書きとして残しておくようにすることです。
まず、vでvisual modeにしてからkなど移動のコマンドで範囲選択をします。その後先頭に#や//を入れるときは:norm shift+i #
(もしくは//)
文末に入れたいときは:norm shift+a #
(もしくは//)とEnterを押します。
Command modeでの操作
vimのファイルを開き、Nomal modeの時に:w
で保存した後に:!
を文頭につけたコマンドを入力することでファイルを保存して閉じなくてもその場でファイルに記入されたコードの出力結果を見ることができます。これをCommand mode(コマンドモード)といいます。
:!!
で前のコマンドを繰り返すことができます。
Command modeを終了したいときは出力結果が表示されているときにEnterを押します。
vimのconfig設定
configとはVimを使うときのテーマカラーや改行のルールなどVimでファイル編集をするときにどんな動作をするか設定を決めて保存しておけるものです。
configの設定方法は、まずcd
でホームディレクトリへ行きpwd
でホームディレクトリのファイルを確認します。ここでmkdir ~/.config
でディレクトリを作りls
で中身を確認します。vim、もしくはnvimと表示されなければ mkdir nvim(vim)
でvimの設定ファイルを作っておきます。
cd nvim(vim)
で移動しvim init.vim
と入力してからEnterを押すと設定ファイルを編集できます。
config設定の反映タイミングは即時ではなくファイルを保存してexit
してから再度立ち上げると設定変更されます。
コンフィグ設定の例
set shiftwidth=4
1インデントがスペース4回分の幅にします
set tabstop=4
1回Tab押すとスペース4回分の空白を作ります
set expandtab
Tabを押した時設定の回数分スペースキーを押したことにします(set tabstop=4ならスペース4回分)
set textwidth=0
ワードラッピング(ある文字数で自動的に改行する)機能をなくします
set autoindent
改行したときに自動でインデントを入れます。文章のペーストでも自動的に行ごとに改行されることがあるのでそのような表示になるときはNomal modeで:set paste
を入力してから貼り付けすると一時的に解除できます
set clipboard=unnamed
vimでコピーした文字を外部のメモ帳アプリなどでもペーストできるようにします
syntax on
sintaxをオンにして文字を自動的に色分けします
vimhelp.orgでたくさんコンフィグ設定が掲載されています。英語ですが翻訳機能を使えばニュアンスは大体わかります。
ここまで色々な操作方法を書き記しましたが、実際に手を動かすとできたときの達成感もありますしタイピングの速さが上達していきます。興味がある方はぜひ試してみてください。
ここまでご拝読くださりありがとうございました!