LoginSignup
2
1

More than 1 year has passed since last update.

Vimの使い方解説:自分なりにわかりやすくまとめてみる。インストール〜使用まで

Last updated at Posted at 2022-10-15

はじめに

最近縁があって、Vimを使い始めました。それまでは複雑だからと敬遠していたんですが、いざ使ってみると面白くて、やばいです。(語彙)
色々と調べながらやっていたのですが、いくつかのページを渡り歩くのがめんどくさかったので、初心者なりに備忘録的にここにまとめてみようかと。

読者の方、端から端まで書いてるので、不要なら適宜飛ばしてください。また、僕はMac持ってないので、Macに関しての言及はありません。LinuxとWindowsだけです。まあ、インストールしたらMacでもほぼ同じだけどね。
なお、僕の環境は

  • Windows11 21H2
  • Linux Debian11 Bullseye

れっつごー。

Vimとは

UNIX系OSなどで主に使われているテキストエディタ。全身のviができた頃はマウスはあまり普及していなかったため、すべての操作がキーボードで可能。だから癖があるけど慣れるとめちゃ速くなる。

メリットとデメリット

メリット

  • Linuxなどに標準で入っている
  • 慣れるとオニ早い
  • コンソールで動く
  • 軽い。とにかく軽い。
  • かっこいい。←ここ重要

デメリット

  • Windowsなどにはインストールが必要(面倒ではない)
  • 慣れないとオニ遅い
  • 慣れてしまうとほかのエディタを使えなくなる(この記事はQiitaのブラウザエディタで書いてるんですが、マウス操作がめんどくさくなったのと、アローキーでの移動がじれったいです笑)←ちょっと大げさ

インストール

Linux

不要。

Windows

  1. Vimの公式サイトのDownloadページから該当パッケージをダウンロードし、インストーラーに従ってセットアップ。
    (2022.10現在、DLリンクが2つありますが、多分どっちでも大丈夫です。説明書きを読んで、選んでください。わかんなければ多分上のほうで十分。)
  2. 環境変数にVimをインストールしたディレクトリのPATHを追加。

起動

Linux

コマンドプロンプトにviもしくはvimと入力。オプションで開くファイルのパスを指定。

Windows

コマンドプロンプトにvimと入力(コンソール版が開きます。オプションで開くファイルを指定)、またはスタートメニューからgVimを起動。(GUI版のVimが開きます。)
エクスプローラーでファイルを右クリックしたときのコンテクストメニューにも"Vimで開く"とある場合がある(インストール時の設定による)

  • gVim:通常起動のgVim
  • gVim Read Only:読み取り専用。プロンプトからは、-Rオプションで可能。
  • gVim Easy:普通のテキストエディタと同じような使い勝手。せっかくVim使ってるんだから、これはあんま意味ないよね、と個人的には思います。

コンソール版とgVimの違い
コンソール版は当然ですがマウスは使えません。(例外あり)あと、Windowsだと色表現が乏しい。
gVimはGUI上で動いているため色表現が豊かにできて、かつマウスで細かい操作が可能です。
僕はコンソール版のが好き。なぜならシンプルだから。

使い方(この記事の命)

Vimにはモードがあります。それぞれのモードでできることが決まっていて、それを行き来しながら編集します。
下に各モードと、そのモードの英語表示を書きます。これらは画面の左下に書かれています。

  • ノーマルモード:(非表示)
  • ビジュアルモード
    • ビジュアル:VISUAL
    • ビジュアル 行:VISUAL LINE
    • ビジュアル 矩形:VISUAL BLOCK
  • セレクト
    • セレクト:SELECT
    • 行指向選択:SELECT LINE
    • 矩形選択:SELECT BLOCK
  • 挿入:INSERT
    • 挿入ノーマル:(insert)
    • (挿入)ビジュアル:(insert)VISUAL
    • (挿入)ビジュアル 行:(insert)VISUAL LINE
    • (挿入)ビジュアル 矩形:(insert)VISUAL BLOCK
  • 置換:REPLACE
  • コマンドライン:(入力したコマンドが表示)
    • 前方検索:(入力したコマンドが表示)
    • 後方検索:(入力したコマンドが表示)

各モードの機能とコマンドを書いていきます。各モードの最初に書いた">>"の後ろには、このモードへの移動方法を書いてあります。

ノーマルモード

>> Esc
>> Ctrl+[
>> Ctrl+c
Vimを起動したときはこれになります。他のモードからEscを二回以上押せば確実にこのモードになります。
移動や文字の削除などをするモードです。

移動系

繰り返し可能なものは、コマンドの先頭に数字をつけることでその回数繰り返されます。
ex) 3h...3文字左

コマンド 動作 コマンド 動作 コマンド 動作 コマンド 動作
h j k l
0 行頭 $ 行末 ^ 行の文字開始位置
e 語頭 b 前語頭 w 次語頭
gg 先頭行 G 最終行 % 対応する括弧
Ctrl+f 1ページ下 Ctrl+b 1ページ上 Ctrl+d 半ページ下 Ctrl+u 半ページ上
H 画面先頭 M 画面中央 L 画面下端

削除系

繰り返し可能なものは、コマンドの先頭に数字をつけることでその回数繰り返されます。
ex) 3dd...3行削除

コマンド 動作 コマンド 動作 コマンド 動作 コマンド 動作
x delete X backspace dd d(h,j,k,l
のいずれか)
指定方向
D 行のカーソル以降 dw 1語 de 空白まで
d^ 行頭まで d$ 行末まで df 文字列 文字列まで

その他

繰り返し可能なものは、コマンドの先頭に数字をつけることでその回数繰り返されます。
ex) 3yy...3文字ヤンク

コマンド 動作 コマンド 動作 コマンド 動作 コマンド 動作
~ 大文字小文字変換 J 下行と結合
yy ヤンク
(コピー)
yw 1語ヤンク yl 1行ヤンク y0 行頭までヤンク
y$ 行末までヤンク daw 1語カット p カーソル後にペースト P カーソル上にペースト
r 文字置換 >> インデントを付ける << インデントを消す * 現在単語を検索

ビジュアルモード

ビジュアルモードには上述のように3種類(挿入ビジュアル含めると6種類)あります。

  • ビジュアル(一文字単位)
    ノーマルから >> v
    挿入から >> Ctrl+o v ((挿入)ビジュアル になります)
  • ビジュアル 行(行単位)
    ノーマルから >> V
    挿入から >> Ctrl+o V ((挿入)ビジュアル 行 になります)
  • ビジュアル 矩形(矩形選択)
    ノーマルから >> Ctrl+v
    挿入から >> Ctrl+o Ctrl+V ((挿入)ビジュアル 矩形  になります)
  • その他
    • 前回と同じ範囲を選択: >> gv

範囲を選択して、その範囲に対してアクションをするモードです。選択範囲の動かし方は、ノーマルモードのカーソル移動と同じ要領だから省略。

アクション

コマンド 動作 コマンド 動作 コマンド 動作
x 削除 d カット y ヤンク
gu 小文字化 gU 大文字化
> インデントを付ける < インデントを消す = オートインデント

セレクト

上述のように、セレクトにも3つあります。

  • セレクト
    >> gh
  • 行指向選択
    >> gH
  • 矩形選択
    >> g Ctrl+h

ノーマルから >> Ctrl+g
挿入から >> (マウスドラッグ または Shift+カーソルキー)

GUIでの選択に似た選択モードです。
文字入力で置換、backspaceで削除になります。

挿入

カーソル前から >> i
行頭から >> I
カーソル後から >> a
行末から >> A
単語末から >> ea
下に空行を作ってから >> o
上に空行を作ってから >> O
現在クオートの中を消してから >> ci"
(↑"'に書き換えてシングルクオートに、wに書き換えて単語、tでHTMLタグも使用可)

コマンド 動作 コマンド 動作 コマンド 動作
Ctrl+p 前方検索して補完 Ctrl+n 後方検索して補完 Ctrl+y 補完確定

挿入ノーマル

挿入 >> Ctrl+o
挿入で一回だけノーマルのコマンドを実行できます。

置換

>> R
文字を入力するごとに一文字ずつ置換されて進んでいきます。

コマンドライン

コマンド >> :
前方検索(正規表現) >> /
後方検索(正規表現) >> ?

メタでコアな命令ができます。ノーマルモードでいきなり入力します。
いずれも最後に!をつけることで強制実行されます。
行番号は、$を使うと最終行と指定が可能です。

" 閉じる
:q
" 保存
:w
" 保存して終了
:wq

" カーソル行の最初のstr1をstr2に置換
:s/str1/str2
" 行全体で置換
:s/str1/str2/g
" 指定した行範囲の最初のstr1をstr2に置換
:s開始行番号,終了行番号/str1/str2
" 指定した行範囲のすべてのstr1をstr2に置換
:s開始行番号,終了行番号/str1/str2/g
" 指定行の最初のstr1をstr2に置換
:s行番号/str1/str2
" 指定行のすべてのstr1をstr2に置換
:s行番号/str1/str2/g
" 全体の最初のstr1をstr2に置換
:%s/str1/str2
" 全体のstr1をstr2に置換
:%s/str1/str2/g
" 指定行へジャンプ
:行番号
" 行削除
:d
" strのある行を削除
:g/str/d
" 指定行を削除
:行番号d
" 指定行範囲を削除
:開始行番号,終了行番号d
" カーソル以降全削除(上の応用)
:.,$d
" リロード
:e
" 下行にファイルを挿入
:r ファイルパス
" コマンドの実行結果を挿入
:r! シェルコマンド
" 外部コマンドでフィルタ
:!コマンド
" swapファイルの読み込み
:recover 該当の編集ファイル
" 検索などによるハイライトを消す
:noh

" 画面分割
" 上下
:sp ファイル名
" 左右
:vs ファイル名
" Ctrl+W h/j/k/l で編集するウィンドウを切り替えます。閉じるときは通常通り :q です。

" 前方検索
/正規表現
"後方検索
?正規表現

" その他設定(これはホームディレクトリの.vimrcファイルに":"を抜いて書き込んでおくと常時有効になります。)
" 2つ目の値の前にnoをつけると無効になります。 ex):set nonu...行番号非表示
" 行番号の表示
:set nu
" 自動インデント(改行後のインデントの継続)
:set autoindent
" 自動インデント(改行前の文字に対応してインデント)
:set smartindent
" 端で折り返す
:set wrap
" シンタックスハイライト
:syantax on
:syntax off

.vimrcについて

ホームディレクトリに.vimrcなるファイルを置いて、そこに設定を書き込むことでカスタマイズができます。
僕はあんま詳しくないので、下記リンクを参考にしてください。

おわりに

その他便利そうなコマンドの記事がありました。

あと、プラグインとか作るときに使う、VimScriptってのもあるんですが、僕もVim初心者なのでよくわからない。

ちなみに今急性Vim中毒になりそうです。(?)すぐ治ると信じてます。VSCode使うとストレス溜まるのは悲しいので。

(みんな記事の最後ってどうやって締めるんだろう)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1