Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code vscode vim扩展不写入实际字符?_Visual Studio Code_Vim_Vscode Settings - Fatal编程技术网

Visual studio code vscode vim扩展不写入实际字符?

Visual studio code vscode vim扩展不写入实际字符?,visual-studio-code,vim,vscode-settings,Visual Studio Code,Vim,Vscode Settings,我已经在vscode中定制了vim扩展,对于大多数模式,它都能正确执行命令。但是,如果我尝试编写实际的字符(因此不再是命令),则不会。为什么呢 例如: "vim.insertModeKeyBindingsNonRecursive": [ { "before": [ "<leader>", "o"

我已经在vscode中定制了vim扩展,对于大多数模式,它都能正确执行命令。但是,如果我尝试编写实际的字符(因此不再是命令),则不会。为什么呢

例如:

"vim.insertModeKeyBindingsNonRecursive": [
        {
            "before": [
                "<leader>",
                "o"
            ],
            "after": [
                "<Esc>",
                "i",
                "Abcd"
            ]
        },
]
“vim.InsertModeKeyBindings非递归”:[
{
“之前”:[
"",
“o”
],
“之后”:[
"",
“我”,
“Abcd”
]
},
]

这应该只写
Abcd
,因为在该序列之前是
i
,切换到插入模式。(因此,
->
i
是冗余的,这里只是一个示例)。vscode vim扩展执行
i
(因为我知道在该命令后我回到插入模式),但不会打印
Abcd
。为什么?扩展是否仅配置为执行命令而不是实际打印某些内容?如何启用该功能?

看起来您只需将
中“Abcd”
的每个字符拆分为一行:

"vim.insertModeKeyBindingsNonRecursive": [
    {
        "before": [
            "<leader>",
            "o"
        ],
        "after": [
            "<Esc>",
            "i",
            "A",
            "b",
            "c",
            "d"
        ]
    },
]
“vim.InsertModeKeyBindings非递归”:[
{
“之前”:[
"",
“o”
],
“之后”:[
"",
“我”,
“A”,
“b”,
“c”,
“d”
]
},
]
如项目的第页所述,您应该传递一个键字符(普通键为一个字符,特殊键为多个字符,如箭头键或转义键)

更新after值将解决以下问题:

"after": [
    "<Esc>",
    "i",
    "A", "b", "c", "d"
]
“之后”:[
"",
“我”,
“A”、“b”、“c”、“d”
]

您可以查看插件的内部结构,了解为什么插件不能处理多个字符传入,特别是函数,它可以用多个字符包装任何字符串。

这可能是一个愚蠢的问题。但是您是否尝试过从映射中删除
,“i”
部分?@DoktorOSwaldo我尝试过-相同的结果。但这只是一个例子。无论如何,在这两种情况下,Vscode vim都不会输出ithmm,请参见此处的调试选项。它还应该允许调试映射。不幸的是,由于我不使用vscode,因此我无法进一步帮助您。我只是对问题可能是什么有一个想法,而你的评论并没有指向这个方向。你能澄清一下你想要实现什么吗?在插入模式下,
o
将Abcd写入当前光标位置的文件?@dwrecked是的,应该这样做。但事实并非如此。我试图简单地“打印”(例如,使用快捷方式写入
Abcd
),但是使用vim扩展,我似乎无法像那样“打印”,这也没有帮助。嗯,除了将我的设置为显式的“\\”而不是,上面的内容目前对我来说很好。不幸的是,我不知道还有什么可以贡献-对此我很抱歉@milanHrabos还有一个问题-你是否看到你打字时插入的
o
,然后被删除了?当这对我有效时,这些字符将被插入,然后被删除并替换为
Abcd
。如果原始字符未被删除,则表明该命令从未触发。