我使用 vim 8 安装了 textobjects-user 和 textobject-quotes 插件。这些允许我使用多行字符串,因此我可以将光标放在多行带引号的字符串中,并diq
删除或yiq
拉动。这些文本对象有效,所以我知道插件有效。
我试图定义一个简单的键重新映射,以便我可以拉动带引号的字符串的内容,以新的拆分打开它,并去除多余的空格:
nnoremap <leader>Q yiq<CR>:vnew<CR>p:%s/^s+//<CR>
它不起作用。如果我删除yiq<CR>
并从键盘上执行此操作,则调用<leader>Q
拆分和粘贴以及空格剥离工作。如果我将yiq
更改为yi'
它就可以工作。
有什么理由我不能在这样的重映射中使用插件的文本对象吗?
nnoremap
中的nore
表示"在执行此映射时不要尝试执行其他映射"。它使您的映射非递归。
由于您明确希望在映射中使用另一个映射,因此它必须是递归的:
nmap <leader>Q yiq<CR>:vnew<CR>p:%s/^s+//<CR>