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
等是什么?#1 楼
与往常一样,帮助是您最好的朋友::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
函数的参数,我将让您阅读插件的文档以查看其作用:)
评论
您回答比文档更精确。因此,如果我没有安装fzf,那就表示我想定义一个更简单的命令,该命令命令! -bang -nargs = *查找'rg --column --line-number --no-heading --fixed-strings --ignore-case --no-ignore --hidden --follow --glob“!.git / *“ --color” always“'是否有效?
–图恩·范(Tuyen Pham)
17-10-18在16:35
@TuyenPham可能不是:您的注释中的代码创建了一个Find命令,该命令将由rg --column等代替...但是rg不是vim命令,它是fzf函数的参数,因此Vim将回显错误。如果您想要一个简单命令的示例,请参阅以下命令: DT windo diffthis。它创建命令:DT,该命令不带参数或任何东西,并且在vim中启动diffmode。该命令的{rep}部分必须是vim可以理解的表达式。
–statox♦
17-10-19在6:45
我相信Tuyen在rg中指的是ripgrep,它是与FZF相对的另一种工具。
– Jimmy MG Lim
20年5月11日在14:16