vim 快捷键映射求助

2023-04-03 01:02:56 +08:00
 jeesk

我的需求是这样的,我要快速的复制一个完整的函数,于是我想映射成快捷键。

nnoremap <leader>c $v$%y

首先执行 shift+v,然后执行$%括号匹配,最后执行 y 复制, 但是发现函数名和大括号前面的没有复制到,我该怎么优化这个映射呢?

1540 次点击
所在节点    Vim
4 条回复
ccvzz
2023-04-03 01:27:20 +08:00
nnoremap <leader>c V$%y
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`

网上大概有插件吧,只这么写不能处理光标在花括号嵌套花括号里的情况
jeesk
2023-04-03 09:15:56 +08:00
@ccvzz @kite12580 谢谢 2 位.
BBCCBB
2023-04-03 09:47:25 +08:00
如果你在用 lsp, 比如 coc.nvim 这种, 他有实现 text object. 可以快速表示方法. 类..

比如 af 代表整个方法, if 代表除方法签名的部分.
其他还有 ac, ic 之类的..


neovim 的话 treesitter 也有类似的实现. text object..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/929274

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX