V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
justdoit123
V2EX  ›  Vim

VIM & Python

  •  
  •   justdoit123 · 2023-10-13 18:36:57 +08:00 · 1962 次点击
    这是一个创建于 408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在用 vim 写花括号语言的时候,光标在函数体内,可以在 normal mode 里`vi{` 或者 `va{`来选中整个函数体。当然,这里只是举例,不限于函数体。

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

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


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

    https://github.com/jeetsukumaran/vim-pythonsense
    justdoit123
        6
    justdoit123  
    OP
       2023-10-13 21:10:52 +08:00
    我用的不是纯 vim ,主要在 pycharm 里使用。纯 vim 偶尔在 server 的 cli 里使用。这些 plugin 貌似用不了。
    z1645444
        7
    z1645444  
       2023-10-13 23:59:34 +08:00   ❤️ 1
    选中函数的话,Jetbrains IDEs 都有共通的一个 API 吧,op 既然是在 PyCharm 里面用 Vim keymapping ,那就看看 Extend Selection 功能吧,然后在你的 .ideavimrc 里 map 上吧,机器不在身边没法查看 API 是什么名
    z1645444
        8
    z1645444  
       2023-10-14 00:03:06 +08:00
    justdoit123
        9
    justdoit123  
    OP
       2023-10-14 10:30:53 +08:00
    @z1645444 感谢,这个多少能满足了我的需求。Pycharm 貌似没有专门 extend selection 到整个函数或者 class 的接口,不知道是不是我搜索得不对,不过直接用 extend selection 也够用。
    yuancoder
        10
    yuancoder  
       2023-10-14 13:28:19 +08:00
    michaeljsmith/vim-indent-object 试试这个插件,基于缩进的,很适合 python 这种
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:18 · PVG 10:18 · LAX 18:18 · JFK 21:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.