VIM Ctrl-V ขัดแย้งกับ Windows Paste


110

ฉันใช้ VIM ใน Windows ปัญหาคือฉันต้องการใช้CtrlVเป็นโหมดภาพ อย่างไรก็ตามคีย์นี้ขัดแย้งกับการวางของ Windows ฉันจะรีเซ็ตคีย์นี้กลับไปเป็นโหมดภาพ VIM แทนการวางได้อย่างไร ฉันชอบตั้งค่านี้ในไฟล์คอนฟิกูเรชัน _vimrc ของฉัน

คำตอบ:


145

จากเอกสาร VIM :

เนื่องจากCTRLVใช้เพื่อวางคุณจึงไม่สามารถใช้เพื่อเริ่มการเลือกภาพแบบบล็อกได้ คุณสามารถใช้CTRLQแทนได้ นอกจากนี้คุณยังสามารถใช้ในโหมดแทรกบรรทัดคำสั่งโหมดที่จะได้รับความหมายเก่าCTRLQ CTRLVแต่ใช้CTRLQ ไม่ได้กับเทอร์มินัลเมื่อใช้สำหรับโฟลว์การควบคุม


2
ชอบแบบนี้ดีกว่าเล่นซอกับ _vimrc มันใช้งานได้ทันทีและเนื่องจากฉันไม่น่าจะอยู่ในเทอร์มินัลอนุกรมในอนาคตการควบคุมโฟลว์ Ctrl-S / Ctrl-Q จึงไม่ใช่ปัญหา
Michael Dillon

บน Linux (เทอร์มินัล Gnome) ฉันพบว่าดีกว่าที่จะใช้CTRL-K CRแต่ฉันพบคำตอบนี้ก่อน
jalanb

3
ด้วยเหตุผลบางประการฉันต้องใช้Shiftคีย์สำหรับการเลือกภาพบน Windows ในขณะที่ฉันไม่ได้ใช้ Linux
stevesliva

1
ขอบคุณ user132014! ฉันพบว่าคุณต้องใช้ h, j, k และ l เพื่อนำทางในโหมดบล็อกภาพโดยใช้ Ctrl-Q นี่เป็นกรณีของโปรแกรมแก้ไข gVim สำหรับ Windows ลูกศรดูเหมือนจะใช้ไม่ได้กับฉันใน gVim สำหรับ Windows เมื่อนำทางในโหมดบล็อกภาพโดยใช้ Ctrl-Q
Ratnesh Chandna

3
@RatneshChandna - ใช้Shiftคู่กับลูกศร? ฉันเห็นพฤติกรรมเดียวกัน แต่ก็พบว่าShiftได้ผล ฉันไม่รู้ว่า h / j / k / l ทำงานได้
stevesliva

40

ตรวจสอบไฟล์ _vimrc ของคุณและดูว่าเป็นแหล่งที่มาของ mswin.vim หรือไม่ สคริปต์นั้นแมป ^ v กับการวาง คุณสามารถลบบรรทัดนั้นในไฟล์ _vimrc ของคุณหรือปิดใช้งานคำสั่งการแมปโดยตรงบน mswin.vim

ทำ a: ช่วยทำงานเป็นกลุ่มสำหรับข้อมูลเพิ่มเติม


24

โหมดภาพ (และสิ่งอื่น ๆ ) ที่ทำงานเหมือนใน Unix ต้องใช้ทั้งคำแนะนำของ JOP และ Windows Programmer

ใน GVim บน Windows ไปที่เมนูแก้ไขคลิกที่การตั้งค่าเริ่มต้นและแสดงความคิดเห็นเกี่ยวกับขยะเฉพาะของ Windows (โดยใช้อักขระข้อคิดเห็น vimrc ซึ่งเป็นเครื่องหมายคำพูดคู่) ไฟล์ mswin.vim เป็นที่ที่ระบุctrl- vแทนที่และตัวเลือกการทำงานของ mswin ทำให้ปุ่มลูกศรไม่เพียงแค่ใช้การเคลื่อนไหวอย่างที่คุณคาดหวัง (มันยังเปลี่ยนพฤติกรรมการเลือกเมาส์ด้วย)

"source $VIMRUNTIME/mswin.vim
"behave mswin

ฉันชอบเพิ่มสีพื้นหลังสีดำในนั้นด้วยดังนั้นมันจึงดูเหมือนสิ่งที่ฉันเห็นในเทอร์มินัลมากกว่า (และเนื่องจากพื้นหลังสีอ่อนเหมาะกับกระดาษ แต่แย่มากบนหน้าจอที่มีแสงพื้นหลัง): colorscheme koehler



14

ฉันชอบการกดแป้นพิมพ์แบบเดียวกันทุกที่ดังนั้นฉันจึงใช้สิ่งนี้ใน. vimrc เพื่อแทนที่ mswin.vim:

if has('win32')
  " Avoid mswin.vim making Ctrl-v act as paste
  noremap <C-V> <C-V>
endif

7

ฉันไม่แน่ใจว่ามีอะไรให้คุณทำมากมาย คุณสามารถใช้CtrlQแทนได้


4

การรวมกันของคำแนะนำของ jop (มองหา mswin.vim ในไฟล์ _vimrc เริ่มต้น) และคำแนะนำ "โปรแกรมเมอร์ของ Windows" (การกำจัดบรรทัด "behavior mswin") เป็นเสน่ห์สำหรับฉัน

(ตัวแทนของฉันต่ำเกินไปที่จะโหวตให้พวกเขาหรือรวมพวกเขา - มีคนทำความสะอาดสิ่งนี้ให้ฉันหรือฉันจะกลับมาอีกเมื่อตัวแทนของฉันสูงขึ้น)


3
กล่าวอีกนัยหนึ่งคุณพยายามแสดงความคิดเห็นหรือไม่?
Christopher Bottoms

1
เฮ้ฉันเป็นผู้ใช้ stackoverflow ไม่บ่อยนัก (ด้วยเหตุนี้ฉันจึงมีชื่อเสียงต่ำ)
Rick Reynolds
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.