コマンドとは!-bang -nargs = * vimrcファイル内?


9

私はvim に関するドキュメントを読み、著者は.vimrcに挿入する必要があるコード行を提案していますが、それが何であるかはまったくわかりません。

command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --no-ignore --hidden --follow --glob "!.git/*" --color "always" '.shellescape(<q-args>), 1, <bang>0)

だから何であるcommand!-bang-nargsなど、?

回答:


15

いつものように、助けはあなたの親友です:

:h :command

:com[mand][!] [{attr}...] {cmd} {rep}

ユーザーコマンドを定義します。コマンドの名前は{cmd}で、その置換テキストは{rep}です。コマンドの属性(下記参照)は{attr}です。コマンドがすでに存在する場合、!を除いてエラーが報告されます。が指定されている場合、コマンドは再定義されます。

したがって:command!、コマンドラインから使用できる新しいコマンドを作成するために使用されます。ここで新しいコマンドが:Findあり、それは実行に使用されます。これは、いくつかのファイルをあいまい検索できるようにするfzf#vim#grep()プラグインの呼び出しfzfです。

他の引数はドキュメントで説明されています:

  • :h :command-nargs -nargs 新しいコマンドが引数を取ることができるようにするために使用されます :Find arg1
  • :h :command-bang -bang解釈する新しいコマンドができ作るために使用されている!のように:Find!

!右の後は、commandそれがすでに存在する場合、あなたはあなたのソースこのようコマンドを再定義するのvim伝えるために使用される.vimrcエラーメッセージを表示できません。

fzf関数に渡される引数については、プラグインのドキュメントを読んで、それらの機能を確認します:)


あなたはdocよりも正確に答えます。したがって、fzfがインストールされていない場合、より簡単なコマンドを定義したいのcommand! -bang -nargs=* Find 'rg --column --line-number --no-heading --fixed-strings --ignore-case --no-ignore --hidden --follow --glob "!.git/*" --color "always"'ですが、このコマンドは機能しますか?
Tuyen Pham 2017年

1
@TuyenPhamはおそらくそうではありません:コメントのコードは、Find置き換えられるrg --column etc...rgvimコマンドではないコマンドを作成しfzfます。これは関数の引数なので、Vimはエラーをエコーし​​ます。簡単なコマンドの例が必要な場合は、次のコマンドを参照してくださいcommand! DT windo diffthis:DT引数や何も取らず、vimでdiffmodeを開始するコマンドを作成します。{rep}コマンドの一部は、vimが理解できる式でなければなりません。
statox

Tuyenがrgで言及していたのはripgrepであり、FZFとは対照的な別のツールだと思います。
ジミーMGリム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.