我有一个漂亮的组合键在括号中包含一个单词:
cw(<C-r><C-o>")<ESC>.
我想要做的是创建一个自定义绑定(,它可以在任何选择上运行.
如果我处于可视模式并选择了一个文本块或几个块,(则应将所有选定的块包装在括号中.
如果我处于正常模式并键入(3j,则应执行组合c3j(<C-r><C-o>")<ESC>.
谢谢您的帮助.
您需要的是正常模式'opfunc'和g@映射.所以它看起来像:
function WrapInParens(type, ...) abort
let sel_save = &selection
let &selection = "inclusive"
let reg_save = @@
if a:0 " Invoked from Visual mode, use gv command.
silent exe "normal! gvc(\<C-r>\<C-o>\")"
elseif a:type == 'line'
silent exe "normal! '[V']c(\<C-r>\<C-o>\")"
else
silent exe "normal! `[v`]c(\<C-r>\<C-o>\")"
endif
let &selection = sel_save
let @@ = reg_save
end
nnoremap ( :set opfunc=WrapInParens<CR>g@
Run Code Online (Sandbox Code Playgroud)
或类似的.这应该给你概述(我还没有测试过)
但是有2个插件可以提供这样的功能而不会覆盖(:
ys<motion>)sa<motion>)| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |