VIM 如何强制 VIM 按照我的选择排列单词?

VIM 如何强制 VIM 按照我的选择排列单词?

嗯,我正在写作和学习。我只是想用这种方式写一些文字……

- First line.
  Second line.
  Third line.

但问题是这些线路是这样开始的......

- First line.
Second line.
Third line

你看出区别了吗?好吧,我做了一些研究,在超级用户中找到了一条建议使用 :set smartindent 的帖子。我照做了。它有效。但问题是这实际上迫使 Vim 从最后一行开始。现在,因为我从编辑器的左侧边缘开始一行,所以 Vim 会开始每一行新行,如第二个示例所示。现在的问题是,我如何才能像第一个示例中那样编写行?

答案1

为什么你希望编辑器总是选择正确的缩进?通过配置特定的缩进设置(例如 good 和 universal :set smartindent),您将获得大多数情况下都适用的东西。对于其他情况,您可以随时手动缩进(使用<Tab>,假设您已正确执行:set tabstop=... expandtab等),或者事后使用>>和更改缩进<<

如果您确实有一种特定的语法,其中缩进规则相当简单和确定(并且没有任何默认缩进设置始终有效),那么您必须编写自定义indentexpr(cp. :help indent-expression)。

由于您的示例是关于文本格式的,我不认为这适用,而且您最好进行'smartindent'手动更正。

答案2

我宁愿适当地设置“autoindent”、“formatlistpat”和“formatoptions”,而不是“smartindent”。例如:

" set up pattern to match list bullets and numbers
let &l:formatlistpat='^\s*\%(\d\+[\]:.)}\t ]\d\@!\|[*-]\)\s*'
" automatically format numbered or bulleted lists
setlocal formatoptions+=n
setlocal autoindent

在第一个命令中,您可以替换[*-]组内任何您喜欢的“项目符号”字符。

这将为您保留缩进,甚至会为您应用它gqip,但是当您输入不想具有列表格式的新行时,您需要自行删除缩进。

答案3

如果你的动机是编写文本列表,你应该检查vimwiki 插件,保存 vim 格式选项以供其他用途,如编码。

相关内容