在用 vim 写花括号语言的时候,光标在函数体内,可以在 normal mode 里`vi{` 或者 `va{`来选中整个函数体。当然,这里只是举例,不限于函数体。
但是到了 python 里,我很好奇各位都是怎么快速选择一个函数体的?或者快速选择整个 class ?
但是到了 python 里,我很好奇各位都是怎么快速选择一个函数体的?或者快速选择整个 class ?

1 tY3N62hFz90E74bK Oct 13, 2023 如果是纯 vim ,可以装这个 plugin Plug 'michaeljsmith/vim-indent-object' python 的一个 function 或者 class 就是一块缩进 ident ,你想要的场景 vii vai 可以做到 如果是 vscode 中的 vim 插件,这个插件的功能有自带实现 |
2 tY3N62hFz90E74bK Oct 13, 2023 @daydreamcafe typo fix ident -> indent |
3 churchill Oct 13, 2023 neovim 有 treesitter |
4 xiaopanzi Oct 13, 2023 vim 里面不清楚,但是 nvim 中实现它就很方便,借助插件`nvim-treesitter`。在 select 模式`af`就能选中一个函数;`ac`选中一个类。 |
5 llh880808 Oct 13, 2023 可以安装 pythonsense 插件,它可以提供针对 function/class/docstring 的 textobj , https://github.com/jeetsukumaran/vim-pythonsense |
6 justdoit123 OP 我用的不是纯 vim ,主要在 pycharm 里使用。纯 vim 偶尔在 server 的 cli 里使用。这些 plugin 貌似用不了。 |
7 z1645444 Oct 13, 2023 选中函数的话,Jetbrains IDEs 都有共通的一个 API 吧,op 既然是在 PyCharm 里面用 Vim keymapping ,那就看看 Extend Selection 功能吧,然后在你的 .ideavimrc 里 map 上吧,机器不在身边没法查看 API 是什么名 |
8 z1645444 Oct 14, 2023 |
9 justdoit123 OP z1645444 感谢,这个多少能满足了我的需求。Pycharm 貌似没有专门 extend selection 到整个函数或者 class 的接口,不知道是不是我搜索得不对,不过直接用 extend selection 也够用。 |
10 yuancoder Oct 14, 2023 michaeljsmith/vim-indent-object 试试这个插件,基于缩进的,很适合 python 这种 |