Поиск по сайту:

Доступ к содержимому буфера обмена в нескольких экземплярах Vim из терминала


Vim (Vi IMproved) — один из самых любимых текстовых редакторов среди программистов. Он имеет свои особенности выполнения различных операций с помощью коротких команд.

Например, чтобы скопировать выделенный текст, мы используем команду «y» и «x», чтобы вырезать его. Но по умолчанию содержимое буфера обмена vim (а не gVim) недоступно после закрытия экземпляров vim.

Vim использует регистр «+» для обращения к системному буферу обмена. Вы можете запустить «vim –version», и если вы не видите что-то вроде «+xterm_clipboard» и вместо этого «xterm_clipboard», то внутреннее содержимое буфера обмена не будет доступен за пределами vim.

Установите gvim и парцеллит.

Чтобы получить доступ к содержимому буфера обмена vim, вам необходимо установить пакет gvim. gVim — это режим графического интерфейса редактора Vim, в котором опция буфера обмена включена по умолчанию.

yum install -y gvim

Затем включите репозиторий RPMForge для установки пакета parcellite. Parcellite — легкий, миниатюрный и бесплатный менеджер буфера обмена для Linux.

yum install -y parcellite

После установки выполните следующую команду. Где аргумент «&» используется для отправки парцеллита для запуска в качестве фонового процесса.

parcellite &

Проверьте, включена ли эта опция в gvim.

gvim --version

Убедитесь, что в выводе отображается опция «+xterm_clipboard», как показано ниже.

VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:12:08)
Included patches: 1-411
Modified by <[email >
Compiled by <[email >
Huge version with GTK2 GUI.  Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent 
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+cryptv +cscope +cursorshape +dialog_con_gui +diff +digraphs +dnd -ebcdic 
+emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path 
+float +folding -footer +fork() +gettext -hangul_input +iconv +insert_expand 
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap 
+menu +mksession +modify_fname +mouse +mouseshape +mouse_dec +mouse_gpm 
-mouse_jsbterm +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte 
+multi_lang -mzscheme +netbeans_intg -osfiletype +path_extra +perl +postscript 
+printer +profile +python +quickfix +reltime +rightleft -ruby +scrollbind 
+signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax 
+tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse 
+textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual 
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup 
+X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save

Откройте файл .bashrc пользователя.

vim ~/.bashrc

Добавьте псевдоним и сохраните файл (нажмите «i», чтобы вставить строку, и нажмите ESC, затем запустите :wq, чтобы сохранить и выйти) .

.bashrc

User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vim='gvim -v'
Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

Этот псевдоним является встроенным, используемым для обхода одной команды другой. Таким образом, каждый раз, когда выдается команда vim, соответствующий псевдоним передается в gvim с включенным по умолчанию буфером обмена.

Теперь отредактируйте файл «.vimrc» аналогичным образом (если у вас нет файла .vimrc, создайте один такой файл и затем вернитесь сюда. .

vim ~/.vimrc

Добавьте следующую строку и сохраните файл.

autocmd VimLeave * call system("echo -n $'" . escape(getreg(), "'") . "' | xsel -ib")

Теперь откройте любой файл в vim, выделите часть текста (с помощью команды «v») и нажмите «+y». Попробуйте вставить куда-нибудь за пределы vim (после закрытия или без закрытия vim), и все готово.

Создание файла .vimrc

Выполните следующую команду, чтобы создать файл .vimrc (пропустите эту часть, если он у вас уже есть).

cd   [This will put you in home directory]       
vim .vimrc

В vim выполните следующее после нажатия клавиши ESC (в vim каждая команда запускается после нажатия клавиши ESC, которая переводит вас в командный режим).

:r $VIMRUNTIME/vimrc_example.vim 
:w