是否可以根据已经存在的缩进在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" = do
let s' = filter (not . hasWord str) s
lift $ saveLinks s'
return (s', d)
答案 0 :(得分:7)
此插件根据缩进级别定义新的文本对象。 这在Python等语言中非常有用,其中包含语法 根据缩进定义范围。使用中定义的对象 这个插件,可以快速选择整个if结构 示例
这样,您可以使用标准的Vim文本对象命令选择,删除,更改等块,使用“i”和“a”来指代您所在的块:“vii”,“dii”等 它与语言无关,但在Python等空白结构语言中特别有用/相关。
答案 1 :(得分:4)
插件Jeet链接到看起来整洁,但这是一个简单的替代方案。
如果您set foldmethod=indent
...
您可以使用视觉块选择。
从第3行开始,只需输入V]z
。
:help fold-commands
移动超过
[Z
移动到当前打开折叠的开头。如果已经在开始时,请移动到包含它的折叠的开头。如果没有包含折叠,则命令失败。使用计数时,重复命令[count]次。
】Z
移动到当前打开折叠的末尾。如果已经在最后,请移动到包含它的折叠的末尾。如果没有包含折叠,则命令失败。使用计数时,重复命令[count]次。
ZJ
向下移动到下一个折叠的开头。闭合折叠计为一次折叠。使用计数时,重复命令[count]次。该命令可以在运算符之后使用。
ZK
向上移动到上一个折叠的末尾。闭合折叠计为一次折叠。使用计数时,重复命令[count]次。该命令可以在运算符之后使用。