如果我没有输入与插入的自动标签一致的任何内容,Vim 会删除自动标签

标签 vim

一个很简单的例子:我想写一个函数,并且已经有好几级缩进(“函数”这个词之前的制表符)。我先写:

1     function doCoolStuff() {
2 
3     }

然后从第 3 行上升到第 2 行并开始输入函数的内容。但是,vim 不允许我在第 3 行键入括号并向上移动一行后删除第 2 行的自动插入选项卡。因此,每次编写新函数时,我都必须手动插入选项卡。事情是这样的:

当我输入函数的头部并按下回车时,它看起来像这样:

1     function doCoolStuff() {
2     ▊
3     

Vim 在第 2 行正确插入自动制表符。

但是!

然后我按 Enter 键,键入一个右括号并向上移动一行。 我希望它是这样的:

1     function doCoolStuff() {
2     ▊
3     }

但结果是这样的,第 2 行没有任何标签:

1     function doCoolStuff() {
2 ▊
3     }

似乎是vim看到有一行完全由制表符组成,并删除了制表符。如何禁止 vim 删除尾随制表符?

最佳答案

答案是在该行输入一些内容并再次删除,因为在这种情况下 ViM 将不会自动删除制表符:

:inoremap <CR> <CR>x<BS>

完成这项工作。见 this线程以获取更多信息。

关于如果我没有输入与插入的自动标签一致的任何内容,Vim 会删除自动标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117641/

相关文章:

Vim高亮显示用于复制到剪贴板的字符/单词/行

c++ - 用于更新 C++ 函数定义的 Vim 插件

vim - 在 Tmux 中向 Vim 发送 Ctrl-Right

css - 如何快速用不同的字符串替换字符串模式?

c++ - 编辑器核心缓冲区类型和语法突出显示

vim - 重新打开(Mac)Vim,并在关闭时打开文件

python - vim python 导航到导入的文件

vim - vim 中的 "E315: ml_get: invalid lnum: 87"错误

vim - 在 vim 状态行中显示当前函数

Cygwin 上的 Vim : Warn that vimrc is using windows end of line char