Vim 多行视觉选择行不';行不通
我编写了两个简单的函数,并定义了使用它们的映射。想法是对当前的视觉选择执行Vim 多行视觉选择行不';行不通,vim,Vim,我编写了两个简单的函数,并定义了使用它们的映射。想法是对当前的视觉选择执行grep类型搜索(使用ag) 代码如下: function! s:VisualAg() let temp = @" normal! gvy try call <SID>PrjAck('"'.@".'"', g:proj_root) catch let @" = temp echoerr v:exception endtry endfunction function!
grep
类型搜索(使用ag
)
代码如下:
function! s:VisualAg()
let temp = @"
normal! gvy
try
call <SID>PrjAck('"'.@".'"', g:proj_root)
catch
let @" = temp
echoerr v:exception
endtry
endfunction
function! s:PrjAck(pattern, ...)
" -S - smart case
" -U - ignore VCS ignore files
" -Q - Don't parse PATTERN as a regular expression
" -G - PATTERN Limit search to filenames matching PATTERN
let cmd = ":Ack -S -U -Q -G \"\\.(cpp\|h\|td)$\" ".a:pattern
for parameter in a:000
let cmd .= " ".parameter
endfor
execute cmd
xnoremap <leader>gw :call <SID>VisualAg()<cr>
函数!s:VisualAg()
让温度=@“
正常!gvy
尝试
调用PrjAck('''.@''',g:proj_root)
接住
设@“=temp
第五章:例外
末日
端功能
函数!s:PrjAck(模式,…)
“-S-智能机箱
“-U-忽略VCS忽略文件
“-Q-不要将模式解析为正则表达式
“-G-模式限制搜索到匹配模式的文件名
let cmd=“:Ack-S-U-Q-G\”\(cpp\\|h\|td)$\”。a:模式
对于a:000中的参数
设cmd.=“”.参数
外循环
执行命令
xnoremap gw:调用VisualAg()
映射似乎适用于在一行内进行的选择。但是,当我进行多行选择时,它不起作用
下面是我在多行选择上运行此代码时得到的结果
我试着调试它,并将s:PrjAck(pattern,…)
中的executecmd
行替换为echo cmd
坦白地说,我不太清楚到底发生了什么。我对vim脚本有点陌生,因此非常感谢您对解决问题的任何帮助。您是否尝试在shell中手动执行生成的命令?@Romaill我不知道为什么我没有这样做:D愚蠢的我,这应该是我的第一步。谢谢!!!交叉发布:@SatoKatsura不是任何more.re-write
Ack.vim
:)它是将换行符转换为NUL字符的vim的错误功能和未准备好进行这种输入的Ack.vim
的错误功能的组合。