我的需求是这样的,我要快速的复制一个完整的函数,于是我想映射成快捷键。
nnoremap <leader>c $v$%y
首先执行 shift+v,然后执行$%括号匹配,最后执行 y 复制, 但是发现函数名和大括号前面的没有复制到,我该怎么优化这个映射呢?
1
ccvzz 2023-04-03 01:27:20 +08:00
nnoremap <leader>c V$%y
|
2
kite12580 2023-04-03 01:27:35 +08:00
什么语言下的一个完整的函数?如果是 java 那种并且光标在函数定义那行上,你改成大写的 V ?
``` nnoremap <leader>c $V%y ``` 用 text object 会更方便点 ``` xnoremap af v$va}o^ onoremap <silent> af :normal vaf<CR> ``` 然后要复制按 `yaf` ,也可以 `daf`, `caf` 网上大概有插件吧,只这么写不能处理光标在花括号嵌套花括号里的情况 |
4
BBCCBB 2023-04-03 09:47:25 +08:00
如果你在用 lsp, 比如 coc.nvim 这种, 他有实现 text object. 可以快速表示方法. 类..
比如 af 代表整个方法, if 代表除方法签名的部分. 其他还有 ac, ic 之类的.. neovim 的话 treesitter 也有类似的实现. text object.. |