如何从Vim函数执行可视模式命令?

时间:2011-02-22 21:52:07

标签: vim

我有一个函数,它需要执行一串命令,并确保'paste'在运行之前处于打开状态。我正在寻找的是类似于以下内容:

vmap <silent> <C-K> :<C-U>call InPasteMode("<Plug>ReplaceVisual")<CR>
function! InPasteMode(command)
  let oldpaste = &l:paste
  try
    set paste
    execute "normal" a:command
  finally
    let &l:paste = oldpaste
  endtry
endfunction

但是命令"<Plug>ReplaceVisual"需要在可视模式下运行,而不是在普通模式下运行。

是否有像:normal这样的命令在可视模式下运行按键?

1 个答案:

答案 0 :(得分:8)

gv恢复最后的视觉选择。因此,像execute "normal gv" . a:command这样的东西应该有效。