Настроить VIM для копирования и вставки сочетаний клавиш из системного буфера в Ubuntu?

20398
wonea

Как настроить VIM для использования Ctrl- cскопировать и Ctrl- vвставить из системного буфера в Ubuntu?

13
http://superuser.com/questions/10588/how-to-make-cut-copy-paste-in-gvim-on-ubuntu-work-with-ctrlx-ctrlc-ctrlv/10604 innaM 14 лет назад 1
Могу ли я предложить крем? http://cream.sourceforge.net/ Это вариант vim, специально разработанный для пользователей, которые не чувствуют себя комфортно в работе vim. Rook 14 лет назад 0

3 ответа на вопрос

16

Поведение по умолчанию в MS Windows: -

Вот выдержка из файла mswin.vim: -

" CTRL-X and SHIFT-Del are Cut vnoremap <C-X> "+x vnoremap <S-Del> "+x  " CTRL-C and CTRL-Insert are Copy vnoremap <C-C> "+y vnoremap <C-Insert> "+y  " CTRL-V and SHIFT-Insert are Paste map <C-V> "+gP map <S-Insert> "+gP  cmap <C-V> <C-R>+ cmap <S-Insert> <C-R>+  " Pasting blockwise and linewise selections is not possible in Insert and " Visual mode without the +virtualedit feature. They are pasted as if they " were characterwise instead. " Uses the paste.vim autoload script.  exe 'inoremap <script> <C-V>' paste#paste_cmd['i'] exe 'vnoremap <script> <C-V>' paste#paste_cmd['v']  imap <S-Insert> <C-V> vmap <S-Insert> <C-V>  " Use CTRL-Q to do what CTRL-V used to do noremap <C-Q> <C-V> 

и скрипт paste.vim, который требуется для режима вырезания / вставки блока: -

 " Vim support file to help with paste mappings and menus " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2006 Jun 23  " Define the string to use for items that are present both in Edit, Popup and " Toolbar menu. Also used in mswin.vim and macmap.vim.  " Pasting blockwise and linewise selections is not possible in Insert and " Visual mode without the +virtualedit feature. They are pasted as if they " were characterwise instead. Add to that some tricks to leave the cursor in " the right position, also for "gi". if has("virtualedit") let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"} let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n'] let paste#paste_cmd['i'] = 'x<BS><Esc>' . paste#paste_cmd['n'] . 'gi'  func! paste#Paste() let ove = &ve set ve=all normal! `^ if @+ != '' normal! "+gP endif let c = col(".") normal! i if col(".") < c " compensate for i<ESC> moving the cursor left normal! l endif let &ve = ove endfunc else let paste#paste_cmd = {'n': "\"=@+.'xy'<CR>gPFx\"_2x"} let paste#paste_cmd['v'] = '"-c<Esc>gix<Esc>' . paste#paste_cmd['n'] . '"_x' let paste#paste_cmd['i'] = 'x<Esc>' . paste#paste_cmd['n'] . '"_s' endi 
Для пользователей Windows, которые случайно попали сюда по SEO (OP - Ubuntu), добавьте `source $ VIMRUNTIME / mswin.vim` вверху вашего файла _vimrc. Что-нибудь интересное, что мешает вам * успешно * включить файл в Linux? ruffin 11 лет назад 2
@ruffin Проверяя источник, который вы увидите, если операторы для UNIX, так что создатель также имел в виду использование mswin.vim в Linux. RoliSoft 9 лет назад 1
Установка `CV` для вставки нарушит режим ввода специальных символов: http://vim.wikia.com/wiki/Entering_special_characters#By_character_value g33kz0r 9 лет назад 0
0
osirisgothra

Это просто минимально, при условии, что большинство настроек по умолчанию **:

:behave mswin :set clipboard=unnamedplus :smap <Del> <C-g>"_d :smap <C-c> <C-g>y :smap <C-x> <C-g>x :imap <C-v> <Esc>pi :smap <C-v> <C-g>p :smap <Tab> <C-g>1>  :smap <S-Tab> <C-g>1< 
  • строка 1: делает стрелки shift + выделять текст (и делает больше *)

  • строка 2: делает "+ (и" *) регистром по умолчанию (графический интерфейс / буфер обмена)

  • строки 3,4,5,6: делает Ctrl-x / c / v вырезать / копировать и вставить

  • строка 7,8: делает выбор TAB / SHIFT + TAB для отступа / отступа

Осторожно: *** [: set] могут изменить это поведение, и, возможно, потребуется множество настроек, чтобы удовлетворить ваши потребности, как я уже сказал, минимально. * [: вести себя] изменяет многие [: настройки] чтения документов.

0
Eric Leschinski

Map Ctrl-V to run the system command that grabs the system clipboard and throws it into a register, and pastes it onto the screen under the cursor:

vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("\""))<CR>:call system("xclip -i", getreg("\""))<CR> nmap <C-v> :call setreg("\"",system("xclip -o -selection clipboard"))<CR>p 

Source: http://vim.wikia.com/wiki/In_line_copy_and_paste_to_system_clipboard

Это излишне сложно. Вы можете просто сопоставить "+ y и" + p FliiFe 6 лет назад 0

Похожие вопросы