ตามค่าเริ่มต้นการตัด / คัดลอก / วางทางลัดใน GVim บน Ubuntu คือ:
ตัด "+ x คัดลอก "+ y วาง "+ gP
ฉันต้องการใช้คอมโบควบคุมหลักใน GVim เช่นฉันใช้ใน Firefox และแอพพลิเคชั่นอื่น ๆ ของ gnome ฉันจะกำหนดค่า GVim ให้ทำงานเหมือนกับแอป Gnome อื่น ๆ ได้อย่างไร
ตามค่าเริ่มต้นการตัด / คัดลอก / วางทางลัดใน GVim บน Ubuntu คือ:
ตัด "+ x คัดลอก "+ y วาง "+ gP
ฉันต้องการใช้คอมโบควบคุมหลักใน GVim เช่นฉันใช้ใน Firefox และแอพพลิเคชั่นอื่น ๆ ของ gnome ฉันจะกำหนดค่า GVim ให้ทำงานเหมือนกับแอป Gnome อื่น ๆ ได้อย่างไร
คำตอบ:
เพิ่มบรรทัดต่อไปนี้ใน_vimrc
หรือ.vimrc
source $VIMRUNTIME/mswin.vim
behave mswin
แต่ระวังโหมดภาพคือ CTRL-Q แทนที่จะเป็น CTRL-V
สำหรับภาพรวมสิ่งที่ mswin.vim ไม่เห็น sourcode mswin.vim มันเป็นความเห็นที่ดีมากและหากคำสั่งบางอย่างไม่ชัดเจนคุณสามารถค้นหาได้อย่างง่ายดายด้วยความช่วยเหลือของกลุ่ม
นี่คือภาพรวมอย่างรวดเร็วรวบรวมจากแหล่งที่มา:
- backspace และปุ่มเคอร์เซอร์ตัดไปที่บรรทัดก่อนหน้า / ถัดไป
- CTRL-X และ SHIFT-Del ถูกตัด
- CTRL-C และ CTRL-Insert เป็นสำเนา
- CTRL-V และ SHIFT-Insert คือ Paste
- ใช้ CTRL-Q เพื่อทำสิ่งที่ CTRL-V ใช้ทำ
- ใช้ CTRL-S เพื่อบันทึกในโหมดแทรกด้วย
- CTRL-Z เลิกทำ; ไม่ได้อยู่ใน cmdline
- CTRL-Y คือทำซ้ำ (แม้ว่าจะไม่ทำซ้ำ) ไม่ได้อยู่ใน cmdline
- Alt-Space เป็นเมนูระบบ
- CTRL-A คือเลือกทั้งหมด
- CTRL-Tab เป็นหน้าต่างถัดไป
- CTRL-F4 คือหน้าต่างปิด
ตามคำขอของ Nippysaurus: ฉันใส่ต่อไปนี้ใน. gvimrc เพื่อแสดง Ctrl-V นอกเหนือจากวางในเมนู:
unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V "+gP
cnoremenu &Edit.&Paste<Tab>Ctrl-V <C-R>+
ฉันไม่ได้ทดสอบอย่างละเอียดเพียงตรวจสอบอย่างรวดเร็วว่ามันเป็นไปตามที่ฉันคาด ใช้งานได้สำหรับฉันหวังว่าจะได้ผลกับคุณ ;-)
mswin.vim
จะมีbehave mswin
สายอยู่แล้ว ฉันจำเป็นต้องเรียกสิ่งนี้ด้วยตัวเองอีกครั้ง_vimrc
หรือไม่?
behave mswin
อย่างน้อยในระบบของฉันด้วย Vim 8.0
หากคุณต้องการตัด / คัดลอก / วางในการทำงานโดยใช้อง "มาตรฐาน" แต่คุณไม่ต้องการที่จะเปลี่ยนแปลงใด ๆ ของตัวเลือกการกำหนดค่าอื่นใน gvim ~/.vimrc
พยายามจะเพิ่มต่อไปนี้
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+
วางทำงานในโหมดภาพและแทรกเท่านั้นดังนั้นคุณไม่ต้องกังวลเกี่ยวกับความขัดแย้งกับ Ctrl-V และโหมดภาพบล็อก นี่ไม่ใช่ปัญหาเนื่องจากการคัดลอกและตัดทำให้คุณเข้าสู่โหมดแทรกดังนั้นคุณสามารถวางในภายหลังได้ทันที หากคุณลองคุณจะพบว่ามันรู้สึกเป็นธรรมชาติอย่างสมบูรณ์
ฉันมากับการกำหนดค่านี้หลังจากการทำซ้ำหลายครั้งและฉันคิดว่าตอนนี้ "สมบูรณ์แบบ" แล้ว หากคุณยังไม่พอใจกับการกำหนดค่าการคัดลอก / วางปัจจุบันลองทำดูแล้วฉันจะพนันว่าคุณจะชอบ
:help i_ctrl-r_ctrl-o
ฉันตัดสินใจที่จะเปลี่ยนimap <C-v> <ESC>"+pa
ไปimap <C-v> <C-r><C-o>+
; ทำงานได้ตามที่คาดไว้เมื่อเคอร์เซอร์อยู่ด้านซ้ายของอักขระตัวแรกของบรรทัดและจะเลียนแบบพฤติกรรม "มาตรฐาน" มากที่สุด
<C-v>
จะเปลี่ยน shift + insert ที่ดูเหมือนว่าจะเร็วขึ้นมากในเครื่องของฉัน แต่ในช่วงกลางของโปรเจ็กต์และไม่รู้สึกอยากเริ่มต้นเป็นกลุ่มตอนนี้ เพียงแค่แชร์
หากคุณต้องการที่จะรักษาพฤติกรรมที่เป็นกลุ่มปกติ แต่ยังอนุญาตให้มีการใช้งานยุ่งยากน้อยกว่าของคลิปบอร์ดระบบดูเข้าถึงคลิปบอร์ดของระบบ หากคุณต้องการที่จะใช้ gvim คลิปบอร์ดระบบเป็นกันชนเริ่มต้น (เพื่อใด ๆx
, y
, p
ฯลฯ คำสั่งใช้คลิปบอร์ด) แล้วเพิ่มบรรทัดต่อไปนี้ vimrc ของคุณ:
set clipboard=unnamed
โดยส่วนตัวฉันใช้บัฟเฟอร์มากขึ้นภายในเสียงเรียกเข้ามากกว่าระหว่างเสียงเรียกเข้าและระบบ ดังนั้นฉันควรจะมีทางลัดที่ยุ่งยากกว่านี้เล็กน้อยกว่าจะให้คลิปบอร์ดระบบของฉันถูกบล็อกอย่างต่อเนื่อง แต่ก็ดีที่มีตัวเลือกสำหรับผู้ที่ต้องการมัน
ฉันคิดว่าคุณสามารถเพิ่มสิ่งนี้ได้ด้วยคำสั่ง: imap (ลองแค่ใช้ Ctrl + X ใน Windows ที่ใช้งานได้การกด ctrl + c ดูเหมือนว่าจะยกเลิกคำสั่งแม้ว่าดังนั้นคุณอาจต้องทำใน vimrc)
:imap <C-X> "+x
:imap <C-C> "+y
:imap <C-V> "+gP
หากคุณเพิ่มลงใน ~ / .vimrc ของคุณคุณต้องลบ: หน้า imap
imap เพิ่มการผูกในโหมดแทรกเท่านั้นดังนั้นคุณอาจต้องการเปลี่ยนเป็นเพียงแมปหรืออย่างอื่น มองหา:help mapmode
เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการแมปและการแมปข้อมูล
โชคดี!