基本
- ヘルプコマンドの使い方 (
: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 を manpager として使用する(man ページを Neovim で表示する)
インストール/環境
- Neovim 用のプラグインマネージャー lazy.nvim をインストールする
- Vundle をインストールして Vim のプラグイン環境を作る
- Windows の右クリックメニューに「Vimで開く」を追加する
- Windows でファイルを開くときに既存の GVim 内のタブで開く
Vim の設定
Lua
ファイル・ディレクトリに関する設定と操作
- Vim/Neovim の設定ファイルのパスを確認する (
$MYVIMRC) - Vim/Neovim で設定ファイル (
.vimrc,init.lua) を開く、リロードする - 設定ファイルから別の設定ファイルを読み込む (
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)