我在代码中有一些文档,我想很好地格式化:
# book_id - integer
# chapter_id - integer (Optional)
# relative_url - Text: the url of the screencast file on S3, relative to the book's url
# view_count - integer
我安装了Tabular.vim,这让我走得很远:
# book_id - integer
# chapter_id - integer (Optional)
# relative_url - Text: the url of the screencast file on S3, relative to the book's url
# view_count - integer
我想要一些自动生成这样的代码的方法。也就是说,包裹到79个字符,如果从前一个注释继续一行,则缩进。我得到的是:
# book_id - integer
# chapter_id - integer (Optional)
# relative_url - Text: the url of the screencast file on S3, relative to the
# book's url
# view_count - integer
我正在寻找的是:
# book_id - integer
# chapter_id - integer (Optional)
# relative_url - Text: the url of the screencast file on S3, relative to the
# book's url
# view_count - integer
是否可以在现有的插件或热键序列中执行此操作?我知道gq
,它会将文本重新格式化为vim中设置的字符宽度,但它不会在注释等内容中添加缩进。
答案 0 :(得分:5)
您可以使用formatlistpat
选项(:set fo+=n
需要工作):
#
:%s/^# //
flp
选项:setl flp=^[^-]*-\\s
gggqG
#
:%s/^/# /
您还可以使用indentexpr
选项:
inde
选项:setl inde=15
:g/^/pu_
:g/^# $/d
答案 1 :(得分:0)
在这些记录的帮助下,自动执行任意任务的最简单方法也许就是这样。通过录制,您可以录制使用第一次时间修复文档的任何命令,然后非常轻松地重复这些命令。
例如,假设您提到的文档位于文件的开头:
首先,使用set textwidth=79
让Vim知道每行的最大字符数。然后:
qq
开始录制gg
转到文件开头gq}
重新格式化文档块。:Tabularize -
以使用您的插件:bnext
转到下一个缓冲区q
停止录制。现在,如果按1000@q
,将对vim中打开的所有缓冲区重复录制。您也可以在需要为当前文件执行时按@q
。有关详细信息,请查看:help gq
和:help q
。