Как скопировать выделенные строки в буфер обмена в vim. Я знаю, как это сделать для всех текстовых файлов , но я хочу сделать это для выбранных строк. Благодаря!
Как скопировать выделенные строки в буфер обмена в vim. Я знаю, как это сделать для всех текстовых файлов , но я хочу сделать это для выбранных строк. Благодаря!
Ответы:
SHIFTVпереводит вас в режим выбора строк. Затем "*yкопирует выбранные в данный момент строки в *
регистр, который является буфером обмена. Существует довольно много разных регистров для разных целей. Смотрите раздел selection and drop registers
для получения дополнительной информации о различиях между *
и +
регистрами на Windows , и Linux.
Если вы работаете в Linux и используете VIm версии 7.3.74 или выше (версия, которая устанавливается в Ubuntu 11.10 и более поздних версиях, удовлетворяет этому), вы можете сделать
set clipboard=unnamedplus
который поместит извлеченный текст в глобальный буфер обмена и позволит вам вставить его из глобального буфера обмена без использования каких-либо специальных регистров. В отличие от решения ldigas, это также будет работать с версиями VIm, отличными от gui.
vim-gnome
пакет вместо vim
.
vim --version | grep "+xterm_clipboard"
.
clipboard=unnamed
вместо него ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
set guioptions+=a
будет ... ммм, короче говоря, всякий раз, когда вы выбираете / дергаете что-то, также помещает это в буфер обмена (не в Vim, а в глобальную клавиатуру оконной системы). Таким образом, вам не нужно думать о занесении вещей в специальный регистр.
Для GVIM нажмите, v
чтобы перейти в визуальный режим; выделите текст и нажмите, Ctrl+Insert
чтобы скопировать выделение в глобальный буфер обмена.
Из меню вы можете видеть, что это горячая клавиша, "+y
т.е. удерживайте клавишу Shift, затем нажмите "
, +
затем отпустите Shift и нажмите y
(громоздко по сравнению с Shift + Insert).
Если вы используете vim в MAC OSX, к сожалению, он поставляется со старой версией и не соответствует параметрам буфера обмена. К счастью, домашнее пиво легко решает эту проблему.
установить vim:
brew install vim --with-lua --with-override-system-vim
установить графический интерфейс vim:
brew install macvim --with-lua --with-override-system-vim
перезапустите терминал, чтобы вступили в силу.
добавьте следующую строку в ~ / .vimrc
set clipboard=unnamed
теперь вы можете скопировать строку в vim с помощью yy
и вставить ее для всей системы.
Установите "xclip", если еще не ...
sudo apt-get install xclip
Xclip помещает данные в буфер обмена «выделенный / выделенный», который вы щелкаете средней кнопкой мыши, чтобы вставить, в отличие от «ctrl + v»
В vim используйте команды ex:
7w !xclip
или же
1,7w !xclip
или же
%w !xclip
Затем просто щелкните средней кнопкой мыши, чтобы вставить в любое другое приложение ...
Если vim скомпилирован с поддержкой буфера обмена, вы можете использовать "*y
значение: скопировать визуально выделенный текст в регистр *
('*' для буфера обмена)
Если нет поддержки буфера обмена, думаю, только другой способ - использовать Ctrl+Insert
после визуального выделения текста в vim.
Я добавил следующую строку в свой .vimrc
vnoremap <F5> "+y<CR>
Это позволяет скопировать выделенный текст в буфер обмена, нажав F5
. Чтобы это сработало, вы должны находиться в визуальном режиме.
~/.vimrc
Спасибо, это намного лучше.
Добавьте следующий код в свой .vimrc
:
if has('clipboard')
if has('unnamedplus') " When possible use + register for copy-paste
set clipboard=unnamed,unnamedplus
else " On mac and Windows, use * register for copy-paste
set clipboard=unnamed
endif
endif