当前位置:K88软件开发文章中心编程工具Vim → 文章内容

Vimscript 实例研究:Grep运算符(Operator),第二部分

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:53:56

e return endif echom shellescape(@@)endfunction保存并source文件,然后在可视模式下选中带特殊字符的文本,按下<leader>g。 Vim显示一个被转义了的能安全地传递给shell命令的文本。执行Grep我们终于可以加上grep!命令来实现真正的搜索。替换掉echom那一行,代码看起来就像这样:nnoremap <leader>g :set operatorfunc=GrepOperator<cr>g@vnoremap <leader>g :<c-u>call GrepOperator(visualmode())<cr>function! GrepOperator(type) if a:type ==# 'v' normal! `<v`>y elseif a:type ==# 'char' normal! `[v`]y else return endif silent execute "grep! -R " . shellescape(@@) . " ." copenendfunction看起来眼熟吧。我们简单地执行上一章得到的silent execute "grep! ..."命令。 由于我们不再把所有的代码塞进单个nnoremap命令里,现在代码甚至更加清晰易懂了!保存并source文件,然后尝试一下,享受自己辛勤劳动的成果吧!因为定义了一个全新的Vim运算符,现在我们可以在许多场景下使用它了,比如:viw<leader>g: 可视模式下选中一个词,然后grep它。<leader>g4w: Grep接下来的四个词。<leader>gt;: Grep到分号为止的文本。<leader>gi[: Grep方括号里的文本.这里彰显了Vim的优越性:它的编辑命令就像一门语言。当你加入新的动词,它会自动地跟(大多数)现存的名词和形容词搭配起来。练习阅读:help visualmode()。阅读:help c_ctrl-u。阅读:help operatorfunc。阅读:help map-operator。

上一页  [1] [2] 


Vimscript 实例研究:Grep运算符(Operator),第二部分