これは、私の個人的なVim/Neovim設定です。
- Vim & Neovim 対応:
vimrcとinit.vimの両方をサポートしています。 - プラグイン管理: Vim 8 の標準パッケージ機能 (
pack) を利用してプラグインを管理しています。- プラグインは
git submoduleで管理されており、再現性が高いです。
- プラグインは
- 豊富なスニペットとテンプレート:
snippets/とtemplate/ディレクトリに、様々な言語用のスニペットとテンプレートが用意されています。 - LSPサポート:
vim-lspとvim-lsp-settingsにより、モダンな開発体験を提供します。 - GitHub Copilot:
copilot.vimを導入しています。
-
リポジトリをクローンします。
--recursiveオプションを付けて、サブモジュールも同時にクローンしてください。git clone --recursive https://github.com/mikoto2000/dotvim.git ~/.vim -
(Neovimの場合)
~/.config/nvimにシンボリックリンクを貼ります。ln -s ~/.vim ~/.config/nvim
-
Vim/Neovim を起動します。
- Node.js: GitHub Copilot 用。環境に
nodeが無い場合は後述の簡易インストーラで~/.vim/tools/nodeに配置され、自動でそのパスを使います。 - Deno: denops 用。
denoが無い場合は~/.vim/tools/deno/denoを利用します(簡易インストーラあり)。 - Simai:
:MdPreviewStart/:MdPreviewStopに必要です。 - pandoc:
:M2h/:M2hsc/:SixelPreviewで Markdown を HTML 変換する際に使用します。 - ctags (Universal Ctags 推奨):
<C-]>のタグジャンプやctags_selector.vimの補助に使います。
Node.js や Deno が手元に無い場合は、付属の Vim スクリプトでバイナリをダウンロードできます(~/.vim/tools/ 配下に展開されるだけなので不要なら削除してください)。
:call node#Install() " ~/.vim/tools/node に v24.11.1 を配置
:call deno#Install() " ~/.vim/tools/deno に v2.5.6 を配置
.
├── vimrc, init.vim # Vim/Neovim のメイン設定ファイル
├── gvimrc # GVim 用の設定
├── pack/ # Vim 8 パッケージ機能によるプラグイン
│ ├── (group)/
│ │ ├── start/ # 起動時に読み込むプラグイン
│ │ └── opt/ # 遅延読み込みするプラグイン
├── snippets/ # スニペット (tiny-snippet.vim or sonictemplate-vim)
├── template/ # テンプレート (sonictemplate-vim)
└── autoload/ # 自作関数など
<Leader> キーは (スペース) に設定されています。
| キー | ノーマルモード | 説明 |
|---|---|---|
<Leader>sp |
:split |
ウィンドウを水平分割します。 |
<Leader>vs |
:vsplit |
ウィンドウを垂直分割します。 |
<Leader>l |
:call buffer_selector#OpenBufferSelector() |
バッファ一覧を開きます。 |
<Leader>bb |
:b# |
直前のバッファに切り替えます。 |
<Leader>b |
:buffer |
指定したバッファに切り替えます。 |
<Leader>e |
:call file_explorer#OpenFileExplorer(...) |
カレントディレクトリでファイルエクスプローラを開きます。 |
<Leader>f |
:call file_selector#OpenFileSelector() |
ファイルセレクタを開きます。 |
<Leader>mru |
:call oldfiles_selector#OpenOldfilesSelector() |
最近使ったファイル一覧を開きます。 |
| キー | モード | 説明 |
|---|---|---|
<Esc><Esc> |
ノーマル | 検索ハイライトを消去します。 |
<Leader>fo |
ノーマル | 折りたたみを開きます。 |
<Leader>fc |
ノーマル | 折りたたみを閉じます。 |
<Leader>= |
ビジュアル | 選択範囲をVim scriptとして評価し、結果で置き換えます。 |
p / P |
ビジュアル | ビジュアルモードでの p と P の挙動を入れ替えます。 |
<C-@> |
インサート | <Esc> と同じくインサートモードを抜けます(誤爆防止)。 |
<C-@> |
ノーマル | :nohlsearch と同じく検索ハイライトを消去します。 |
| キー | モード | 説明 |
|---|---|---|
<F2> |
ノーマル/インサート | シンボルの名前を変更します (LspRename)。 |
<F12> |
ノーマル/インサート | 定義元にジャンプします (LspDefinition)。 |
<C-.> |
ノーマル/インサート | コードアクションを呼び出します (LspCodeAction)。 |
<C-k><C-i> |
ノーマル/インサート | カーソル下のシンボルの情報を表示します (LspHover)。 |
<A-S-f> |
ノーマル/インサート/ビジュアル | ドキュメントまたは選択範囲をフォーマットします (LspDocumentFormat)。 |
| キー | モード | 説明 |
|---|---|---|
<C-j> |
ノーマル/インサート/ビジュアル | 次のプレースホルダに移動します。 |
<C-k> |
ノーマル/インサート/ビジュアル | 前のプレースホルダに移動します。 |
<C-Space> |
インサート | 補完を呼び出します。 |
| キー | ターミナル | 説明 |
|---|---|---|
<Leader><Leader>dproxy |
export http_proxy=... |
Docker用プロキシを設定します。 |
<Leader><Leader>_ |
ターミナルウィンドウを最小化して次のウィンドウへ移動します。 |
| キー | ノーマルモード | 説明 |
|---|---|---|
<Leader>fu |
(GVim) フォントサイズを大きくします。 | |
<Leader>fd |
(GVim) フォントサイズを小さくします。 | |
<Leader>o |
:call outline#OpenOutlineBuffer() |
アウトライン表示を開きます。 |
<C-]> |
:call ctags_selector#OpenTagSelector() |
タグジャンプの際にセレクタを開きます。 |
<Leader><Leader> |
viwy:grep ... |
カーソル下の単語で grep 検索を実行します。 |
zz (連続) |
カーソル行を画面中央→上端→下端→中央と順に移動させます。 |
| コマンド | 説明 |
|---|---|
:Vimrc |
vimrc を開きます。 |
:Gvimrc |
gvimrc を開きます。 |
:Tmp |
一時ファイルを作成します。 |
:Teirei |
'定例' というプレフィックスの付いた一時ファイルを作成します。 |
:MdPreviewStart |
Markdown のプレビューを開始します (Simai が必要)。 |
:MdPreviewStop |
Markdown のプレビューを停止します。 |
:M2h / :M2hsc |
Markdown を HTML に変換します (pandoc が必要)。 |
:ToggleNumbers |
行番号の相対表示/絶対表示を切り替えます。 |
:SixelPreview |
Sixel 形式の画像をプレビューします。 |
:Convert... |
ConvertToLowerCamel など、単語のケースを変換します。 |