![VIM 如何强制 VIM 按照我的选择排列单词?](https://linux22.com/image/1442291/VIM%20%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6%20VIM%20%E6%8C%89%E7%85%A7%E6%88%91%E7%9A%84%E9%80%89%E6%8B%A9%E6%8E%92%E5%88%97%E5%8D%95%E8%AF%8D%EF%BC%9F.png)
嗯,我正在写作和学习。我只是想用这种方式写一些文字……
- 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 格式选项以供其他用途,如编码。