กำหนดค่า VIM สำหรับคัดลอกและวางแป้นพิมพ์ลัดจากบัฟเฟอร์ของระบบใน Ubuntu หรือไม่


14

ฉันจะกำหนดค่า VIM สำหรับการใช้Ctrl- cเพื่อคัดลอกและCtrl- vเพื่อวางจากบัฟเฟอร์ระบบใน Ubuntu ได้อย่างไร



ฉันขอแนะนำให้ใช้ครีมได้ไหม cream.sourceforge.netมันเป็นตัวแปรของเสียงเรียกเข้าที่ออกแบบมาเป็นพิเศษสำหรับผู้ใช้ที่ไม่สบายใจกับวิธีการทำงานของเสียงเรียกเข้า
โกง

คำตอบ:


16

beheaviour เริ่มต้นใน MS Windows: -

นี่คือ excert จากไฟล์ 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
สำหรับผู้ใช้ windows ที่ตั้งใจทำ SEO ที่นี่ (OP คือ Ubuntu) ให้เพิ่มsource $VIMRUNTIME/mswin.vimที่ด้านบนของไฟล์ _vimrc ของคุณ มีอะไรขี้ขลาดที่ป้องกันไม่ให้คุณประสบความสำเร็จรวมถึงไฟล์ใน Linux ด้วย?
ruffin

1
@ruffin ตรวจสอบแหล่งที่มาคุณจะเห็นว่าคำสั่งสำหรับ UNIX ดังนั้นผู้สร้างมีการใช้งานmswin.vimภายใต้ Linux ในใจเช่นกัน
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 การเยื้อง / การเยื้องออก

ข้อควรระวัง: *** [: ชุด] สามารถปรับเปลี่ยนพฤติกรรมนี้และอาจจำเป็นต้องปรับแต่งมากเพื่อให้เหมาะกับความต้องการของคุณเช่นที่ฉันพูดน้อยที่สุด * [: behave] เปลี่ยนแปลง [: set] หลายครั้งที่อ่านเอกสาร


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.