วิธีคัดลอกไปยังคลิปบอร์ดใน Vim ได้อย่างไร


752

เป็นไปได้ไหมที่จะคัดลอกไปยังคลิปบอร์ดโดยตรงจาก Vim? yyคัดลอกเนื้อหาไปยังบัฟเฟอร์ภายในของ Vim เท่านั้น ฉันต้องการคัดลอกไปยังคลิปบอร์ดของระบบปฏิบัติการ มีคำสั่งดังกล่าวใน Vim หรือคุณสามารถดึงข้อมูลภายใน Vim ได้เท่านั้น?


140
โปรดดูคำตอบที่ไม่ได้รับการโหวตซึ่งจะช่วยชี้แจงข้อเท็จจริงที่สำคัญ: คุณต้องมี vim ที่คอมไพล์ด้วยฟีเจอร์ + คลิปบอร์ดสำหรับคำแนะนำใด ๆ ด้านล่างเพื่อทำงานในตอนแรก! นี่ไม่ใช่ค่าเริ่มต้นในระบบส่วนใหญ่
Neil Traft

7
@NeilTraft คำตอบบางคำแนะนำให้แนะนำการวางท่อจากโปรแกรม vim ไปยังโปรแกรมภายนอกดังนั้นการอ้างว่าคำตอบใด ๆ ที่ต้องการ + ธงคลิปบอร์ดนั้นผิด เพียงชี้ไปที่บันทึกผู้อ่านในอนาคตจากความสับสน
Hnatt

2
เป็นไปได้ที่ซ้ำกันของวิธีการทำ vim paste จากคลิปบอร์ดของระบบ (และคัดลอกไปยัง)? (หมายเหตุ: คำถามอื่น ๆ ที่ใหม่กว่า แต่มีคำตอบที่ดีกว่า IMHO ซึ่งฉันว่าทำไมฉันจึงทำเครื่องหมายคำถามนี้ว่าเป็น
ดัก

5
ตรวจสอบให้แน่ใจว่าคุณได้ทำ sudo apt-get install vim-gnome ก่อนที่จะใช้คำสั่งเหล่านี้ด้านล่างหรือคุณจะได้รับข้อผิดพลาดการลงทะเบียนไม่ถูกต้อง!
Harnirvair Singh

7
@Harnirvair สำหรับผู้อ่านหลาย ๆ คนที่นี่vim-gnomeอาจเป็น overkill หรือไม่สามารถใช้งานได้ในระบบปฏิบัติการ / distro ของพวกเขาในขณะที่ฉันสงสัยvim-gtkและvim-gtk3มีแนวโน้มที่จะมีอยู่มากขึ้นและดึงการพึ่งพาน้อยลงในขณะที่ยังคงมีการรวมคลิปบอร์ด ฉันไม่แน่ใจว่าสิ่งนี้มีผลกระทบต่อ Wayland อย่างไร)
underscore_d

คำตอบ:


496

การ*ลงทะเบียนจะทำเช่นนี้ ใน Windows +และ*เทียบเท่า ในระบบยูนิกซ์มีความแตกต่างกันเล็กน้อยระหว่าง+และ*:

ใน Windows การลงทะเบียน * และ + จะเทียบเท่ากัน สำหรับระบบ X11 พวกมันต่างกัน สำหรับระบบ X11 * คือสิ่งที่เลือกและ + คือบัฟเฟอร์ตัด (เช่นคลิปบอร์ด) http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*อาจเป็นสิ่งที่คุณต้องการเป็นส่วนใหญ่ดังนั้นฉันใช้*เพราะมันทำงานตามที่ฉันคาดหวังไว้ในทั้งสองสภาพแวดล้อม

ใน Linux distros คุณต้องติดตั้งvim-gtk(aka gvim) ก่อนเพื่อรับฟังก์ชั่นคลิปบอร์ด นี่เป็นเพราะโดยทั่วไป non-gtk vim จะถูกคอมไพล์โดยไม่รองรับ X11 นี่คือการอนุญาตให้มันทำงานบนเครื่องคอนโซลเท่านั้น (มักเซิร์ฟเวอร์)

และสำหรับผู้ที่สับสนเกี่ยวกับวิธีใช้รีจิสเตอร์เมื่อ yanking หรือใส่คุณเพียงแค่เขียน"ชื่อของการลงทะเบียน ดังนั้นสำหรับการคัดลอกบางสิ่งบางอย่างไปยังคลิปบอร์ดลงทะเบียนคุณพิมพ์"*yแล้วให้คุณพิมพ์"*p(เครดิต: Kyle Mathews)


31
ไม่ทำงานกับ mac osx lion หลังจากกด "แล้ว * มันจะทำให้เกิดเสียงรบกวนที่ mac ทำเมื่อคุณไม่สามารถทำอะไรได้บ้างฉันจะทำมันบน mac ได้อย่างไร
Eddy

62
คุณต้องตรวจสอบให้แน่ใจว่าเป็นกลุ่มที่รวบรวมด้วยการสนับสนุนคลิปบอร์ด เป็นกลุ่มเริ่มต้นใน Ubuntu ไม่ ลองvim --version|grep .xterm_clipboard -oและถ้าเป็นเช่น-นั้นคุณไม่ได้รับการสนับสนุน ดาวน์โหลดเวอร์ชั่นอื่นตามubuntuforums.org/showthread.php?t=1686955
Sparhawk

66
หากคุณใช้ Linux คุณควร+ลงทะเบียน ตัวอย่างเช่นหากคุณต้องการคัดลอกสามบรรทัดลงในคลิปบอร์ดของระบบให้ใช้คำสั่งเช่นv3j"+yนั้นจากนั้นคุณสามารถวางลงในแอปพลิเคชันอื่นได้อีก VIM อื่น การใช้*register ภายใต้ Linux สามารถคัดลอกและวางระหว่างแอพพลิเคชั่น VIM ที่แตกต่างกันเท่านั้น
diabloneo

6
บน Linux การลงทะเบียน * ไม่สามารถใช้สำหรับการคัดลอกและวางจากภายนอก
weberc2

11
weberc2 และ diabloneo * การลงทะเบียนใช้สำหรับคลิปบอร์ดการเลือกซึ่งสามารถเข้าถึงได้จากการคลิกตรงกลางไม่ใช่การวางเมนูหรือ ^ V
Jim Keener

354

บน Mac OSX

  • คัดลอกส่วนที่เลือก: เลือกข้อความ (ประเภทvหรือVในโหมดปกติ) และประเภท:w !pbcopy

  • คัดลอกไฟล์ทั้งหมด :%w !pbcopy

  • วางจากคลิปบอร์ด :r !pbpaste

บน Linux Distros ส่วนใหญ่คุณสามารถทดแทน:

  • pbcopyด้านบนด้วยxclip -i -sel cหรือxsel -i -b
  • pbpasteการใช้xclip -o -sel -cหรือxsel -o -b
    - หมายเหตุ: ในกรณีที่ไม่มีเครื่องมือเหล่านี้ ( xselและxclip) ติดตั้งไว้ล่วงหน้าใน distro ของคุณคุณอาจพบเครื่องมือเหล่านั้นใน repos

1
+1 ใช้งานร่วมกับ Lion ได้vim --versionแสดงให้เห็น-clipboard
roplacebo

26
เข้ากันได้กับเสียงเรียกเข้าที่มาพร้อมกับ mavericks osx เพิ่มใน. vimrc ของคุณvnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>หากต้องการใช้การทำแผนที่นี้หากคุณต้องการคัดลอกให้ไฮไลต์ข้อความในโหมดภาพและกด Ctrl-c เพื่อคัดลอก หากต้องการวางจากคลิปบอร์ดของระบบให้กด Ctrl-v
davidtingsu

7
บน linux สามารถใช้งานได้กับ: w! xclip -sel c หรือ: w! xsel -b
trve.fa7ad

4
สำหรับ Linux Ctrl + C copy: ใน ~ / .vimrc เพิ่ม:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

3
คำตอบที่เป็นประโยชน์มากกว่าคำตอบที่ยอมรับ ขอบคุณ!
ไบรซ์จอห์นสัน

165

ในไฟล์ vimrc ของคุณคุณสามารถระบุให้ใช้คลิปบอร์ดระบบเพื่อคัดลอกและวางโดยอัตโนมัติ

ในชุด Windows:

set clipboard=unnamed

บนชุด Linux (กลุ่ม 7.3.74+):

set clipboard=unnamedplus

หมายเหตุ: คุณอาจต้องใช้ Vim เวอร์ชันล่าสุดเพื่อให้อุปกรณ์เหล่านี้ใช้งานได้

http://vim.wikia.com/wiki/Accessing_the_system_clipboard


39
ในฐานะที่เป็นภาคผนวกของบันทึกย่อของคุณ - คุณอาจต้องติดตั้งแพ็กเกจพิเศษเพื่อให้ใช้งานได้ หากเสียงเรียกเข้าของคุณขาด+xterm_clipboardคุณสมบัติ (มองเห็นได้เมื่อคุณเรียกใช้vim --version) นี่เป็นกรณีสำหรับฉัน (ใช้งาน Kubuntu 12.10) ฉันต้องติดตั้งvim-gui-commonแพคเกจเพื่อรับฟังก์ชั่นที่ถูกต้อง
Jacob Dalton

4
set clipboard=unnamedทำงานใน Mac OS 10.11.6 (El Capitan) พร้อม vim 7.4
Purplejacket

1. คัดลอกเมื่อลาก 2. การเลือกเมาส์ทำงานใน Mac Sierra-10.12.6 และ vim-version: 8.0.1800 โดยระบุคำสั่งต่อไปนี้ในไฟล์ ~ / set mouse=vset clipboard=unnamed
.vimrc

set clipboard=unnamedใช้ได้กับ MacOS Catalina
Diego Somar

คุณอาจต้องการอัปเดตคำตอบของคุณ มันไม่ทำงานบน Ubuntu 18.04 ด้วย vim 8.0
Luís de Sousa

124

ใช้การลงทะเบียน"+เพื่อคัดลอกไปยังคลิปบอร์ดของระบบ (เช่น"+yแทนy )

ในทำนองเดียวกันคุณสามารถวางจาก"+เพื่อรับข้อความจากคลิปบอร์ดของระบบ (เช่น"+pแทนp)


ฉันใช้ "* แต่ดูเหมือนว่าจะมีความแตกต่างใน X
dash-tom-bang

3
@ dash-tom-bang: +/ *ความแตกต่างคือSELECTIONvs ตัวPRIMARYคัดลอกบัฟเฟอร์ (จำไม่ได้ว่าตัวไหนเป็น atm)
Daenyth

2
ใช่ดาวคือการเลือกบวกคือคลิปบอร์ด
dash-tom-bang

6
อักขระเครื่องหมายคำพูดคู่ทำหน้าที่เป็นตัวเลือกการลงทะเบียนใน vi และ vim
Amardeep AC9MF

1
ทางลัดสองชุดที่ต้องจำ: "+yy(คัดลอกบรรทัดไปยังคลิปบอร์ด) และ"+yy(คัดลอกบรรทัดไปยังส่วนที่เลือก); "+p(วางจากคลิปบอร์ด) และ"*p(วางจากการเลือก) "คือการเลือก register ซึ่งเป็น register ภายในของ vim ตามค่าเริ่มต้น (วิธีyyและpจะทำงานโดยไม่ต้องอ้างอิงregister ใด ๆ ) PS: ฉันสงสัยว่ามีตัวละครสำหรับ Vim ของตัวเองภายในสิ่งที่ต้องการ"&yyที่จะหันไปyyตามค่าเริ่มต้น

72

@Jacob Dalton ได้พูดถึงสิ่งนี้ในความคิดเห็น แต่ดูเหมือนว่าจะไม่มีใครพูดถึงในคำตอบที่กลุ่มจะต้องรวบรวมด้วยการสนับสนุนคลิปบอร์ดสำหรับคำแนะนำใด ๆ ที่กล่าวถึงที่นี่ในการทำงาน ฉันไม่ได้กำหนดค่าแบบนั้นบน Mac OS X โดยค่าเริ่มต้นและฉันต้องสร้างเป็นกลุ่ม vim --version | grep 'clipboard'ใช้คำสั่งนี้เพื่อหาว่าคุณมีมันหรือไม่ +clipboardหมายความว่าคุณทำได้ดีและคำแนะนำที่นี่จะใช้ได้กับคุณในขณะที่-clipboardคุณต้องคอมไพล์ใหม่และสร้างเป็นกลุ่ม


15
หรือแทนที่จะรวบรวมตัวคุณเองคุณสามารถติดตั้งแพ็คเกจ vim ที่สร้างขึ้นด้วยการสนับสนุนคลิปบอร์ด บน OS X, Homebrew brew install vimมีนี้: บน Ubuntu sudo apt-get install vim-gnomeคุณสามารถใช้ เมื่อวันที่อื่น ๆ (ที่ไม่ใช่ GNOME) distros Linux คุณค่อนข้างอาจติดตั้งหรือvim-gtk vim-athena
Neil Traft

3
ขอบคุณใน Arch Linux ฉันต้องลบvimและติดตั้งgvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber

คำตอบของคุณคืออธิบายว่าทำไมคนงัดไม่ทำงานกับคลิปบอร์ดด้วยข้อมูลของคุณเพียงอย่างเดียวฉันสามารถทำการค้นหา google ที่ดีขึ้นและทำให้มันใช้งานได้ง่าย และตอนนี้ก็ใช้งานได้ มันจะดีกว่าถ้าคุณใส่ความคิดเห็น @NeilTraft ไว้ในคำตอบของคุณเพื่อที่คนอื่นไม่จำเป็นต้องทำการค้นหาด้วยกูเกิ้ล
Yana Agun Siswanto

บน Mac หลังจากbrew install vimฉันเพิ่มset clipboard=unnamedไปยัง. vimrc ทำงานsource ~/.vimrcในบรรทัดคำสั่ง ใน .bash_profile ฉันเพิ่มทำงานแล้วalias vim="/usr/local/bin/vim" source ~/.bash_profileตอนนี้ในกลุ่มเพียงใช้yและpคัดลอก / วาง
มิทรี

59

สรุปและทำให้ง่ายขึ้นสำหรับมือใหม่

ในการคัดลอกบรรทัดปัจจุบันในประเภทโหมดคำสั่ง:

"*yy

หากต้องการคัดลอกไฟล์ / บัฟเฟอร์ทั้งหมดในโหมดคำสั่งก่อนอื่นให้ไปที่จุดเริ่มต้นผ่านggแล้วพิมพ์

"*yG

ดังที่ระบุไว้นี้ต้อง+clipboardออกจากvim --versionซึ่งระบุความพร้อมใช้งานของการสนับสนุนคลิปบอร์ด-clipboardหมายความว่าไม่มี


1
"*5yyพูด5 lines yankedแต่ไม่มีอะไรในคลิปบอร์ด? OS / x
javadba

2
ใช่ฉันได้ยืนยันแล้ว + คลิปบอร์ด
javadba

nnoremap <leader>c "* ในการ.vimrcทำงานค่อนข้างดีเป็น "คัดลอก" แปลก ๆ แล้วตามด้วยการเคลื่อนไหวเพื่อคว้าวัตถุข้อความที่คุณต้องการคัดลอกลงในคลิปบอร์ด OS ของคุณ
cpk

ขอบคุณคุณอธิบายอย่างที่ฉันต้องการ
Symen Timmermans

3
ฉันติดตั้งvim-gtkให้กลาย-clipboardเป็น+clipboardมากกว่า"+yyใช้งานได้
Lai32290

30

หากคุณใช้ vim ใน MAC OSX แต่น่าเสียดายที่มันมาพร้อม verion รุ่นเก่าและไม่ได้ปฏิบัติตามตัวเลือกคลิปบอร์ด โชคดีที่ homebrew สามารถแก้ปัญหานี้ได้อย่างง่ายดาย

ติดตั้งเป็นกลุ่ม:

brew install vim

ติดตั้ง guion verim เป็นกลุ่ม:

brew install macvim

รีสตาร์ทเครื่องเพื่อให้มีผล


ผนวกบรรทัดต่อไปนี้ไปที่ ~ / .vimrc
set clipboard=unnamed

ตอนนี้คุณสามารถคัดลอกบรรทัดเป็นกลุ่มด้วย yyและวางทั้งระบบ



วิธีการปรับปรุง :

ฉันไม่เคยพอใจกับการตั้งค่าคลิปบอร์ดเป็นเวลาหลายปี ข้อเสียเปรียบที่ยิ่งใหญ่ที่สุดคือมันจะทำให้ประวัติคลิปบอร์ดของคุณยุ่งเหยิงแม้ว่าคุณจะใช้ก็ตามxเพื่อลบ นี่คือทางออกที่ดีกว่าและหรูหรากว่า

  1. คัดลอกข้อความ [range] ของ vim ไปยังคลิปบอร์ดของระบบ (คำแนะนำ: ใช้vหรือVเพื่อเลือกช่วงแรกจากนั้นพิมพ์เครื่องหมายโคลอน:เพื่อเปิดใช้งานคำสั่ง Ex):
    :[line-range]yank +
    เช่น
    :5,10y * (คัดลอก / ดึงบรรทัด 5-10 *ลงในการลงทะเบียนคลิปบอร์ดระบบ)

  2. วางเนื้อหาจากคลิปบอร์ดของระบบลงในกลุ่มในบรรทัดใหม่:
    :put +

บันทึก:

  1. หากคุณเลือกช่วงคำศัพท์ข้างต้นจะไม่ทำงาน ใช้"* yหรือ " + yเพื่อบันทึกบล็อกภาพนี้ไว้ที่คลิปบอร์ด อย่างไรก็ตามนี่เป็นเรื่องยากที่จะพิมพ์ฉันยังคงคิดเกี่ยวกับทางเลือก
  2. : help "* หรือ : help * +สำหรับข้อมูลเพิ่มเติม
  3. brew info vimจะสามารถเห็นตัวเลือกอื่น ๆ สำหรับการติดตั้งเป็นกลุ่ม ไม่พบว่ามีตัวเลือกอื่น ๆ

--with-override-system-vimควรเป็น--with-override-system-vi
maffo

ฉันต้องการลองทำเช่นนี้เพื่อหลีกเลี่ยงการติดตั้งสิ่ง Xorg จำนวนมากในระบบขั้นต่ำ แต่ฉันขาดอะไรไป ฉันได้รับ "ไม่ใช่คำสั่งแก้ไข [ช่วง] งัด +" หลังจากเลือกในโหมด v แล้วกดปุ่ม ":"
jeremyjjbrown

29

สำหรับ Ubuntu - กรกฎาคม 2018

ใช้ register "+"เพื่อคัดลอกไปยังคลิปบอร์ดของระบบ (เช่น"+ yแทนy )

ในทำนองเดียวกันคุณสามารถวางจาก"+เพื่อรับข้อความจากคลิปบอร์ดของระบบ (เช่น" + pแทนp )

คุณต้องตรวจสอบให้แน่ใจว่าเป็นกลุ่มที่รวบรวมด้วยการสนับสนุนคลิปบอร์ด ลอง:

vim --version | grep .xterm_clipboard -o 

และถ้าเป็น-xterm_clipboard (คำนำหน้าลบ) คุณก็ทำได้ไม่ได้รับการสนับสนุน

นี่คือคำแนะนำสำหรับการแลกเปลี่ยนกับ vim เวอร์ชันทำงานที่รองรับคลิปบอร์ด

  • $ sudo apt-get vim purge
  • $ sudo apt-get autoremove (ลบแพ็กเกจการพึ่งพา vim ภายนอกใด ๆ จากระบบ)
  • $ sudo apt-get install vim-gnome

ตรวจสอบอีกครั้งด้วยvim --version | grep .xterm_clipboard -oและคุณสามารถยืนยันได้ว่าคลิปบอร์ดพร้อมใช้งานแล้ว (เช่น. + xterm_clipboard )

โชคดี.


3
คุณทำให้วันของฉันหรือเดือนของฉัน หลังจากทำงานหนักด้วยคลิปบอร์ดไร้คลิปบน Ubuntu มานานหลายปีนี่เป็นความรู้สึกที่น่าอัศจรรย์ arcseldon ขอขอบคุณ !!
evanrmurphy

นอกจากสิ่งที่อธิบายไว้ข้างต้นฉันต้องใส่ไฟล์set clipboard=unnamedplusของฉัน.vimrcเพื่อให้งัดทำงาน ฉันใช้ Ubuntu 18.04
เอลียาห์

23

ฉันไม่สามารถคัดลอกไปยังระบบของคลิปบอร์ดของฉันเพราะฉันมีสิ่งนี้ในไฟล์ ~ / .vimrc ของฉัน:

 if has('mouse')
   set mouse=a
 endif

แต่ถ้าคุณเพิ่มบรรทัดนี้ต่อไปก็จะอนุญาตให้คุณCtrl+cเพื่อรับสิ่งที่คุณเลือกไว้ในคลิปบอร์ด

vmap <C-c> "+y

การสนทนาดั้งเดิมและรายละเอียดเพิ่มเติม: คัดลอกข้อความออกเป็นกลุ่มด้วย set mouse = a enable


3
ฉันไม่ได้เพิ่มบรรทัดลงใน. vimrc ของฉัน แต่ลิงก์ที่คุณระบุมีประโยชน์มาก หากคุณกด SHIFT ค้างไว้ในขณะที่เลือกข้อความเป็นกลุ่มคุณสามารถคัดลอกข้อความโดยไม่ต้องเข้าสู่โหมดภาพ ขอบคุณและ +1
Stefan van den Akker

Shift shift เป็นสิ่งที่ฉันต้องการ ทำงานได้ดีกับโปรแกรมแก้ไขอย่างเทอร์มินัลที่ใช้ Ctrl + Shift + c เพื่อทำสำเนาในขณะที่อยู่ในพรอมต์ซึ่งเป็นสิ่งที่ฉันได้ลองตอนแรก ฉันมี -xterm_clipboard ติดตั้งเป็นกลุ่ม
Anders Elmgren

18

ทางออกสำหรับฉันคือการติดตั้งเป็นกลุ่มเพิ่มเติมที่มีตัวเลือกคลิปบอร์ดรวม: 

sudo apt-get install vim-gnome

3
นี่คือสิ่งที่ฉันต้องทำสำหรับ Ubuntu 16.04 ฉันลองคำแนะนำอื่น ๆ โดยไม่ประสบความสำเร็จ นี่เป็นวิธีที่ง่ายที่สุดและทำตามที่ฉันคาดไว้ด้วย "+ y.
Steven Eckhoff

มันใช้งานได้อย่างมีเสน่ห์โดยไม่มีการเปลี่ยนแปลงใด ๆ ! ยังคงใช้ได้ใน Ubuntu 16.04
makerj

ข้อเสนอแนะทำงานเฉพาะกับ"+y vim-gnomeใช้ Linux Mint 18.2
Samaursa

14

หากคุณใช้ GVim คุณก็สามารถทำได้เช่นset guioptions+=aกัน สิ่งนี้จะทริกเกอร์การคัดลอกอัตโนมัติไปยังคลิปบอร์ดของข้อความที่คุณเน้นในโหมดภาพ
ข้อเสีย: โปรดทราบว่าผู้จัดการคลิปบอร์ดขั้นสูง (ที่มีประวัติ) จะได้รับประวัติการเลือกทั้งหมดของคุณ ...


13

คุณสามารถหาคำตอบได้ที่นี่ Arch Wiki

สำหรับ Linux: ก่อนอื่นคุณต้องเปิดใช้งานคลิปบอร์ดในเวอร์ชัน vim ของคุณโดยการติดตั้ง gvimก่อนอื่นคุณต้องเปิดใช้งานคลิปบอร์ดในรุ่นที่เป็นกลุ่มของคุณโดยการติดตั้ง


ต่อไปคุณจะต้องใส่บรรทัดนี้ลงใน.vimrcไฟล์ของคุณ

set clipboard=unnamedplus


+1, ประหลาดใจว่าตอนนี้จำเป็นต้องใช้ขั้นตอนนี้แล้ว ในการติดตั้ง Arch ก่อนหน้าของฉันทั้งหมดฉันไม่ต้องทำ
Konstantinos

ทำงานกับ Ubuntu 18.04 ด้วยและทำงานใน tmux ขอบคุณ!
James Klein

10

หากเสียงเรียกเข้าของคุณถูกคอมไพล์โดยไม่มี+xterm_clipboardตัวเลือกเหมือนกับเป็นค่าเริ่มต้นใน Debian และฉันเดาว่า Ubuntu คุณสามารถไพพ์การเลือกหรือบัฟเฟอร์ทั้งหมดไปยังโปรแกรมภายนอกที่จัดการคลิปบอร์ดของเดสก์ท็อป สำหรับxclip(ซึ่งคุณอาจต้องติดตั้งก่อนหน้านี้) คำสั่งจะเป็น:w !xclip -sel clip


1
ขอบคุณสำหรับสิ่งนี้ - มันไม่ได้ผลสำหรับฉันบน Ubuntu (ดังนั้นยืนยันการเดา Ubuntu ของคุณว่าถูกต้อง) สำหรับทุกวัยและฉันไม่รู้ว่าทำไม ตอนนี้ฉันสามารถดูในธงที่แสดงเมื่อฉัน-xterm_clipboard vim --version
jamesc

สิ่งนี้ช่วยฉันในการหาแหล่งสนับสนุนคลิปบอร์ดที่ดี: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc

9

ในกลุ่มภายใต้โปรแกรมอูบุนตูเท่านั้น

กดshift + drag mouseเพื่อเลือกข้อความเป็นกลุ่มแล้วctrl + shift + cบนเทอร์มินัล

จากนั้นctrl + vในโปรแกรมแก้ไขอื่น ๆ


3
สิ่งนี้ทำงานเพื่อเลือกเฉพาะสิ่งที่เป็นภาพในเสียงเรียกเข้าหากคุณต้องการเลือกไฟล์ทั้งหมด
Gerep

@Gerep วิธีนี้ใช้ไม่ได้กับการเลือกไฟล์ทั้งหมด มันเป็นการดีที่จะเลือกส่วนของข้อความบนหน้าจอเทอร์มินัล vim เท่านั้นและตำแหน่งที่แสดงข้อความบนหน้าจอเทอร์มินัล
Supawat Pusavanno

1
สิ่งนี้จะคัดลอกหมายเลขบรรทัดขอบบัฟเฟอร์ของการแยกและทั้งหมดที่มองเห็นได้แทนที่จะเป็นข้อความ / รหัสเท่านั้น
Zelphir Kaltstahl

9

หากคุณมี xclip วิธีง่ายๆในการคัดลอกข้อความไปยังคลิปบอร์ดมีดังนี้:

  1. งัดข้อความที่คุณต้องการคัดลอก (yคำสั่งในวานิลลาเป็นกลุ่ม)
  2. พิมพ์ใน :call system("xclip -selection clipboard", @")

:call system()รันคำสั่งเทอร์มินัล มันต้องใช้สองข้อโต้แย้งครั้งแรกคำสั่งที่สองสิ่งที่จะท่อไปที่คำสั่งนั้น ตัวอย่างเช่น:echom system("head -1", "Hello\nWorld")ส่งคืน Hello (พร้อมช่องว่างภายในบางส่วน) echom ส่งคืนเอาต์พุตของคำสั่งไม่เรียก

xclip -selection clipboard เพียงคัดลอกข้อความไปยังคลิปบอร์ดของระบบซึ่งตรงข้ามกับคลิปบอร์ด X เริ่มต้น (เข้าถึงได้โดยใช้ปุ่ม moue กลาง)

@"ส่งคืนข้อความ yanked สุดท้าย "จะเริ่มต้นลงทะเบียน แต่คุณสามารถใช้ลงทะเบียนใด ๆ . :registersในการดูเนื้อหาของการลงทะเบียนทุกชนิด


2
มันมีประสิทธิภาพมากกว่านี้ทำงานได้แม้ไม่มีการรองรับคลิปบอร์ดและระบบปฏิบัติการใด ๆ ยกตัวอย่างเช่นใน Mac :call system("pbcopy",@")วิ่ง หนึ่งสามารถผูกคำสั่งนี้เพื่อคีย์
ilija139

มันใช้งานได้ดี แต่ฉันสามารถใส่ไว้ใน vimrc ของฉันได้หรือไม่ มันไม่ทำงานสำหรับฉัน
thenakulchawla

4

บางทีบางคนอาจพบว่ามีประโยชน์ ฉันต้องการที่จะรักษาความเป็นอิสระจากคลิปบอร์ด X และยังสามารถคัดลอกและวางข้อความบางส่วนระหว่างการเรียกใช้สองครั้ง รหัสเล็กน้อยนี้บันทึกข้อความที่เลือกในไฟล์ temp.txt สำหรับการคัดลอก ใส่รหัสด้านล่างลงใน. vimrc ของคุณ ใช้ CTRL-c CTRL-v เพื่อทำงาน

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt


4
  1. ใส่ในของคุณset clipboard=unnamedvimrc
  2. เลือกสิ่งที่คุณต้องการคัดลอกในVisualโหมด (กด v เพื่อเข้าสู่)
  3. กลับไปที่Normalโหมด (กด escape [esc]) กด y เพื่อคัดลอก
  4. หากคุณต้องการวางบางสิ่งจากคลิปบอร์ดของระบบปฏิบัติการให้กด p / P ในNormalโหมดVim

4

ฉันเป็นกลุ่มใหม่ แต่เพื่อคัดลอกข้อความทั้งหมดไปยังคลิปบอร์ดของระบบ (เช่นถ้าคุณต้องการวางลงในโปรแกรมประมวลผลคำหรือโปรแกรมแก้ไขข้อความอื่นเช่น gedit, mousepad ฯลฯ ... ) ในโหมดปกติ:

ggVGy

หรือมากกว่านั้น:

:% Y

ตามที่แนะนำฉันยังติดตั้งvim-gtkและใส่

ตั้งคลิปบอร์ด = unnamedplus

ใน. vimrc ของฉัน

และทุกอย่างทำงานได้ดี

หากคุณต้องการคัดลอกข้อความเพียงบางส่วนให้ใช้โหมดภาพ (v)เลือกข้อความที่คุณต้องการคัดลอกและกดy Y

ในที่สุดฉันแนะนำโปรแกรมคลิปบอร์ดเช่น Clipman (รายการโปรดของฉัน), Clipit, Parcellite หรือคล้ายกัน

(ฉันใช้ vim 8.0 ใน Debian Stretch Xfce)

ให้อภัยฉันสำหรับภาษาอังกฤษของฉัน! :-)


4

คำตอบนี้เฉพาะสำหรับผู้ใช้ MAC

VIM เริ่มต้นพร้อมใช้งานกับ MAC ไม่ได้เปิดใช้งานตัวเลือกคลิปบอร์ด คุณต้องใช้ตัวเลือกนั้นในการเข้าถึงคลิปบอร์ดของระบบ

เพื่อตรวจสอบว่ากลุ่มของคุณมีตัวเลือกที่เปิดใช้งานใช้คำสั่งด้านล่าง

vim --version

+clipboardในผลที่คุณควรจะมี ถ้ามันเป็น-clipboardเช่นนั้น VIM ของคุณจะไม่มีตัวเลือกในการเข้าถึงคลิปบอร์ดของระบบ

คุณต้องทำการติดตั้ง VIM ด้วยตัวเลือกที่คุณต้องการ ต่อไปนี้เป็นคำสั่ง

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

ข้างต้นจะติดตั้ง VIM ล่าสุดที่+clipboardเปิดใช้งานตัวเลือก

ตอนนี้คุณต้องตั้งค่าคลิปบอร์ดของระบบ ผนวกบรรทัดต่อไปนี้ไปที่~/.vimrc

set clipboard=unnamed

ตอนนี้คุณสามารถดึงข้อความไปยังคลิปบอร์ดของระบบ ขั้นตอนด้านล่างอธิบายถึงวิธีการงัด

  1. ในโหมดคำสั่ง vim press vสิ่งนี้จะเปลี่ยนเป็นโหมด VISUAL
  2. เลื่อนเคอร์เซอร์ไปรอบ ๆ เพื่อเลือกข้อความหรือบรรทัดที่คุณต้องการคัดลอก
  3. Press yสิ่งนี้จะคัดลอกข้อความที่เลือกไปยังคลิปบอร์ด
  4. ไปที่แอปพลิเคชันภายนอกและCMD + vเพื่อวาง

ฉันใช้ MACBook Pro กับ macOS Mojave และผลงานข้างต้นอยู่ในนั้น


3

ฉันมีปัญหาเพราะกลุ่มของฉันไม่สนับสนุนคลิปบอร์ด :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

ฉันติดตั้ง vim-gnome (ซึ่งรองรับคลิปบอร์ด) จากนั้นตรวจสอบอีกครั้ง:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

ตอนนี้ฉันสามารถคัดลอกและวางโดยใช้ "+ y และ" + p ตามลำดับ


3

ฉันดิ้นรนกับสิ่งนี้มาหลายเดือนจนถึงตอนนี้บน MacOsX โดยใช้แป้นพิมพ์ลัด ฉันรู้ว่าคำถามไม่ได้เกี่ยวกับการใช้แป้นพิมพ์ลัด แต่นี่อาจช่วยคนที่มีข้อกังวลเดียวกัน

ฉันพบว่าหากคุณยกเลิกการเลือก:

ดู -> อนุญาตการรายงานเมาส์

จากเมนู Terminal คุณจะสามารถคัดลอกไปยังคลิปบอร์ดโดยใช้

command + c

อีกครั้ง


2

ฉันเขียนบรรทัดง่าย ๆ ใน. vimrc ของฉันเพื่อให้การคัดลอกทำงานได้ หวังว่านี่จะช่วยใครซักคน เสียงเรียกเข้าของฉันไม่ได้รับการติดตั้งด้วยการสนับสนุนคลิปบอร์ด แต่น่าเสียดายที่ไม่มีคำแนะนำเหล่านี้ที่เหมาะกับฉัน โดยทั่วไปให้วางบรรทัดนี้ใน. vimrc ของคุณ:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

หากคุณต้องการอ่านรายละเอียดเกี่ยวกับสิ่งนี้คุณสามารถอ่านเกี่ยวกับสิ่งนี้ในบล็อกของฉัน


1
ผู้ซื้อระวัง สำหรับ mac นี่มีผลแปลก ๆ
azatar

สิ่งนี้ดูเหมือนจะไม่คัดลอกอะไรไปยังคลิปบอร์ดเมื่อใช้ตามคำแนะนำ (บน linux ubuntu 16.04, ไม่รองรับคลิปบอร์ด) และหากเปิดหลายไฟล์ในเซสชัน vim จะปิดแท็บที่มีการดำเนินการ (visual select และ Cc )
calocedrus

2

สำหรับคีย์บอร์ดนานาชาติบางอย่างที่คุณอาจจำเป็นต้องกด"+ ที่จะได้รับSpace"

ดังนั้นในกรณีเหล่านั้นคุณจะต้องกด"Space+yหรือ"Space*y


2

ในกรณีที่คุณไม่ต้องการใช้อินเทอร์เฟซแบบกราฟิกใด ๆ เป็นกลุ่มและคุณต้องการติดกับเทอร์มินัลอีมูเลเตอร์อาจมีวิธีการที่ง่ายกว่าสำหรับปัญหานี้ แทนที่จะใช้งัดหรืออะไรอย่างนี้ก่อนอื่นให้ดูที่เอกสารของเครื่องที่คุณใช้ ฉันกำลังดิ้นรนกับปัญหาเดียวกัน (พยายามใช้ + คลิปบอร์ดและ xclip และอื่น ๆ ) และในที่สุดมันกลับกลายเป็นว่าในเทอร์มินัลอีมูเลเตอร์ของฉันมันเพียงพอที่จะเพียงแค่กด Shift และเลือกข้อความที่คุณต้องการคัดลอก แค่นั้นแหละ. ค่อนข้างง่ายและไม่จำเป็นต้องยุ่งกับการกำหนดค่า (ฉันใช้ urxvt โดยวิธี)


1

สำหรับ OSX เช่นเดียวกับคำตอบที่ 10342 ข้างต้นชัดเจนคุณต้องตรวจสอบให้แน่ใจว่า vim รองรับฟีเจอร์คลิปบอร์ดกล่าวว่าคำตอบที่มาพร้อมกับ OSX นั้นไม่รองรับคลิปบอร์ดและหากคุณเรียกใช้ brew install vimมันจะใช้งานได้

ยกเว้นว่าการเรียกใช้ vi จะยังคงทำให้คุณเรียกใช้เวอร์ชั่น OSX ที่กำหนดล่วงหน้าไว้ไม่ใช่รุ่นที่คุณติดตั้งจากการต้ม

เพื่อข้ามสิ่งนี้ฉันเพียงแค่ใช้นามแฝงคำสั่ง vim ของฉันกับเวอร์ชันการสร้างไม่ใช่ค่าเริ่มต้นของ OSX:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

และตอนนี้ฉันเป็นทอง


1

โซลูชันของฉันใส่บรรทัดต่อไปนี้เป็น. vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

สคริปต์คัดลอกบรรทัดที่เลือก (โหมดภาพผ่านราง) หรือเนื้อหาไฟล์ (หากไม่มีการเลือก) ไปยังคลิปบอร์ดโดยใช้ Ctrl + y ฉันใช้ Manjaro Linux ถ้ามันสำคัญ


1

ฉันใช้ mac osx (10.15.3) และใหม่สำหรับกลุ่ม ฉันพบสิ่งนี้ที่น่าผิดหวังและคำตอบทั้งหมดที่นี่ซับซ้อนเกินไปและ / หรือไม่ได้นำไปใช้กับสถานการณ์ของฉัน ฉันได้รับการทำงานใน 2 วิธี:

  1. การแม็พคีย์ที่ใช้ pbcopy : ทำงานบนเวอร์ชันเก่าของกลุ่มที่มาพร้อมกับ mac

    เพิ่มvmap '' :w !pbcopy<CR><CR>ใน ~ / .vimrc ของ
    คุณตอนนี้คุณสามารถเลือกและกด''(เครื่องหมายสองเครื่องหมาย) เพื่อคัดลอกไปยังคลิปบอร์ด

  2. ติดตั้ง vim เวอร์ชันใหม่เพื่อให้ฉันสามารถเข้าถึงโซลูชันที่แนะนำมากที่สุดในคำตอบอื่น ๆ :

    brew install vim
    alias vim=/usr/local/bin/vim(ควรเพิ่มสิ่งนี้ใน ~ / .bashrc หรือเทียบเท่า) ของ
    คุณตอนนี้คุณสามารถเลือกและกด"+yyเพื่อคัดลอกไปยังคลิปบอร์ด


ทางออกที่ดีมาก!
ABD

0

selectingด้วยความช่วยเหลือของmouseและright-click copyทำงานในกรณีของฉัน

ฉันไม่ต้องการให้มีหมายเลขบรรทัดรวมอยู่ด้วยดังนั้น:set nonumberก่อนหน้าcopyingนี้


คุณจะทำเช่นนั้นได้อย่างไรใน nerdTree
ji-ruh

ที่ไม่มีส่วนเกี่ยวข้องกับเสียงเรียกเข้าและเป็นเพียงคลิปบอร์ดคัดลอกจากเทอร์มินัลไปยัง (X)
Carlo Wood

ฉันไม่แน่ใจ @ ji-ruh
Akash

0

ไม่มีอะไรข้างต้นทำงานให้ฉันในแล็ปท็อป windows ของฉัน

Ctrl+ ไม่Cเป็นไรสำหรับการคัดลอก .. แต่ฉันต้องการ Shift+Insertเพื่อวาง!

(เหตุผลที่ดีในการรับแล็ปท็อปซึ่งInsertสามารถเข้าถึงได้ตลอดเวลาโดยไม่ต้องกดคีย์รอง)


0

Shift+ Ctrl+ C หากคุณอยู่ในโหมดกราฟฟิกของ Linux แต่ก่อนอื่นคุณต้องเลือกสิ่งที่คุณต้องการคัดลอก

ป้อนคำอธิบายรูปภาพที่นี่

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