Python 基于Vim中的缩进级别标记块
是否可以根据已经就位的压痕在Vim中标记块?类似于v{ 它对于使用空格敏感语法的编程语言(如Haskell和Python)非常有用 例如,在此函数中标记第一个let和return之间的所有内容:Python 基于Vim中的缩进级别标记块,python,vim,haskell,whitespace,macvim,Python,Vim,Haskell,Whitespace,Macvim,是否可以根据已经就位的压痕在Vim中标记块?类似于v{ 它对于使用空格敏感语法的编程语言(如Haskell和Python)非常有用 例如,在此函数中标记第一个let和return之间的所有内容: checkArg (com:arg) s d ns | com == "add-source " = do let s' = v ++ s lift $ saveLinks s' return (s', d) | com == "remove-source"
checkArg (com:arg) s d ns
| com == "add-source " = do
let s' = v ++ s
lift $ saveLinks s'
return (s', d)
| com == "remove-source" = do
let s' = filter (not . hasWord str) s
lift $ saveLinks s'
return (s', d)
我使用:
这个插件基于缩进级别定义了一个新的文本对象。
这在Python等语言中非常有用,在Python中,语法
根据缩进定义范围。使用中定义的对象
这个插件,一个完整的if结构可以快速选择,例如
例如
这样,您可以使用标准Vim文本对象命令选择、删除、更改等块,使用“i”和“a”表示您所在的块:“vii”、“dii”等。
它与语言无关,但在Python等空白结构化语言中特别有用/相关。Jeet链接的插件看起来很整洁,但这里有一个简单的替代方案 如果您已
设置foldmethod=indent
可以使用视觉块选择
从第3行开始,只需键入V]z
:help fold-commands
在褶皱上移动
[z]
移动到当前打开折叠的开始处。如果已在开始处,则移动到包含该折叠的折叠的开始处。如果没有包含折叠,则命令失败。使用计数时,重复命令[count]次
]z
移动到当前打开折叠的末尾。如果已经在末尾,则移动到包含该折叠的折叠的末尾。如果没有包含折叠,则命令失败。使用计数时,重复命令[count]次
zj
向下移动到下一个折叠的开始处。闭合的折叠被计为一个折叠。使用计数时,重复命令[count]次。此命令可在操作员操作后使用
zk
向上移动到上一次折叠的末尾。闭合的折叠被计为一次折叠。使用计数时,重复命令[count]次。此命令可在操作员操作后使用
请参阅@sehe密切相关。这个问题及其答案是Python特有的。我想要一个语言不可知的解决方案。