我已经尝试过vim-indent-object,python-mode,chapa,vim-python-object等。它们都不支持块结尾,也不支持上述动作的所有组合。
我记得有一次有一段时间,我有一个插件提供了
]]
,[[
,][
和[]
动作来开始/结束上一个/下一个方法/类,但是在插入的目录中找不到它(搜索“] [”和“ [] “”在我插入的目录中,并分析了所有出现的情况,但没有找到定义“] [”或“ []”的任何内容。)您知道我以前使用的插件吗?您知道提供此功能的任何插件吗?
#1 楼
随着$VIMRUNTIME/ftplugin/python.vim
的最新更新(2017年11月),以下针对ft的动作现在可用于python语言。[[
向后跳转到当前/上一个顶层开始[]
向后跳转到上一个顶层的末尾][
向前跳转到当前顶级的末尾]]
向前跳转到下一个顶层的开始[m
向后跳转到当前/上一个方法/范围的开头[M
向后跳转到上一个方法/范围的结尾]M
向前跳转到当前/结束的位置next方法/范围]m
跳转到next方法/范围的开始示例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带来此补丁。
–萨桑
17年7月7日在6:18
我猜暂时你可以手动安装它curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o〜/ .config / nvim / ftplugin /python.vim。
– Hotschke
17年7月7日在6:28
评论
vim.org/scripts/script.php?script_id=30?[[和]]由默认的python ftplugin提供。
@romainl感谢您提供信息,我了解[[,]],(,),{和}。 [[和]]在某些情况下很有用,但是我的主要问题是我需要[]和] [或类似的东西,它可以跳转到下一个/上一个方法/类的末尾。
@muru谢谢,它的] e解决了我的大多数问题,但是此插件中的某些映射似乎已损坏,例如] v或]>,我将尝试将其修复在fork中并发布。尽管我仍然想知道提供[]和[]的插件真的有用吗。