VIM & Python

2023-10-13 18:36:57 +08:00
 justdoit123
在用 vim 写花括号语言的时候,光标在函数体内,可以在 normal mode 里`vi{` 或者 `va{`来选中整个函数体。当然,这里只是举例,不限于函数体。

但是到了 python 里,我很好奇各位都是怎么快速选择一个函数体的?或者快速选择整个 class ?
2046 次点击
所在节点    Vim
10 条回复
daydreamcafe
2023-10-13 18:48:16 +08:00
如果是纯 vim ,可以装这个 plugin
Plug 'michaeljsmith/vim-indent-object'

python 的一个 function 或者 class 就是一块缩进 ident ,你想要的场景 vii vai 可以做到


如果是 vscode 中的 vim 插件,这个插件的功能有自带实现
daydreamcafe
2023-10-13 18:49:21 +08:00
@daydreamcafe typo fix ident -> indent
churchill
2023-10-13 18:58:56 +08:00
neovim 有 treesitter
xiaopanzi
2023-10-13 19:23:26 +08:00
vim 里面不清楚,但是 nvim 中实现它就很方便,借助插件`nvim-treesitter`。在 select 模式`af`就能选中一个函数;`ac`选中一个类。
llh880808
2023-10-13 20:32:38 +08:00
可以安装 pythonsense 插件,它可以提供针对 function/class/docstring 的 textobj ,

https://github.com/jeetsukumaran/vim-pythonsense
justdoit123
2023-10-13 21:10:52 +08:00
我用的不是纯 vim ,主要在 pycharm 里使用。纯 vim 偶尔在 server 的 cli 里使用。这些 plugin 貌似用不了。
z1645444
2023-10-13 23:59:34 +08:00
选中函数的话,Jetbrains IDEs 都有共通的一个 API 吧,op 既然是在 PyCharm 里面用 Vim keymapping ,那就看看 Extend Selection 功能吧,然后在你的 .ideavimrc 里 map 上吧,机器不在身边没法查看 API 是什么名
z1645444
2023-10-14 00:03:06 +08:00
justdoit123
2023-10-14 10:30:53 +08:00
@z1645444 感谢,这个多少能满足了我的需求。Pycharm 貌似没有专门 extend selection 到整个函数或者 class 的接口,不知道是不是我搜索得不对,不过直接用 extend selection 也够用。
yuancoder
2023-10-14 13:28:19 +08:00
michaeljsmith/vim-indent-object 试试这个插件,基于缩进的,很适合 python 这种

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

https://tanronggui.xyz/t/981801

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

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

© 2021 V2EX