Định cấu hình VIM để sao chép và dán các phím tắt từ bộ đệm hệ thống trong Ubuntu?


14

Làm cách nào để định cấu hình VIM để sử dụng Ctrl- csao chép và Ctrl- vdán từ bộ đệm hệ thống trong Ubuntu?



Tôi có thể đề nghị sử dụng Kem? cream.sourceforge.net Đây là một biến thể của vim được thiết kế đặc biệt cho người dùng không cảm thấy thoải mái với cách làm việc của vim.
Rook

Câu trả lời:


16

Hành vi mặc định trong MS Windows: -

Đây là một đoạn trích từ tệp 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>

và tập lệnh paste.vim cần thiết để cắt / dán chế độ khối: -

    " 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
Đối với người dùng windows vô tình SEO tại đây (OP là Ubuntu), hãy thêm source $VIMRUNTIME/mswin.vimvào đầu tệp _vimrc của bạn. Bất cứ điều gì thú vị ngăn bạn thành công bao gồm cả tệp trong Linux?
ruffin

1
@ruffin Kiểm tra nguồn bạn sẽ thấy nếu các câu lệnh cho UNIX, vì vậy, người tạo cũng có ý định sử dụng mswin.vimLinux.
RoliSoft

Cài đặt C-Vđể dán sẽ phá vỡ chế độ nhập ký tự đặc biệt: vim.wikia.com/wiki/ Kẻ
g33kz0r

0

Đây chỉ là tối thiểu, giả sử hầu hết mọi thứ là cài đặt mặc định **:

: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<
  • dòng 1: làm cho shift + mũi tên chọn văn bản (và thực hiện thêm *)

  • dòng 2: làm cho "+ (và" *) thanh ghi mặc định (gui / thuật ngữ clipboard)

  • dòng 3,4,5,6: làm cho Ctrl-x / c / v Cắt / Sao chép và Dán

  • dòng 7,8: làm cho các lựa chọn TAB / SHIFT + TAB thụt lề / lỗi thời

Thận trọng: *** [: set] tings có thể thay đổi hành vi này và có thể cần nhiều điều chỉnh để phù hợp với nhu cầu của bạn, như tôi đã nói, tối thiểu. * [: Behave] thay đổi nhiều [: set] tings đọc tài liệu.


0

Ánh xạ Ctrl-V để chạy lệnh hệ thống lấy bảng tạm hệ thống và ném nó vào một thanh ghi và dán nó lên màn hình dưới con trỏ:

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

Nguồn: http://vim.wikia.com/wiki/In_line_copy_and_paste_to_system_clipboard


1
Điều này là phức tạp không cần thiết. Bạn chỉ có thể ánh xạ tới "+ y và" + p
FliiFe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.