每当我在插入模式下输入冒号时,它会将我的文本移动到行的开头。

5
每当我键入冒号(:)时,它会将当前行的所有文本移动到行的开头,忽略空格和制表符。
所以如果我输入:
var combo = new Ext.form.ComboBox({
  typeAhead //I'm about to type a colon, but right now it looks fine
})

然后我输入冒号,它会移动文本并且现在看起来像:

var combo = new Ext.form.ComboBox({
typeAhead: //text is no longer indented
})

这是一个JavaScript文件,可能是导致问题的原因?
我该如何防止输入冒号时我的文字被移动到行首?

你已经将 : 字符映射到某个命令上了。如果你退出并重新启动编辑器,问题是否仍然存在?检查你的 .vimrc 文件。 - Keith Thompson
:verbose imap:的输出是什么? - Kent
1个回答

9
在令牌末尾添加一个冒号会导致vim将其解释为C缩进目的的跳转标签。使用命令:set cino+=L0应该使其保留在当前列。
此外,JSON语法不允许您引用冒号之前的内容吗?这样做应该可以防止vim将其视为标签。
var combo = new Ext.form.ComboBox({
    "typeAhead": "foo"  // this isn't a jump label
});

或者使用 :setlocal autoindent,因为 cindent 并不特别适合 JavaScript。 - Ingo Karkat
@IngoKarkat 它运行得足够好。至少它能识别大括号 :) - hobbs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接