переназначение с текстовым объектом плагина yank не работает

У меня установлены плагин 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', это сработает.

По какой причине я не могу использовать текстовые объекты плагина внутри такого переназначения?


person gregjor    schedule 24.05.2018    source источник
comment
Предположительно, плагин переназначает yiq, но вы сказали, что вам нужен родной vim yiq (noremap), который AFAICT ничего не делает.   -  person melpomene    schedule 24.05.2018
comment
Нет, мне нужно поведение плагина yiq. Он не переназначает y, но добавляет новые текстовые объекты iq и aq.   -  person gregjor    schedule 24.05.2018
comment
Но вы ответили на мой вопрос... nmap не nnoremap. Дух. Спасибо.   -  person gregjor    schedule 24.05.2018


Ответы (1)


nore в nnoremap означает «не пытайтесь выполнять другие сопоставления во время выполнения этого». Это делает ваше сопоставление нерекурсивным.

Поскольку вы явно хотите использовать другое сопоставление в своем сопоставлении, оно должно быть рекурсивным:

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