[英]Vim on Windows: Mapping control sequences to keys in vimrc doesn't work for insert mode
[英]Vim: grep's wildcard doesn't work in windows
我尝试使用vim的内部grep和'**'
通配符,如下面的命令:
grep "test" **\*.txt
vim给出以下错误:
FINDSTR: Cannot open **\*.txt
当我删除'**'
通配符时,该命令正常工作:
grep "test" *.txt
我将反斜杠更改为正斜杠,但它也没有帮助:
grep "test" **\*.txt
这再次给出了上述错误。
可能是什么原因?
注意:我在Microsoft Windows XP上使用GVim 7.2。
在XP下在Vim中执行“:grep”默认情况下不使用“grep.exe”。 默认情况下,使用“FINDSTR”,它是Windows安装的一部分。 “FINDSTR”与grep不兼容。 因此,您会收到错误消息
FINDSTR: Cannot open **\*.txt
请参阅“:help grepprg”。
如果要使用grep的Windows端口,则必须安装它,因为grep既不是Windows的一部分,也不是Vim安装的一部分。
但是因为7.0 Vim有一个叫做vimgrep的内部grep。 有关详细信息,请参阅“:help vimgrep”。
您必须相应地设置'grepprg',以便使用grep或vimgrep(而不是默认的FINDSTR)。
你应该尝试vimgrep
。
在Windows上,如果要挂接到可以使用的更快的findstr
set grepprg=findstr\\ /n\\ /s
在你的.vimrc和现在
:vimgrep methodname **/*.py
相当于
:grep methodname *.py
两者都返回一个结果列表,您可以通过quickfix窗口导航( :copen
, :cn
/ :cp
, :cclose
)
根据我的经验,findstr比vimgrep快30倍,但是你的项目大小可能无关紧要, vimgrep
的正则表达式可以使用得更好。
注意:grep不是vim的内部grep(即:vimgrep),而是外部grep程序的包装器。
如果您安装了替代模式匹配器(即MinGW或Cygwin的grep),则可以编辑vimrc文件以使用它。
set grepprg=C:/MinGW/msys/1.0/bin/egrep\ -nR\ $*\ *
'$ '是表达式的位置,' '结尾表示每种文件类型。 Grep足够快或我的代码库足够小,我不在乎限制文件类型。 使用-n和-R标志将使其返回结果与vimgrep非常相似(显然模式表达式将不同)。
**由'grepprg'中指定的外部工具扩展,或者在Windows的情况下,由于grepprg只是findstr工具而未扩展。
但是你在Vim的命令行上传递的任何参数也会转到该工具,所以只需进行递归的findtr搜索:
:grep /S pattern *.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.