python块运动结束


13

我需要一个移动到python块结束/开始的动作,并且我需要另一个移动到上一个/下一个方法/类(所有组合)的开始/结束的动作。

我已经尝试过vim-indent-object,python-mode,chapa,vim-python-object等。它们都不支持块结尾,也都不支持上述动作的所有组合。

我记得曾几何时我有一个插件提供]][[][[]运动的begining一个/下一个方法/班/结束,但在我插上目录我找不到它(搜索“] [”和“[]”在我插入的目录中并分析了所有出现的情况,但未找到定义“] [”或“ []”的任何内容)。

您知道我以前使用的插件吗?您知道提供此功能的任何插件吗?



3
[[]],由默认的python ftplugin提供。
romainl

1
对于信息@romainl谢谢,我知道[[]](){}[[]]在某些情况下非常有用,但我的主要问题是我需要[]][或类似的东西,它提供跳转到下一个结束/以前的方法/类的。
萨桑

1
@muru谢谢,它]e解决了我的大多数问题,但是此插件中的某些映射似乎已损坏,]v或者]>我将尝试用fork修复它们并将其发布。尽管我仍然想知道提供的插件是什么][[]它真的很有用。
萨桑

Answers:


11

随着$VIMRUNTIME/ftplugin/python.vimft特定动作的最新更新(2017年11月),现在可用于python语言

  • [[ 向后跳以开始当前/上一个顶层
  • [] 向后跳到上一个顶级的末尾
  • ][ 跳转到当前顶级的末尾
  • ]] 跳转到下一个顶层的开始
  • [m 向后跳以开始当前/先前的方法/范围
  • [M 向后跳到上一方法/范围的末尾
  • ]M 跳转到当前/下一个方法/范围的末尾
  • ]m 向前跳以开始下一个方法/范围

示例python文件

class previous:             # [[[[

    def method_first:
        pass
    # ...

    def method_last:
        pass                # []

class current:              # [[ or [m...[m[m

    def method_first:       # [[]m or [m...[m
        pass                # [[]M or [M...[M
    # ...

    def method_previous:    # [m[m
        pass                # [M

    def method_current:     # [m
        # CURSOR <---------------------------
        pass                # ]M

    def method_next:        # ]m
        pass                # ]M]M
    # ...

    def method_last:        # ][[m or ]m...]m
        pass                # ][   or ]M...]M

class previous:             # ]]   or ]m...]m]m

    def method_first:
        pass
    # ...

def global_func:            # ]]]]
    pass

如果您的vim补丁程序级别至少为,则应包含此更新8.0.1256

如果您无法更新但想要使用此功能,则可以将最新版本安装到~/.vim目录中:

$ curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o ~/.vim/ftplugin/python.vim

插件Pythonsense

这个插件提供了类似的动作,但是稍作修改:

Vim 8.0的“类”运动(“ ]]”,“ [[”等),查找从第一列开始的块,无论这些块是类还是功能块,而其方法/函数运动(“ [m”, “ ]m”等)找到任何缩进的所有块,无论它们是类块还是功能块。相反,“ Pythonsense”类动作用于查找所有类定义,而不论它们的缩进级别如何,而其方法/函数动作则用于查找所有方法/函数定义,而不论它们的缩进级别如何。

所有详细信息和示例均在https://github.com/jeetsukumaran/vim-pythonsense#stock-vim-vs-pythonsense-motions中给出。


我应该等到neovim带来此补丁。
萨珊

1
我猜暂时您可以手动安装它curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o ~/.config/nvim/ftplugin/python.vim
Hotschke
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.