基本
- ヘルプコマンドの使い方 (
:help
,:helpgrep
) - 移動
- 文字の削除方法まとめ(テキストオブジェクト) (
d
,delete
) - 文字の置換方法まとめ (
:s
,:substitute
) - ウィンドウを分割する
- アンドゥとリドゥ操作 (
u
,Ctrl-r
,undolevels
) - ビジュアルモードの基本 (
v
,Shift-v
,Ctrl-v
)
コマンドモード (:
, /
, ?
)
検索
- Vim 内で grep を実行して見つかったファイルへジャンプする (
:vimgrep
,:grep
) - Vim でカレントファイル内の文字列を検索する (
/
,?
,*
,#
) - Vim で大文字と小文字を区別しないで検索する (
ignorecase
,\c
) - Vim の検索に関する設定 (
ignorecase
,smartcase
,wrapscan
,hlsearch
,incsearch
)
コマンドライン
ファイル
ファイルを開く
- ファイル名を指定してファイルを開く (
:e
,:edit
,:view
) - カーソル位置の単語をファイル名としてファイルを開く (
gf
,Ctrl-w gf
,Ctrl-w f
) - 編集中のファイルと拡張子だけが異なるファイルを開く (
%<
)(Hello.cpp を編集中に Hello.h を開く) - ディレクトリエクスプローラー (Explore) を使用してファイルを開く (
:E
,:Ve
,:He
) - Vim でカレントディレクトリを Windows エクスプローラーで開く
ファイルを保存する
その他
- Vim で別ファイルの内容や外部コマンドの出力を挿入する (
:read
) - Vim でファイルのエンコーディング形式、改行コードを変更する (
fenc
,ff
) - Vim でスワップファイルからファイルを復旧する (
:recover
) - Vim で 2 つのファイルの差分を取る・マージする (
vimdiff
,vim -d
)
編集操作
文字の追加
- Vim で補完機能を使用してテキストを入力する
- Vim で同じテキストを指定した回数だけ繰り返し挿入する
- Vim で複数行の行頭に同じテキストを挿入する
- Vim で上の行の文字、下の行の文字をコピーする (CTRL-Y, CTRL-E)
削除
整形/変換
- Vim で行を連結する (
J
,gJ
) - Vim で文字を入れ替える、行を入れ替える(スワップ操作) (
xp
,ddp
) - Vim/NeoVim でインデント用のスペースを入力する(シフトコマンド) (
>>
,<<
,Ctrl-T
,Ctrl-D
) - Vim/NeoVim で選択した範囲を自動インデントする (=)
- Vim/NeoVim ですでに入力されているタブをスペースに変換する (:retab)
- Vim でテキストを中央寄せ/左寄せ/右寄せする
- Vim で大文字と小文字を変換する (
U
,u
) - Vim でカーソル位置の数字をインクリメント/デクリメントする (
CTRL-A
,CTRL-X
) - ソート
カット&ペースト
応用操作
- Vim 上でディレクトリツリーを表示する (NERDTree)
- Vim で折りたたみ機能 (folding) を使用する
- Vim で指定した行範囲を一時的に表示する
- Vim でキーボードマクロを記録して一連のキー入力を繰り返し実行する
- Vim で編集中のファイルを印刷する (
:hardcopy
) - Vim で行情報を表示する
- Vim で外部の ex スクリプトを実行する
- プログラマ向け操作
- カーソル位置の単語に対して任意のコマンド(ヘルプなど)を実行する (
keywordprg
)
インストール/環境
- Neovim 用のプラグインマネージャー lazy.nvim をインストールする
- Vundle をインストールして Vim のプラグイン環境を作る
- Windows の右クリックメニューに「Vimで開く」を追加する
- Windows でファイルを開くときに既存の GVim 内のタブで開く
Vim の設定
Lua
ファイル・ディレクトリに関する設定と操作
- Vim/NeoVim の設定ファイルのパスを確認する (
$MYVIMRC
) - 設定ファイル (
.vimrc
) を開く、リロードする - 設定ファイルから別の設定ファイルを読み込む (
source
,dofile
) - Vimの設定: モードラインを使ってファイル単位で書式設定する (
modeline
) - Vimの設定: バックアップファイル/スワップファイル/アンドゥファイルの設定 (
backup
,swapfile
,undofile
) - ウィンドウ(タブ)移動時にカレントディレクトリも自動で移動する (
autochdir
)
キーマップ設定
- キーマップの基本 (
map
,noremap
) map
、noremap
系コマンドで使用できる特殊キーの一覧 (key-notation
,key-codes
)- 現在のキーマップの一覧を表示する (
map
) <Leader>
キーを使ったキーコンビネーションを定義する (mapleader
)- キーマップ設定の例
autocmd(自動コマンド)による設定
autocmd
で自動コマンドを登録するautocmd
設定の例
表示の設定
- 行番号を表示する (
set number
,vim.opt.number
) - Vim で80文字目に縦線を表示する (
colorcolumn
) - Vim で構文強調(シンタックスハイライト)を有効にする (
syntax
) - Vim でカーソル下の行や列をハイライト表示する (
cursorline
,cursorcolumn
) - Vim/NeoVim で GUI モード用のフォントを設定する (
guifont
) - 制御文字(改行、タブ文字、行末のスペースなど)を表示する (
list
,listchars
) - 全角スペースを見えるように表示する
- Vim で■や※などの記号が重なって表示される問題の解決 (
ambiwidth
) - Vim でGVim 起動時のウィンドウの幅、高さを設定する (
columns
,lines
) - Vim でステータスラインの表示内容を設定する (
statusline
,laststatus
)
入力に関する設定
- OS のクリップボードとヤンクレジスターを連動させる (
clipboard
) - タブ文字の設定 (
tabstop
,expandtab
,softtabstop
) - インデント(シフトコマンド)を設定する (
shiftwidth
,shiftround
) - 自動インデントモードを有効にする (
autoindent
,smartindent
,cindent
) - ビジュアルモードで簡単にインデントを行えるようにする
- インサートモード中に
Backspace
キーやCTRL-W
で文字を削除するときの振る舞いを変更する (backspace
) - Vim で省略形を用いたテキスト入力を行えるようにする (
abbrevaite
) - Vim でスペルチェックを有効にする (
spell
) - Vimの設定: Java や C/C++ のコメント記述に便利な
formatoptions
設定 - Vim のインサートモードを抜けるときに自動で IME をオフにする (macOS, Karabiner-Elements)