我已经获得了一个巨大的代码库,其中之前的开发人员没有遵循80个字符的长度。我试图通过延续将很长的线条分成多行。这是一种IDL
语言。
之前
test_function, variable1, variable2, variable3, variable4, variable5, variabl6, variable7, vaiable8, variable9, variable10, ...
后
test_function, variable1, variable2, variable3, variable4, $
variable5, variable6, variable7, variable8, variable9, $
variable10
我使用formatprg
和this来格式化段落。我正在寻找一种方法,以便在comma
处约80个字符(并且可能添加延续($)符号)中断(明智地)线。这将节省大量时间,因为我不必手动将这些1000行分成80个字符。
谢谢。
答案 0 :(得分:1)
这是您的问题的答案:https://stackoverflow.com/a/1272247/5152421
Vim很容易做到这一点。
gq{motion} % format the line that {motion} moves over
{Visual}gq % format the visually selected area
gqq % format the current line
...
我建议您查看:help gq
和:help gw
。
另外,设置textwidth(tw
)会在打字时超出时自动换行。它也在gq
中使用,但是如果禁用gq
则会在窗口大小上打破,或者79取决于哪个会先出现。
:set tw=80
答案 1 :(得分:0)
我不知道如何通过格式化选项来设置它,但这种解决方法可以完成这项工作
:%s/\%>68c \%<78c/ $\r/
这意味着在列68(%s
)和78()之间用空格和
%>68c
替换(%<78c
)匹配空格($
)换行(\r
)。 78因为在行尾添加了两个字符。
还有一些评论可以保留,所以在运行第一次替换之前,请运行此命令
:%s/\(^\s\{-};\).*\%>68c\zs \%<78c/\r\1 /
这意味着替换以;
开头的行(可能还有一些空格(\s\{-}
)),在第68列到第78列之后开始匹配(\zs
),从头开始直到;
(\(^\s\{-};\)
)的行,并在换行后传递(\1
)。