【问题标题】:Vim Autoindent WhitespaceVim 自动缩进空格
【发布时间】:2011-07-23 18:06:31
【问题描述】:

我正在尝试将 Vim 用作编辑器,但是当我使用自动缩进功能时,它会删除我没有文本的缩进。这真的很烦人。它也被记录在案。

有没有办法阻止它这样做?

另外,这不是 this question 的重复,因为它可以解决问题。

【问题讨论】:

  • 您可以查看preserveindentcopyindent 选项。我无法让他们工作。我认为通常程序员会因为历史版本控制的原因而忽略尾随空格,以便有一个换行标准以最小化差异创建,并且因为它们是强迫性的(包括我自己)。如果你不认真编辑,也许 Kate 的 vim 输入模式会是一个选择。
  • 我都试过了。我可能需要修补代码。 :l
  • 究竟为什么会让人讨厌?我的意思是,只是它与您的预期不同吗?或者它是否以某种方式对您的使用产生负面影响,如果是,如何影响? (我问是因为调整你对 Vim 的使用,使自动缩进行为变得不明显似乎比在补丁上浪费时间更可取,特别是当有充分的理由避免只有空格的行时......)
  • @Herbert 我不了解提问者,但我确实觉得很烦人,当我从插入模式点击 Ctrl+O 将某些内容粘贴到空白但缩进的行上时,缩进消失了。
  • @gato.. :或者 ctrl-F 在插入模式下会将行重新缩进到前一个缩进,因此您可以执行 <ctrl-O>p<ctrl-F> (和/或创建映射以使用 <ctrl-F> 如果您愿意)。

标签: vim whitespace


【解决方案1】:

将以下内容添加到您的.vimrc:

inoremap <CR> x<BS><CR>

如果您在一行中输入任何内容,即使您立即删除了您输入的内容,Vim 也不会消除缩进。这就是映射的作用。

This 页面建议使用另一种更精细的方法来处理您的请求。但坦率地说,我认为你应该采用 Vim 的默认行为,即不缩进空行。这是通常避免只有空格的行的正确方法。

【讨论】:

  • 好建议。几乎所有 Vim 的特性,包括有问题的行为,都经过深思熟虑。
  • 解决了这个问题,但我发现自动缩进将三个空格转换为一个制表符和一个空格,因为我的制表位是 2。所以我想现在不可能了。
  • Jookia -- 您要确保您的 shiftwidthtabstop 设置相同。 (看起来您的 shiftwidth 现在是 3,而您的 tabstop 现在是 2。)您可能还想研究 expandtab 选项,这将确保所有缩进的空格都使用空格而不是制表符。
猜你喜欢
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多