Copy-paste สำหรับ vim ไม่ทำงานเมื่อ mouse (: set mouse = a) เปิดอยู่?


52

ฉันพยายามคัดลอกวางบางอย่างจากเสียงเรียกเข้าไปยังแอปพลิเคชันอื่นและจากแอปพลิเคชันนั้นไปvimใช้การคลิกขวาด้วยเมาส์แล้วคัดลอกและวาง (หรือด้วยCtrl+ vและCtrl+ cและลองCommandรุ่นสำหรับ Mac OSX อย่างชัดเจน) อย่างไรก็ตามเมื่อฉันลองทำมันเพียงคัดลอกคำแรกเมื่อฉันทำจากvimหรือเมื่อฉันคัดลอกจากแอปพลิเคชันไปยังvimมันจะคัดลอกทุกอย่าง แต่แทรกแท็บและช่องว่างที่แปลก ฉันคิดว่าสิ่งนี้เกิดขึ้นเมื่อฉันตัดสินใจที่จะวางเมาส์บนเครื่อง ในขณะที่:

:set mouse=a

ฉันมีบรรทัดนั้นใน.vimrcไฟล์ของฉันบน iTerm (mac os x) แม้ว่าเป็นไปได้หรือไม่ที่จะทำสำเนาวางของฉันกับแอปพลิเคชันอื่น ๆ ที่ไม่ได้อยู่ในvimการทำลายด้วยmouse=aon? หรืออย่างน้อยเป็นไปได้ที่จะตั้งค่าเมาส์ของฉันในขณะที่ฉันคัดลอกวาง? ฉัน:helpใช้เมาส์ แต่ความคิดเห็นนั้นไม่มีประโยชน์สำหรับฉัน ฉันจะวางที่นี่ แต่ ... เครื่องมือคัดลอกวางของฉันเสีย!

ฉันลอง:set mouse!แล้ว:set mouse=a!แต่สิ่งเหล่านี้ไม่มีประโยชน์อะไร ... :(


ข้อมูลเพิ่มเติมเกี่ยวกับสภาพแวดล้อมของฉัน:

ฉันยังใช้ tmux เกือบตลอดเวลาแม้ว่าฉันได้ทดสอบข้อผิดพลาด / ข้อผิดพลาดนี้โดยไม่มีเซสชัน tmux นั่นคือเหตุผลที่ฉันโพสต์สิ่งนี้เป็นคำถามที่เป็นกลุ่ม


4
ฉันสามารถบอกคุณได้ว่าvimมีความสามารถในการโยนไปที่การคัดเลือกระดับประถมเพียงแค่ใช้yคำกริยา ฉันไม่รู้ว่าทำไมคุณไม่ใช้แค่นั้น
HalosGhost

1
ฉันจะไม่ทำอย่างนั้นเพราะฉันไม่รู้ว่าจะทำยังไงฉันก็ขอโทษสำหรับความไร้ความสามารถของฉัน ฉันไม่รู้ด้วยซ้ำว่ามีอยู่จนกระทั่งคุณพูดถึงมัน กรุณาแบ่งปันความรู้ของคุณ! :)
Pinocchio

macvimนี้หรือไม่
แพทริค

ไม่มันไม่ใช่แค่ iTerm (อย่างที่ฉันพูดถึงคำถาม แต่เป็นคำถามที่ดี)
Pinocchio

คำตอบ:


66

mouse=a ป้องกันความสามารถในการคัดลอกและการวางเป็นกลุ่มด้วยตัวอักษรที่อ่านได้

เปลี่ยนmouse=aเป็นmouse=rและควรแก้ไขปัญหาของคุณด้วยสิ่งนั้น

สิ่งหนึ่งที่ฉันสงสัยคือคุณกำลังเปลี่ยนไฟล์ปรับแต่งสำหรับกลุ่มของคุณด้วยชุดเมาส์เป็นเม้าส์ = a หรือไม่?

คำตอบดั้งเดิม

หากmouse=rไม่ได้ให้ตัวเลือกการคัดลอกที่ผ่านมาทั้งหมดให้คุณเปลี่ยนเป็นmouse=v

ทั้งสองmouse=rและmouse=vมีฟังก์ชั่นเดียวกับที่คุณต้องการ แต่ขึ้นอยู่กับ vimrc ที่คุณใช้งานอยู่จะทำงานได้ดีกว่าอีกฟังก์ชันหนึ่ง


คุณลองไฮไลต์ข้อความและใช้ปุ่มกลางของเมาส์เพื่อวางในที่อื่น ที่มีแนวโน้มที่จะทำงานได้ดีขึ้นเมื่อลองไปที่ Ctrl + v และ Ctrl + c
bgrif

ฉันไม่ทราบว่าคำถามของคุณหมายถึง: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?คุณหมายถึงถ้าฉันมี:mouse=aในไฟล์. vimrc ของฉันได้อย่างไร ฉันมี:mouse=aในไฟล์. vimrc ของฉัน
Pinocchio

1
แค่--with-x=yesไหน ฉันไม่จำเป็นต้องใส่:set --with-x=yes mouse=aหรืออะไรนะ? คุณช่วยอธิบายให้ชัดเจนว่าคุณหมายถึงอะไร?
Pinocchio

1
ให้ฉันวิจัยถ้าคุณต้องการที่จะรวมการ--with-x=yes set mouse=aเมื่อฉันอ่านมันทั้งหมดที่ฉันเห็นคือมันเป็นของตัวเองในไฟล์ปรับแต่ง แต่มันอาจแตกต่างกันดังนั้นฉันต้องการให้แน่ใจว่าฉันบอกคุณในสิ่งที่ถูกต้องที่จะทำงานให้คุณ
bgrif

1
ขอบคุณมากคำแนะนำนี้ใช้งานได้อย่างมีเสน่ห์ด้วยเม้าส์ = v
Pamungkas Jayuda

21

สำหรับผู้ใช้ OS X: เพื่อคัดลอกแปะด้วยการmouse=aใช้altแทนShiftการเลือกข้อความ จากนั้นcmd-cและcmd-vทำงานตามที่คาดไว้

พบคำตอบนี้ที่นี่https://stackoverflow.com/a/4608387/671639หลังจาก googling เป็นจำนวนมาก


คุณคือพระเจ้า ...... : ')
omerjerk

สิ่งเดียวที่ใช้ได้ผลสำหรับฉันขอบคุณ!
Don

3
สำหรับฉันบน OSX ทำงาน "fn" แทน "shift" หรือ "alt"
ssasa

8

จากhttps://stackoverflow.com/questions/4608161/copy-text-out-of-vim-with-set-mouse-a-enabled/4608387

กดปุ่ม 'shift' ในขณะที่เลือกด้วยเมาส์ สิ่งนี้จะทำให้การเลือกเมาส์ทำงานราวกับว่า mouse = a ไม่ได้เปิดใช้งาน

ใช้งานได้และได้รับการยืนยันโดยผู้ตรวจสอบของ stack-overflow ที่ยอมรับคำตอบนี้เป็นคำตอบ :)


6

วิธีการแก้ปัญหาของ Bharath ที่กดShiftในขณะคัดลอกจะทำ แต่จะคัดลอกมากกว่าสิ่งที่คุณต้องการคัดลอกในกรณีที่มีการนับหรือแสดงความคิดเห็นแฮช

วิธีหนึ่งที่ทำได้แม้จะใช้mouse = aก็คือใช้โหมดวิชวลโดยการกดVเคอร์เซอร์เดี่ยวหรือShift+ Vเพื่อไฮไลต์เต็มบรรทัดและคุณสามารถเลื่อนขึ้นหรือลงด้วยลูกศรและใช้Yเพื่อคัดลอกหรือDตัดและควรใช้งานได้


@ อันธพาลจะทำขอบคุณสำหรับการชี้แจง
amrx

1
ฉันได้ปรับปรุงความคิดเห็นที่เด่นชัดของคุณเพื่อให้มันเป็นเหมือนคำตอบที่วิธีที่ mods อาจจะปล่อยให้มันเป็นอยู่ (และคุณอาจได้รับชื่อเสียงในเรื่องนี้เพื่อให้คุณสามารถแสดงความคิดเห็น) หากต้นฉบับมีการแก้ไขเล็กน้อยการแสดงความคิดเห็นน่าจะเหมาะสมกว่า
Anthon

5

มีปัญหาเดียวกัน: ไม่สามารถเน้นการใช้เมาส์ได้ดังนั้นจึงไม่สามารถคัดลอกและวางจาก VIM ในเซสชันเทอร์มินัลไปยังเอกสาร Windows และเบราว์เซอร์: ทำสิ่งต่อไปนี้และใช้งานได้แล้ว:

: set clipboard=unnamedplus
: set mouse=r

4

อ้างอิง: http://vimdoc.sourceforge.net/htmldoc/options.html

ดูส่วนหมายเหตุที่ด้านล่างของข้อมูลอ้างอิง:
เมื่อเปิดใช้งานเมาส์คุณสามารถใช้ปุ่มเมาส์ได้โดยกดปุ่ม Shift ค้างไว้ ซึ่งรวมถึงการคัดลอกวางโดยใช้ปุ่มเมาส์

*'mouse'* *E538*
'mouse'         string  (default "", "a" for GUI, MS-DOS and Win32)
            global
            {not in Vi}
    Enable the use of the mouse.  Only works for certain terminals
    (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
    sysmouse and Linux console with gpm).  For using the mouse in the
    GUI, see |gui-mouse|.
    The mouse can be enabled for different modes:
        n   Normal mode
        v   Visual mode
        i   Insert mode
        c   Command-line mode
        h   all previous modes when editing a help file
        a   all previous modes
        r   for |hit-enter| and |more-prompt| prompt
    Normally you would enable the mouse in all four modes with:
        :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

    See |mouse-using|.  Also see |'clipboard'|.

    Note: When enabling the mouse in a terminal, copy/paste will use the
    "* register if there is access to an X-server.  The xterm handling of
    the mouse buttons can still be used by keeping the shift key pressed.
    Also see the 'clipboard' option.

1
ขอบคุณที่บริจาคการอ้างอิงนั้น แต่มันตอบคำถามได้ไหม ถ้าเป็นเช่นนั้นคุณสามารถระบุส่วนของคำพูดที่ทำเช่นนั้นได้นำเสนอบทสรุปของคำตอบจริงหรือไม่?
G-Man

0

ในส่วนที่สองของคำถามของคุณที่คุณระบุว่าเมื่อวางจากแอปพลิเคชันอื่นไปเป็นกลุ่มจะเพิ่มแท็บ / ช่องว่าง ลองเพิ่มสิ่งนี้ลงใน ~ / .vimrc set paste หรือ vim ก่อนวางในโหมดปกติกด "shift" + ":" แล้วพิมพ์ "set paste"


0

คุณสามารถใช้yเพื่อคัดลอก (งัด) และpวางแม้จะมีการตั้งอยู่ใน:set mouse=a ~/.vimrcใช้v+ arrow keysเพื่อเน้นข้อความ ในการคัดลอกสายทั้งหมดได้อย่างรวดเร็วใช้+shifty


0

สำหรับ Mac ของฉันสิ่งที่ช่วยได้คือสองสิ่งนี้:

  • : set mouse- = a
  • fn + คลิก (แทน shift หรือ alt)

0

ใช้สองบรรทัดด้านล่างนี้~/.vimrcเพื่อใช้คุณสมบัติที่ดีทั้งหมดของ a gui-mouseและวางในคลิปบอร์ดระบบโดยใช้y(ปุ่ม yank) หากคุณไม่ต้องการบัฟเฟอร์คลิปบอร์ดเพิ่มเติมใด ๆ :

set mouse=a
set clipboard=unnamed
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.