Ubuntu의 시스템 버퍼에서 키보드 단축키 복사 및 붙여 넣기를 위해 VIM을 구성 하시겠습니까?


답변:


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

3
실수로 SEO를 한 Windows 사용자 (OP는 Ubuntu)의 경우 source $VIMRUNTIME/mswin.vim_vimrc 파일 맨 위에 추가 하십시오. 리눅스에서도 파일 을 성공적으로 포함 시키지 못하는 펑키 한 것이 있습니까?
ruffin

1
@ruffin 소스를 검사하면 UNIX에 대한 if 문을 볼 수 있으므로 제작자는 mswin.vimLinux에서도 사용할 수 있습니다.
RoliSoft

C-V붙여 넣기를 설정 하면 특수 문자 입력 모드가 중단됩니다 : vim.wikia.com/wiki/…
g33kz0r

0

대부분의 항목이 기본 설정이라고 가정하면 이는 최소한입니다 ** :

: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 행 : "+ (및"*)를 기본 레지스터 (gui / term 클립 보드)로 설정

  • 3,4,5,6 행 : Ctrl-x / c / v 잘라 내기 / 복사 및 붙여 넣기

  • 7,8 행 : Tab / SHIFT + TAB 들여 쓰기 / 들여 쓰기 선택

주의 : *** [: set] tings는이 동작을 변경시킬 수 있으며, 내가 말한 것처럼 최소한의 조정이 필요에 따라 많은 조정이 필요할 수 있습니다. * [: behave]는 많은 [: set] tings가 문서를 읽도록 변경합니다.


0

Ctrl-V를 맵핑하여 시스템 클립 보드를 잡고 레지스터에 던져서 커서 아래 화면에 붙여 넣는 시스템 명령을 실행하십시오.

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

출처 : http://vim.wikia.com/wiki/In_line_copy_and_paste_to_system_clipboard


1
불필요하게 복잡합니다. "+ y 및"+ p
FliiFe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.