Копирование текущего буфера Vim в буфер обмена

Я пытаюсь скопировать буфер Vim в буфер обмена, и я сделал следующее:

:!cat %|pbcopy # Работает отлично

Затем я попытался сопоставить это с ключом лидера (это моя первая попытка сопоставить что-либо, поэтому, пожалуйста, извините, если что-то глупо найдено).

:map <leader>c :!cat %|pbcopy # Это не работает; vim жалуется: не команда редактора

2 ответа

Решение

Избежать трубы

:map <leader>c :!cat %\|pbcopy

Также рассмотрите возможность использования nnoremap для остановки рекурсивных отображений и завершения команды командой <CR> поэтому команда запускается автоматически.

nnoremap <leader>c :!cat %\|pbcopy<CR>

Вы также можете рассмотреть возможность использования shellescape, только если в файле есть пробелы или другие необычные символы

nnoremap <leader>c :exec '!cat '.shellescape('%').'\|pbcopy'<CR>

Или, как говорит Питер Рикнер, просто используйте

nnoremap <leader>c :w !pbcopy<cr>

Это будет работать на любой системе, а не только на Mac:

:nmap <leader>c :%y+

(Я никогда не могу вспомнить разницу между "+ а также "* регистрируется.) OTOH, ваш метод будет работать, если вы работаете на Mac, используя версию vim, которая не поддерживает GUI, такую ​​как /usr/bin/vi,

:help "+
:help :y
Другие вопросы по тегам