为什么打开新文件时会自动执行我的多命令vim命令模式缩写?

为什么打开新文件时会自动执行我的多命令vim命令模式缩写?,vim,Vim,今天,我意识到我需要经常将普通文本文件转换为python列表数据结构 因此,我为自己制作了一个vim命令行缩写 看起来是这样的: " wrap all current file datas with python list formats ca ml %s/^/"/g | %s/$/",/g | 1s/^/[/ | $s/$/]/ 我已经测试了命令体部分:%s/^/“/g |%s/$/”、/g | 1s/^/[/|$s/$/]/ 当我将它们粘贴到vim命令行时,它的行为与我预期的一样 但是当我

今天,我意识到我需要经常将普通文本文件转换为python列表数据结构

因此,我为自己制作了一个vim命令行缩写

看起来是这样的:

" wrap all current file datas with python list formats
ca ml %s/^/"/g | %s/$/",/g | 1s/^/[/ | $s/$/]/
我已经测试了命令体部分:
%s/^/“/g |%s/$/”、/g | 1s/^/[/|$s/$/]/

当我将它们粘贴到vim命令行时,它的行为与我预期的一样

但是当我将上述vim配置添加到我的
.vimrc

每次我用vim打开一个新文件时,它都会自动执行

例如
vim empty_file
将向新文件添加以下内容:

[",]
为什么会发生这种情况?

如何修复它,使命令体仅在我在vim命令行中键入
ml
时执行

我认为你应该用
替换
字符:


我认为你应该用
替换
字符:


我认为你应该用
替换
字符:


我认为你应该用
替换
字符:


它们之间有什么区别?
|
分隔命令。因此,第一个
|
将结束缩写词的定义,然后执行替换命令。但是,如果您使用
,则仅当缩写词展开时,才会将其替换为
。@Zen如果使用
而不是
,vim将理解缩写词结束,随后是另一个命令,如
:h map_bar
中所述。它们之间有什么区别?
分隔命令。因此,第一个
|
将结束缩写词的定义,然后执行替换命令。但是,如果您使用
,则仅当缩写词展开时,才会将其替换为
。@Zen如果使用
而不是
,vim将理解缩写词结束,随后是另一个命令,如
:h map_bar
中所述。它们之间有什么区别?
分隔命令。因此,第一个
|
将结束缩写词的定义,然后执行替换命令。但是,如果您使用
,则仅当缩写词展开时,才会将其替换为
。@Zen如果使用
而不是
,vim将理解缩写词结束,随后是另一个命令,如
:h map_bar
中所述。它们之间有什么区别?
分隔命令。因此,第一个
|
将结束缩写词的定义,然后执行替换命令。但是,如果您使用
,则只有当缩写词展开时,它才会被替换为
。@Zen如果使用
而不是
,vim将理解缩写词结束了,随后是另一个命令,如
:h map\u bar
中所述。
ca ml %s/^/"/g <bar> %s/$/",/g <bar> 1s/^/[/ <bar> $s/$/]/
:h map_bar