Как отобразить восстановление в буфер обмена ОС в Vim?

Возможный дубликат:
vim: скопировать выделенный фрагмент в Буфер обмена OS X

Хотя мне удалось отобразить paste из буфера обмена (nmap <leader>p "*p), то же самое для yank (nmap <leader>y "*y), похоже, не работает. На самом деле он копается в буфере обмена Vim.

Есть идеи, как это сделать правильно? Я знаю clipboard=unnamed, но могу сохранить старые команды vim yank / paste.

РЕДАКТИРОВАТЬ. Кажется, есть некоторая путаница в моих потребностях.

Команда "*y работает. Так что с +clipboard в моем окружении Vim нет ничего плохого. Что не работает, так это картографирование.

Я хочу добавить что-то вроде:

nmap <leader>y "*y # Doesn't work as expected. It copies only in Vim's clipboard, ie I have to type `p` to paste the copied content instead of `"*p`.
nmap <leader>p "*p # Works as expected.

Я понятнее?

2-й РЕДАКТИРОВАТЬ: на всякий случай, потому что я понятия не имею, что могло бы помочь вам помочь мне, на моем компьютере есть рендеринг vim --version: https://gist.github.com/3090385


person Adrien    schedule 10.07.2012    source источник
comment
stackoverflow.com/a/679419/390913   -  person perreal    schedule 10.07.2012
comment
@perreal: % vim --version | grep clipboard -clientserver **+clipboard** +cmdline_compl +cmdline_hist +cmdline_info +comments @perreal, @GWW: Дело не в том, как копировать / вставлять с помощью буфера обмена ОС. Уже работает. Дело в том, как сопоставить эти команды. Это просто неправильное отображение, но я не знаю, почему ...   -  person Adrien    schedule 10.07.2012
comment
Отметьте :reg * и :reg ". когда вы делаете "*y, содержимое всегда помещается в регистр по умолчанию и синхронизируется с системным буфером обмена через регистр *. Когда вы делаете "*y, у вас должно быть одинаковое содержимое в обоих регистрах.   -  person romainl    schedule 10.07.2012
comment
Если вы добавите source $VIMRUNTIME/mswin.vim в свой .vimrc, вы можете использовать стандартные Ctrl + C / V для операций копирования / вставки из буфера обмена (+ Shift, если вы запускаете vim из консоли). Может, это тебе больше подойдет.   -  person MatijaSh    schedule 11.07.2012
comment
@romainl: Ты прав. Я не знал об этом. Я проверил и напрямую с помощью "*y помещает одно и то же содержимое в оба регистра. Но при использовании отображаемой команды ,y, где , - мой <leader>, затрагивается только регистр ". И это моя проблема. Я не понимаю, что не так, когда пытаюсь сопоставить эти вещи. Любая идея?   -  person Adrien    schedule 11.07.2012
comment
Используя то же самое сопоставление, что и вы (:nmap <leader>y "*y), я по-прежнему - по логике - получаю то же содержимое в " и в *. Единственный способ, которым я могу иметь различное содержимое в этих регистрах, - это делать y с :set clipboard=. Сопоставлено или нет, "*y всегда работает одинаково. Может он с чем-то еще конфликтует, попробуйте :verbose nmap <leader>y и :verbose nmap y.   -  person romainl    schedule 11.07.2012
comment
:verbose nmap <leader>y дал мне n ,y "*yr>y. Не уверен, что знаю, что это значит: '). :verbose nmap y дал мне No mapping found. Я попробовал :verbose nmap <leader>p, и это дало мне нечто подобное n ,p "*pr>p.   -  person Adrien    schedule 11.07.2012
comment
Ребята… Прекратите голосовать за комментарий @GWW. Как я уже сказал, я не хочу использовать буфер обмена ОС по умолчанию. Так что это не имеет отношения к связанной теме.   -  person Adrien    schedule 11.07.2012
comment
Если "*y работает, а сопоставление с "*y нет, то я предполагаю, что у вас есть какое-то другое сопоставление (возможно, в плагине?), Которое вызывает проблемы. Я думаю, вы идете по правильному пути с: verbose nmap. Может быть, происходит какое-то рекурсивное отображение? Ищите сопоставления с подстроками внутри вашей карты. И, может быть, попробуйте удалить плагины, пока проблема не исчезнет или не будет обнаружен проблемный плагин? Вы можете посмотреть execute "normal!" или _4 _...   -  person darcyparker    schedule 11.07.2012
comment
@darcyparker: Спасибо! В самом деле, noremap наконец-то спасти меня. Хотя совершенно не понимаю, что могло мешать. Из любопытства, как * искать сопоставления с подстроками внутри моей карты *? Я мог бы вернуться с более подробным ответом, даже если ваше решение меня устраивает :)   -  person Adrien    schedule 11.07.2012
comment
@AdrienGiboire: Попробуйте это. :redir @a, затем :nmap или :verbose nmap и, наконец, :redir END. Эти шаги в основном перенаправляют вывод nmap в регистр a. Затем создайте новый буфер, вставьте его в регистр a и используйте / поиск, чтобы найти такие вещи, как, * и y, чтобы увидеть, были ли они повторно отображены в некоторых случаях.   -  person darcyparker    schedule 11.07.2012
comment
@darcyparker: Большое спасибо! Я многому научился :)   -  person Adrien    schedule 12.07.2012


Ответы (1)


Если вы выбираете визуально перед рывком, вам нужно vmap, а не nmap. В противном случае восстановление является нормальной командой и ожидает команды движения.

person Conner    schedule 11.07.2012
comment
Верно! Теперь, когда ты мне это говоришь, это имеет смысл! Это было так просто! Спасибо ^^ - person Adrien; 12.07.2012