在Vim脚本/插件中,如何用可视选择字符串替换新字符串?

Dav*_*rth 9 vim

我想尝试编写一些简单的VIM插件.我想到的是涉及采用当前的视觉选择,处理该字符串然后用结果替换选择.后来我想尝试扩展它来处理文本对象和范围.

具体来说,我想知道如何:

  • 从当前的字符选择中获取字符串
  • 删除选择
  • 插入我的新字符串

Her*_*itz 7

有不同的方法来做到这一点.下面是一个.假设您想获得当前选择的价值并以某种方式使用它来决定要替换的新字符串; 如果新字符串是完全独立的,您可以在下面执行一两步:

"map function to a key sequence in visual mode
vmap ,t :call Test()<CR>

function! Test()
   "yank current visual selection to reg x
   normal gv"xy
   "put new string value in reg x
   " would do your processing here in actual script
   let @x = @x . 'more'
   "re-select area and delete
   normal gvd
   "paste new string value back in
   normal "xp
endfunction
Run Code Online (Sandbox Code Playgroud)