使用插件文本对象重映射 yank 不起作用

remap with plugin text object yank not working

我安装了 textobjects-user 和 textobject-quotes 插件,使用 vim 8。这些让我可以处理多行字符串,所以我可以将光标放在多行引用字符串中, diq 删除或 yiq 猛拉。这些文本对象有效,所以我知道该插件有效。

我试图定义一个简单的键重映射,这样我就可以提取引用字符串的内容,在新的拆分中打开它,并去除多余的空格:

nnoremap <leader>Q yiq<CR>:vnew<CR>p:%s/^\s\+//<CR>

没用。如果我删除 yiq<CR> 并从键盘上执行此操作,则调用 <leader>Q 拆分和粘贴以及空白剥离工作。如果我将 yiq 更改为 yi' 它会起作用。

为什么我不能像这样在重映射中使用插件的文本对象?

nnoremap中的nore表示"don't try to execute other mappings while executing this one"。它使您的映射 非递归 .

由于您明确想在映射中使用另一个映射,因此它必须是 递归的:

nmap <leader>Q yiq<CR>:vnew<CR>p:%s/^\s\+//<CR>