Usr_05

Nvim :help ページは、このスクリプトを使用して、ソースから tree-sitter-vimdoc パーサーで生成されています。


VIM ユーザーマニュアル - Bram Moolenaar 著
設定のカスタマイズ
Vim は、自分の好みに合わせて動作するように調整できます。この章では、Vim を起動時に異なるオプション値で設定する方法、Vim の機能を拡張するためのプラグインを追加する方法、独自の マクロを定義する方法について説明します。
05.1 vimrc ファイル 05.2 vimrc ファイルの内容例 05.3 簡単なマッピング 05.4 パッケージの追加 05.5 プラグインの追加 05.6 ヘルプファイルの追加 05.7 オプションウィンドウ 05.8 よく使うオプション
次の章: usr_06.txt シンタックスハイライトを使う 前の章: usr_04.txt 小さな変更をする 目次: usr_toc.txt

vimrc ファイル vimrc-intro

頻繁に使用するコマンドを毎回入力するのは面倒でしょう。お気に入りのオプション設定やマッピングで Vim を起動するには、init.vim ファイルにそれらを記述します。Vim は起動時にこのファイル内のコマンドを実行します。
既に init.vim ファイルがある場合(例:システム管理者が設定したもの)、次のように編集できます。
:edit $MYVIMRC
vimrc ファイルがない場合は、init.vim を参照して、vimrc ファイルを作成できる場所を確認してください。
このファイルは常に使用され、推奨されます。
~/.config/nvim/init.vim (Unix と OSX)
~/AppData/Local/nvim/init.vim (Windows)
vimrc ファイルには、コロンの後に typed するすべてのコマンドを含めることができます。最も簡単なものはオプションの設定です。たとえば、Vim を常に 'ignorecase' オプションをオンにして起動したい場合は、vimrc ファイルに次の行を追加します。
set ignorecase
この新しい行を有効にするには、Vim を終了して再起動する必要があります。後で、Vim を終了せずにこれを行う方法を学びます。
この章では、最も基本的な項目のみを説明します。Vim スクリプトファイルの書き方の詳細については、usr_41.txt を参照してください。

05.2 vimrc ファイルの内容例 vimrc_example.vim

最初の章では、vimrc ファイルの作成方法を説明しました。
:exe 'edit' stdpath('config').'/init.vim'
このセクションでは、このファイルに指定できるさまざまなコマンドについて説明します。これにより、独自の設定方法についてのヒントが得られます。ただし、すべてを説明するわけではありません。詳細については、":help" コマンドを使用してください。
set backup
これは、Vim に上書き時にファイルのバックアップコピーを保持するように指示します。バックアップファイルは、元のファイルと同じ名前で、末尾に "~" が追加されます。07.4 を参照してください。
set history=50
履歴に50個のコマンドと50個の検索パターンを保持します。より少ないまたは多くの行を記憶したい場合は、別の数字を使用してください。
map Q gq
これはキーマッピングを定義します。詳細については、次のセクションで説明します。これは、"Q" コマンドを "gq" オペレーターによるフォーマットを実行するように定義します。そうでない場合、"Q" コマンドは最後に記録されたレジスタを繰り返します。
vnoremap _g y:exe "grep /" .. escape(@", '\\/') .. "/ *.c *.h"<CR>
このマッピングは、視覚的に選択されたテキストをヤンクし、Cファイルで検索します。これは複雑なマッピングです。マッピングを使用して非常に複雑な操作を実行できることがわかります。それでも、これは入力したかのように実行されるコマンドのシーケンスにすぎません。
vimrc-filetype
filetype plugin indent on
これは、3つの非常に巧妙なメカニズムを有効にします。1. ファイルタイプの検出。ファイルを編集開始するたびに、Vim はそれがどのような種類のファイルかを判断しようとします。"main.c" を編集すると、Vim は ".c" 拡張子を見て、これを "c" ファイルタイプとして認識します。"#!/bin/sh" で始まるファイルを編集すると、Vim はそれを "sh" ファイルタイプとして認識します。ファイルタイプの検出は、シンタックスハイライトと以下の他の2つの項目に使用されます。filetypes を参照してください。
2. ファイルタイププラグインファイルの使用 多くの異なるファイルタイプは、異なるオプションで編集されます。たとえば、"c" ファイルを編集する場合、'cindent' オプションを設定して、行を自動的にインデントすると非常に便利です。これらの一般的に役立つオプション設定は、Vim にファイルタイププラグインとして含まれています。独自のものを追加することもできます。write-filetype-plugin を参照してください。
3. インデントファイルの使用 プログラムを編集する場合、行のインデントは多くの場合自動的に計算できます。Vim には、多くのファイルタイプに対応したインデントルールが付属しています。:filetype-indent-on'indentexpr' を参照してください。
restore-cursor last-position-jump
augroup RestoreCursor
  autocmd!
  autocmd BufReadPre * autocmd FileType <buffer> ++once
    \ let s:line = line("'\"")
    \ | if s:line >= 1 && s:line <= line("$") && &filetype !~# 'commit'
    \      && index(['xxd', 'gitrebase'], &filetype) == -1
    \ |   execute "normal! g`\""
    \ | endif
augroup END
別の自動コマンド。今回は、ファイルを読み込んだ後に使用されます。その後の複雑な処理は、'"' マークが定義されているかどうかを確認し、定義されている場合はそこにジャンプします。コミットメッセージやリベースメッセージには適用されません。これらは前回とは異なる可能性が高いためです。また、xxd(1) を使用してバイナリファイルをフィルタリングおよび編集する場合も適用されません。これは、入力ファイルを前後に変換するため、いわば二重の性質を持つためです。using-xxd も参照してください。
行頭のバックスラッシュは、前の行からコマンドを続けるために使用されます。これは、行が非常に長くなるのを防ぎます。line-continuation を参照してください。これは Vim スクリプトファイルでのみ機能し、コマンドラインでコマンドを入力する場合には機能しません。
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
          \ | wincmd p | diffthis
これは ":DiffOrig" コマンドを追加します。変更されたバッファで使用して、ロード元のファイルとの違いを確認します。diff:DiffOrig を参照してください。
set nolangremap
langmap オプションが、マッピングの結果として得られる文字に適用されないようにします。設定されている場合(デフォルト)、プラグインが壊れる可能性があります(ただし、下位互換性があります)。'langremap' を参照してください。

05.3 簡単なマッピング

マッピングを使用すると、一連の Vim コマンドを単一のキーにバインドできます。たとえば、特定の単語を中括弧で囲む必要があるとします。つまり、「amount」のような単語を「{amount}」に変更する必要があります。:map コマンドを使用すると、F5 キーがこのジョブを実行するように Vim に指示できます。コマンドは次のとおりです。
:map <F5> i{<Esc>ea}<Esc>
注: このコマンドを入力するときは、4 文字を入力して <F5> を入力する必要があります。同様に、<Esc><Esc> キーを押すことによって入力されるのではなく、5 文字を入力することによって入力されます。マニュアルを読むときは、この違いに注意してください!
これを分解してみましょう: <F5> F5ファンクションキー。これは、キーが押されたときにコマンドが実行される原因となるトリガーキーです。
i{<Esc> {文字を挿入します。<Esc>キーは挿入モードを終了します。
e 単語の末尾に移動します。
a}<Esc> } を単語に追加します。
":map" コマンドを実行した後、単語を {} で囲むために必要なことは、カーソルを最初の文字に置いて F5 キーを押すことだけです。
この例では、トリガーは単一のキーです。任意の文字列にすることができます。ただし、既存の Vim コマンドを使用すると、そのコマンドは使用できなくなります。それを避ける方が良いでしょう。マッピングで使用できるキーの1つはバックスラッシュです。おそらく複数のマッピングを定義したいので、別の文字を追加します。たとえば、"\p" をマップして単語の周りに括弧を追加し、"\c" をマップして中括弧を追加できます。
:map \p i(<Esc>ea)<Esc>
:map \c i{<Esc>ea}<Esc>
Vim がそれらが一緒に属していることを認識するために、\ と p をすばやく入力する必要があります。
":map" コマンド(引数なし)は、現在のマッピングを一覧表示します。少なくともノーマルモードのマッピングです。マッピングの詳細については、40.1 セクションを参照してください。

05.4 パッケージの追加 add-package

:packadd を使用して、オンデマンドでパッケージを有効にすることができます。これは、必要な場合にのみ有効にしたいプラグインに役立ちます。example_package を有効にするには、次のコマンドを使用します。
packadd example_package
それだけです!これで、このプラグインに関するヘルプを見つけることができます。
:help example_package
これは、:packadd がプラグインをロードしたときに、'runtimepath' にパッケージディレクトリも追加したため、ヘルプファイルが見つかるためです。
パッケージとは、Vim に追加できるファイルのセットです。パッケージには、オプションと起動時に自動的にロードされる2種類があります。
インターネット上のさまざまな場所でパッケージを見つけることができます。通常、アーカイブまたはリポジトリとして提供されます。アーカイブの場合は、次の手順に従います。1. パッケージディレクトリを作成します。
mkdir -p ~/.local/share/nvim/site/pack/fancy
"fancy" は任意の名前です。パッケージを説明する名前を使用してください。2. アーカイブをそのディレクトリに展開します。これは、アーカイブのトップディレクトリが "start" であると想定しています。
cd ~/.local/share/nvim/site/pack/fancy
unzip /tmp/fancy.zip
アーカイブのレイアウトが異なる場合は、最終的に次のようなパスになるようにしてください。
~/.local/share/nvim/site/pack/fancy/start/fancytext/plugin/fancy.vim
ここで "fancytext" はパッケージの名前です。他の何でもかまいません。
nohlsearch パッケージの追加 nohlsearch-install
次のコマンドでプラグインをロードします。
packadd nohlsearch
'updatetime' 後または Insert モードに入った後に :nohlsearch を自動的に実行します。したがって、デフォルトの updatetime を想定すると、hlsearch はアイドル時間が 4 秒後に一時停止/オフになります。
プラグインがロードされた後にその効果を無効にするには
au! nohlsearch
パッケージの詳細については、packages を参照してください。

05.5 プラグインの追加 add-plugin plugin

Vim の機能は、プラグインを追加することで拡張できます。プラグインとは、Vim の起動時に自動的にロードされる Vim スクリプトファイルにすぎません。プラグインディレクトリにドロップするだけで、プラグインを非常に簡単に追加できます。
プラグインには2つのタイプがあります。
グローバルプラグイン: あらゆる種類のファイルに使用されます。ファイルタイププラグイン: 特定の種類のファイルのみに使用されます。
最初にグローバルプラグインについて説明し、次にファイルタイププラグインについて説明します add-filetype-plugin

グローバルプラグイン standard-plugin

Vim を起動すると、いくつかのグローバルプラグインが自動的にロードされます。これを行うために何もする必要はありません。これらのプラグインは、ほとんどの人が使用したい機能を追加しますが、Vim にコンパイルされるのではなく、Vim スクリプトとして実装されています。ヘルプインデックス standard-plugin-list に一覧表示されています。load-plugins も参照してください。
add-global-plugin
グローバルプラグインを追加して、Vim を使用するときに常に存在する機能を追加できます。グローバルプラグインを追加するには、次の2つの手順のみが必要です。1. プラグインのコピーを取得します。2. 正しいディレクトリにドロップします。
グローバルプラグインの入手
プラグインはどこで見つけることができますか?
常にロードされるものもあります。$VIMRUNTIME/plugin ディレクトリにあります。.
Vim に付属しているものもあります。$VIMRUNTIME/macros ディレクトリとそのサブディレクトリ、および $VIM/vimfiles/pack/dist/opt/ 以下にあります。
ネットからダウンロードします。https://www.vim.org には、大規模なコレクションがあります。
Vim メーリングリストに投稿されることもあります。
自分で書くこともできます。write-plugin を参照してください。
グローバルプラグインの使用
最初にプラグイン自体のテキストを読んで、特別な条件がないか確認してください。その後、ファイルをプラグインディレクトリにコピーします。
システムプラグインディレクトリ
Unix ~/.local/share/nvim/site/plugin
Unix の例(プラグインディレクトリがまだない場合)
mkdir -p ~/.local/share/nvim/site/plugin
cp /tmp/yourplugin.vim ~/.local/share/nvim/site/plugin
これで完了です!このプラグインで定義されているコマンドを使用できるようになりました。
プラグインを plugin/ ディレクトリに直接配置する代わりに、plugin/ 以下のサブディレクトリに配置することで、より整理することができます。たとえば、すべての Perl プラグインに "~/.local/share/nvim/site/plugin/perl/*.vim" を使用することを検討してください。

ファイルタイププラグイン add-filetype-plugin ftplugins

Vim ディストリビューションには、次のコマンドで使用を開始できる、さまざまなファイルタイプ用のプラグインセットが付属しています。
:filetype plugin on
これで完了です! vimrc-filetype を参照してください。
使用しているファイルタイプのプラグインが見つからない場合、またはより良いプラグインが見つかった場合は、追加できます。ファイルタイププラグインを追加するには、次の2つの手順があります。1. プラグインのコピーを取得する。 2. 正しいディレクトリにドロップする。
ファイルタイププラグインの入手
グローバルプラグインと同じ場所でそれらを見つけることができます。ファイルの種類が記載されている場合は、プラグインがグローバルプラグインかファイルタイププラグインかがわかります。 $VIMRUNTIME/macros のスクリプトはグローバルプラグインで、ファイルタイププラグインは $VIMRUNTIME/ftplugin にあります。
ファイルタイププラグインの使用 ftplugin-name
ファイルタイププラグインは、適切なディレクトリにドロップすることで追加できます。このディレクトリの名前は、グローバルプラグインで前述したのと同じディレクトリにありますが、最後の部分は "ftplugin" です。"stuff" ファイルタイプのプラグインを見つけて、Unix を使用しているとします。次に、このファイルを ftplugin ディレクトリに移動できます。
mkdir -p ~/.local/share/nvim/site/ftplugin
mv thefile ~/.local/share/nvim/site/ftplugin/stuff.vim
そのファイルが既に存在する場合は、"stuff" 用のプラグインが既にあります。既存のプラグインが追加するプラグインと競合しないかどうかを確認することをお勧めします。問題がなければ、新しいプラグインに別の名前を付けることができます。
mv thefile ~/.local/share/nvim/site/ftplugin/stuff_too.vim
アンダースコアは、ファイルタイプの名前と残りの部分(何でもかまいません)を区切るために使用されます。"otherstuff.vim" を使用すると機能せず、"otherstuff" ファイルタイプ用にロードされます。
ファイルタイププラグインの一般的な名前は次のとおりです。
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim
ここで "<name>" は、任意の名前を指定できます。Unix の "stuff" ファイルタイプの例
~/.local/share/nvim/site/ftplugin/stuff.vim
~/.local/share/nvim/site/ftplugin/stuff_def.vim
~/.local/share/nvim/site/ftplugin/stuff/header.vim
<filetype> 部分は、プラグインを使用するファイルタイプの名前です。このファイルタイプのファイルのみがプラグインの設定を使用します。プラグインファイルの <name> 部分は重要ではなく、同じファイルタイプに対して複数のプラグインを持つために使用できます。".vim" または ".lua" で終わる必要があることに注意してください。
さらに読む: filetype-plugins ファイルタイププラグインのドキュメントと、マッピングが問題を引き起こさないようにする方法に関する情報。 load-plugins 起動時にグローバルプラグインがロードされるタイミング。 ftplugin-overrule グローバルプラグインの設定をオーバーライドする。 write-plugin プラグインスクリプトの書き方。 plugin-details プラグインの使用に関する詳細、またはプラグインが機能しない場合の情報。 new-filetype 新しいファイルタイプを検出する方法。

05.6 ヘルプファイルの追加 add-local-help

運が良ければ、インストールしたプラグインにはヘルプファイルも付属しています。新しいプラグインのヘルプを簡単に見つけられるように、ヘルプファイルのインストール方法を説明します。
標準的ではない場所にヘルプファイルが付属しているプラグイン("my-plugin")があるとします(通常は doc/ というサブフォルダにあります)。
最初に、'runtimepath' のディレクトリのいずれかに "doc" ディレクトリを作成します。
:!mkdir -p ~/.local/share/nvim/site/doc
次に、ヘルプファイルを "doc" ディレクトリにコピーします。
:!cp my-plugin/my-plugin-doc.txt ~/.local/share/nvim/site/doc
ここで、新しいヘルプファイルの件名にジャンプできるトリックを紹介します。 :helptags コマンドを使用してローカルタグファイルを生成します。
:helptags ~/.local/share/nvim/site/doc
次を実行すると、ローカルヘルプファイルのエントリが表示されます。
:help local-additions
ローカルヘルプファイルのタイトル行は、このセクションに自動的に追加されます。ここでは、どのローカルヘルプファイルが追加されたかを確認し、タグを介してそれらにジャンプできます。
ローカルヘルプファイルの作成については、write-local-help を参照してください。

05.7 オプションウィンドウ

必要なオプションを探している場合は、ここのヘルプファイルで検索できます: options。別の方法は、次のコマンドを使用することです。
:options
これにより、1行の説明付きのオプションのリストを含む新しいウィンドウが開きます。オプションは件名ごとにグループ化されています。カーソルを件名に移動して <Enter> を押すと、そこにジャンプします。もう一度 <Enter> を押すと、戻ります。または、CTRL-O を使用します。
オプションの値を変更できます。たとえば、「テキストの表示」件名に移動します。次に、カーソルを次の行に移動します。
set wrap nowrap
<Enter> を押すと、行は次のように変更されます。
set nowrap wrap
オプションがオフになりました。
この行のすぐ上には、'wrap' オプションの簡単な説明があります。カーソルを1行上に移動して、この行に配置します。ここで <Enter> を押すと、'wrap' オプションの完全なヘルプにジャンプします。
数値または文字列引数をとるオプションの場合、値を編集できます。次に、<Enter> を押して新しい値を適用します。たとえば、カーソルを数行上に次の行に移動します。
set so=0
カーソルを "$" を使用してゼロに配置します。"r5" を使用して5に変更します。次に、<Enter> を押して新しい値を適用します。これでカーソルを動かすと、境界線に達する前にテキストがスクロールし始めることに気付くでしょう。これは 'scrolloff' オプションの機能であり、スクロールが開始されるウィンドウ境界からのオフセットを指定します。

05.8 よく使用されるオプション

非常に多くのオプションがあります。それらのほとんどはめったに使用しません。より有用なものの一部をここで紹介します。":help" コマンドと、オプション名の前後をシングルクォートで囲むことで、これらのオプションに関する詳細なヘルプを見つけることができることを忘れないでください。例えば
:help 'wrap'
オプション値を間違えた場合は、オプション名の後にアンパサンド(&)を付けることで、デフォルト値に戻すことができます。例
:set iskeyword&

行を折り返さない

Vim は通常、長い行を折り返して、すべてのテキストを表示できるようにします。テキストをウィンドウの右側に続けさせた方が良い場合があります。次に、テキストを左右にスクロールして、長い行全体を表示する必要があります。次のコマンドで折り返しをオフにします。
:set nowrap
表示されていないテキストに移動すると、Vim は自動的にテキストをスクロールします。10文字のコンテキストを表示するには、次を実行します。
:set sidescroll=10
これはファイル内のテキストを変更するのではなく、表示方法のみを変更します。

移動コマンドの折り返し

移動のためのコマンドのほとんどは、行の先頭と末尾で移動を停止します。'whichwrap' オプションを使用して変更できます。これはデフォルト値に設定します。
:set whichwrap=b,s
これにより、行の最初の位置で使用される <BS> キーで、カーソルを前の行の末尾に移動できます。また、<Space> キーは、行の末尾から次の行の先頭に移動します。
カーソルキー <Left><Right> も折り返せるようにするには、次のコマンドを使用します。
:set whichwrap=b,s,<,>
これはまだノーマルモードのみです。挿入モードでも <Left><Right> を実行できるようにするには
:set whichwrap=b,s,<,>,[,]
追加できるフラグがいくつかあります。 'whichwrap' を参照してください。

タブの表示

ファイルにタブがある場合、タブがどこにあるかを確認できません。タブを表示するには
:set list
これで、すべてのタブが ^I として表示されます。また、各行の末尾に $ が表示されるため、気付かないうちに末尾のスペースを見つけることができます。欠点は、ファイルにタブが多い場合、見栄えが悪いことです。カラターミナルを使用している場合、または GUI を使用している場合、Vim はスペースとタブを強調表示された文字として表示できます。 'listchars' オプションを使用します。
:set listchars=tab:>-,trail:-
これで、すべてのタブは ">---"("-" の数が多かれ少なかれ)として表示され、末尾の空白は "-" として表示されます。見栄えがよくなりましたね?

キーワード

'iskeyword' オプションは、単語に出現できる文字を指定します。
:set iskeyword
iskeyword=@,48-57,_,192-255
"@" はすべてのアルファベットを表します。"48-57" は ASCII 文字 48 から 57 を表し、これは数字 0 から 9 です。"192-255" は印刷可能なラテン文字です。場合によっては、キーワードにダッシュを含めて、「w」などのコマンドで「upper-case」を1つの単語と見なしたい場合があります。次のようにすることができます。
:set iskeyword+=-
:set iskeyword
iskeyword=@,48-57,_,192-255,-
新しい値を見ると、Vim がカンマを追加したことがわかります。文字を削除するには "-=" を使用します。たとえば、アンダースコアを削除するには
:set iskeyword-=_
:set iskeyword
iskeyword=@,48-57,192-255,-
今回はカンマが自動的に削除されます。

メッセージのためのスペース

Vim が起動すると、下部にメッセージに使用される行が1つあります。メッセージが長い場合は、切り捨てられるため、一部しか表示されないか、テキストがスクロールして続行するには <Enter> を押す必要があります。 'cmdheight' オプションを、メッセージに使用される行数に設定できます。例
:set cmdheight=3
これは、テキストを編集するためのスペースが少なくなることを意味するため、妥協点です。
次の章: usr_06.txt 構文の強調表示の使用
著作権: manual-copyright を参照してください。 vim:tw=78:ts=8:noet:ft=help:norl
メイン
コマンドインデックス
クイックリファレンス