这是一个映射
map <silent> <2-LeftMouse> lB"gyE
:if @g=~'ss\d\d\d\.png'
:call writefile([@g], "/home/g/xv.vss", "a")
:elseif @g=~'http'
:call writefile([@g], "/home/g/dil.lo", "a")
:elseif @g=~'_\d\+'
:let @/='^'.@g.'$'
:norm nzz
:elseif @g=~'\a\+'
:vim /^\cg/ /mnt/1/dict/webster/all.txt
:else
:norm 0y$:@"
:endif
这是“g
的内容\S*\%>66c.*/\=substitute(submatch(0),'
以下是映射运行时生成的消息
E303: Unable to open swap file for "=substitute(submatch(0),'/", recovery impossible
Cannot open file "=substitute(submatch(0),'/"
"all.txt" 530590 lines --0%--
显然vim认为"g
的内容相当于\a\+
,因为它正式打开了all.txt
,并尝试在其中找到匹配(韦伯斯特字典)到@g
和该文件的唯一途径是通过上述测试。
有人可以向我解释为什么会这样做,或另外一种解释?
答案 0 :(得分:1)
=~
检查模式是否匹配。它不会为您添加锚点,因此如果字符串的任何部分匹配,则字符串计为匹配。
如果您只想接受字母字符,请使用'^\a\+$'
代替\a\+
。