我只是尝试对在可视模式下选择的文本执行一些命令。
如果我选择一些文字&然后按y(对于yank)或d(对于删除),它会拉动或删除所选文本
但是我需要能够从命令行执行此操作(因为我正在编写一个函数,我将重新映射到我的一个键)。
但是,当我从视觉模式'<,'>
输入命令行时,默认情况下是这样,所以我只是尝试将y或d附加到它的末尾,只留下:'<,'>d
然而,问题是它删除了视觉选择所在的整行。我只想删除我在该行中做出的选择。
我试过看http://vim.wikia.com/wiki/Search_and_replace_in_a_visual_selection,但我尝试的任何东西似乎都没有用。
我敢肯定它一定很简单,但我不知道是什么。任何帮助将不胜感激。
答案 0 :(得分:1)
所有Vim native ex命令都在行上工作。我想你可以逆转这种趋势。但是,您似乎只想创建一个命令,以便您可以映射一些键。您可能只想直接调用该函数或改为创建<Plug>
或<SID>
映射。
xnoremap * :<c-u>call YourFunctionGoesHere<cr>
这里使用:<c-u>call
的秘诀。您可能希望在函数中使用:normal! gv
。
<Plug>
这是一个快速,简洁的视觉开始示例,显示:
function! s:vstar()
let reg = @@
normal! gvy
let @/ = '\V' . substitute(escape(@@, '\'))
let @@ = reg
endfunction
xnoremap <Plug>(vstar) :<c-u>call <SID>vstar()<cr>/<c-r>/<cr><cr>
这展示了如何创建<Plug>
地图,该地图显示了如何调用一个与直接调用函数相同的函数示例。使用<SID>
/ s:
可确保该功能是&#34;命名空间&#39; d&#34;到当前的脚本。
现在,您可以将*
映射到<Plug>
映射中的~/.vimrc
映射:
xmap * <Plug>(vstar)
这就是Vim Plugin创建映射的方式。学习Vim插件的一个好的起点是:h write-plugin
,并查看一些非常流行的vim插件。我建议你看看Tim Pope或Ingo Karkat的插件,因为他们都是非常多产的作家。
如需更多帮助,请参阅:
:h <Plug>
:h <SID>
:h using-<Plug>
:h write-plugin
:h c_ctrl-u
:h :norm