4

我有一些我想很好地格式化的代码文档:

# 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 中设置的字符宽度,但不会在注释等内容中添加缩进。

4

2 回答 2

5

您可以使用formatlistpat选项(:set fo+=n工作所需):

1.删​​除#

:%s/^# //

2.设置flp选项

:setl flp=^[^-]*-\\s

3. 格式化

gggqG

4.前置#

:%s/^/# /

您还可以使用以下indentexpr选项:

2a。设置inde选项

:setl inde=15

2b。插入空行

:g/^/pu_

5.删除空评论

:g/^# $/d
于 2012-09-28T02:33:47.410 回答
0

也许自动化此类任意任务的最简单方法是借助录音。通过录音,您可以记录您一次修复文档时使用的任何命令,然后非常轻松地重复它们。

例如,假设您提到的文档位于文件的开头:

首先,set textwidth=79用来让 Vim 知道每行的最大字符数。然后:

  1. 按下qq开始录制
  2. 按下gg以转到文件的开头
  3. gq}重新格式化文档块。
  4. 按下:Tabularize -以使用您的插件
  5. :bnext转到下一个缓冲区
  6. q停止录制。

现在,如果您按下1000@q,将为所有在 vim 中打开的缓冲区重复录制。您也可以@q在想要对当前文件执行时按。查看:help gq:help q了解更多信息。

于 2012-09-28T09:51:22.450 回答