Làm thế nào để sao chép vào clipboard trong Vim?


752

Có thể sao chép vào clipboard trực tiếp từ Vim? yychỉ sao chép nội dung vào bộ đệm nội bộ của Vim. Tôi muốn sao chép vào clipboard của hệ điều hành. Có lệnh nào như vậy trong Vim không hoặc bạn chỉ có thể kéo các thứ trong Vim?


140
Vui lòng xem câu trả lời được bỏ phiếu dưới đây để làm rõ một sự thật quan trọng: bạn phải có vim được biên dịch với tính năng + clipboard cho BẤT K of các đề xuất dưới đây để hoạt động ở vị trí đầu tiên! Đây KHÔNG phải là mặc định trên hầu hết các hệ thống.
Neil Traft

7
@NeilTraft, một số câu trả lời đề xuất đường ống từ vim đến các chương trình bên ngoài, do đó, yêu cầu BẤT K answer câu trả lời nào yêu cầu + cờ clipboard, là sai. Chỉ cần chỉ ra để cứu độc giả trong tương lai khỏi nhầm lẫn.
Hnatt

2
Bản sao có thể có của Cách tạo vim dán từ (và sao chép vào) bảng tạm của hệ thống? (Lưu ý: các câu hỏi khác là mới hơn, nhưng có câu trả lời tốt hơn IMHO, mà tôi tại sao tôi đánh dấu này như là một dupe)
Martin Tournoij

5
Hãy chắc chắn rằng bạn đã thực hiện sudo apt-get install vim-gnome trước khi áp dụng các lệnh dưới đây nếu không bạn sẽ nhận được Lỗi Đăng ký không hợp lệ!
Harnirvair Singh

7
@Harnirvair Đối với nhiều nhóm độc giả ở đây, vim-gnomecó thể là quá mức hoặc đơn giản là không có sẵn trong HĐH / distro của họ, trong khi tôi nghi ngờ vim-gtkvà tốt nhất vim-gtk3là có nhiều khả năng tồn tại và kéo ít phụ thuộc hơn, trong khi vẫn cung cấp tích hợp clipboard (ít nhất là cho những người vẫn còn trên X11; Tôi không chắc làm thế nào tất cả những thứ này tương tác với Wayland).
gạch dưới

Câu trả lời:


496

Các *đăng ký sẽ làm điều này. Trong Windows, +*tương đương. Trong unix có một sự khác biệt tinh tế giữa +*:

Trong Windows, các thanh ghi * và + là tương đương. Tuy nhiên, đối với các hệ thống X11, chúng khác nhau. Đối với các hệ thống X11, * là lựa chọn và + là bộ đệm cắt (như bảng tạm). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*có lẽ là những gì bạn muốn hầu hết thời gian, vì vậy tôi sử dụng *vì nó hoạt động như tôi mong đợi trong cả hai môi trường.

Trong các bản phân phối Linux, trước tiên bạn phải cài đặt vim-gtk(aka gvim) để có được chức năng clipboard. Điều này là do vim non-gtk thường được biên dịch mà không có hỗ trợ X11. Điều này là để cho phép nó chạy trên các máy chỉ có bàn điều khiển (thường là máy chủ).

Và đối với những người bối rối về cách sử dụng các thanh ghi khi kéo hoặc đặt, bạn chỉ cần viết "sau đó tên của thanh ghi. Vì vậy, để sao chép một cái gì đó vào sổ đăng ký clipboard, bạn gõ "*yvà sau đó đặt bạn gõ "*p(tín dụng: Kyle Mathews)


31
Không hoạt động trên mac osx Lion. Sau khi nhấn "rồi *, nó sẽ tạo ra tiếng ồn mà mac tạo ra khi bạn không thể làm gì đó. Làm thế nào để tôi làm điều đó trên mac?
Eddy

62
Bạn cũng phải đảm bảo rằng vim được biên dịch với sự hỗ trợ cho clipboard. Vim mặc định trong Ubuntu thì không. Hãy thử vim --version|grep .xterm_clipboard -ovà nếu đó là -bạn không có hỗ trợ. Tải xuống một phiên bản khác nhau theo ubuntuforums.org/showthread.php?t=1686955
Sparhawk

66
Nếu bạn đang sử dụng Linux, bạn nên +đăng ký. Ví dụ: nếu bạn muốn sao chép ba dòng vào bảng tạm của hệ thống, hãy sử dụng các lệnh như v3j"+y, và sau đó bạn có thể dán chúng vào một ứng dụng khác thêm VIM khác. Sử dụng *đăng ký trong Linux chỉ có thể sao chép và dán giữa các ứng dụng VIM khác nhau.
diabloneo

6
Trên Linux, thanh ghi * không hoạt động để sao chép và dán bên ngoài.
weberc2

11
weberc2 và diabloneo, thanh ghi * dành cho bảng chọn lựa, có thể truy cập từ nhấp chuột giữa, không phải dán menu hoặc ^ V
Jim Keener

354

Trên Mac OSX

  • sao chép phần đã chọn: chọn trực quan văn bản (loại vhoặc Vở chế độ bình thường) và loại:w !pbcopy

  • sao chép toàn bộ tập tin :%w !pbcopy

  • dán từ clipboard :r !pbpaste

Trên hầu hết các bản phân phối Linux , bạn có thể thay thế:

  • pbcopyở trên với xclip -i -sel choặcxsel -i -b
  • pbpastebằng cách sử dụng xclip -o -sel -choặc xsel -o -b
    - Lưu ý: Trong trường hợp cả hai công cụ này ( xselxclip) không được cài đặt sẵn trên bản phân phối của bạn, bạn có thể tìm thấy chúng trong repos

1
+1 Hoạt động với Lion, mặc dù vim --versionhiển thị-clipboard
roplacebo

26
tương thích với vim được vận chuyển với mavericks osx. thêm vào .vimrc của bạn vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Để sử dụng ánh xạ này, nếu bạn muốn sao chép, tô sáng văn bản ở chế độ trực quan và nhấn Ctrl-c để sao chép. Để dán từ bảng tạm hệ thống, nhấn Ctrl-v.
davidtingsu

7
Trên linux, nó hoạt động với: w! Xclip -sel c hoặc: w! Xsel -b
trve.fa7ad

4
Đối với bản sao Ctrl + C của Linux: trong ~ / .vimrc thêm:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

3
Một câu trả lời hữu ích hơn nhiều so với câu trả lời được chấp nhận. Cảm ơn bạn!
Bryce Johnson

165

Trong tệp vimrc của bạn, bạn có thể chỉ định tự động sử dụng bảng tạm hệ thống để sao chép và dán.

Trên bộ Windows:

set clipboard=unnamed

Trên bộ Linux (vim 7.3.74+):

set clipboard=unnamedplus

LƯU Ý: Bạn có thể cần sử dụng phiên bản cập nhật của Vim để những thứ này hoạt động.

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


39
Là một phụ lục cho ghi chú của bạn - bạn cũng có thể phải cài đặt các gói bổ sung để làm việc này. Nếu vim của bạn thiếu +xterm_clipboardtính năng (hiển thị khi bạn chạy vim --version). Đây là trường hợp đối với tôi (chạy Kubfox 12.10). Tôi đã phải cài đặt vim-gui-commongói để có được chức năng chính xác.
Jacob Dalton

4
set clipboard=unnamedhoạt động trong Mac OS 10.11.6 (El Capitan) với vim 7.4
Purplejquet

1. Sao chép khi kéo 2. chọn chuột, hoạt động trong Mac Sierra-10.12.6 và phiên bản vim: 8.0.1800 bằng cách chỉ định các lệnh sau trong tệp ~ / .vimrc set mouse=vset clipboard=unnamed
dkb

set clipboard=unnamedhoạt động trên MacOS Catalina
Diego Somar

Bạn có thể muốn cập nhật câu trả lời của bạn. Nó không hoạt động trên Ubuntu 18.04 với vim 8.0.
Luís de Sousa

124

Sử dụng thanh ghi "+để sao chép vào bảng tạm hệ thống (tức là "+ythay vì y).

Tương tự như vậy, bạn có thể dán từ "+để lấy văn bản từ bảng tạm hệ thống (tức là "+pthay vì p).


Tôi sử dụng "*, nhưng dường như chỉ có một sự khác biệt trong X.
dash-tom-bang

3
@ dash-tom-bang: sự khác biệt +/ so với bộ đệm sao chép (không thể nhớ đó là atm)*SELECTIONPRIMARY
Daenyth

2
Yeah star là sự lựa chọn, cộng với là clipboard.
dash-tom-bang

6
Ký tự trích dẫn kép đóng vai trò là bộ chọn đăng ký trong vi và vim.
Amardeep AC9MF

1
Hai bộ phím tắt cần nhớ: "+yy(sao chép dòng vào clipboard) và "+yy(sao chép dòng để chọn); "+p(dán từ clipboard) và "*p(dán từ lựa chọn). "theo mặc định là chọn thanh ghi là thanh ghi nội bộ của vim (cách yypsẽ hoạt động mà không cần tham khảo bất kỳ loại thanh ghi nào). PS: Tôi tự hỏi liệu có một nhân vật cho đăng ký nội bộ của Vim một cái gì đó giống như mặc định "&yychuyển sang yy.

72

@Jacob Dalton đã đề cập đến điều này trong một bình luận, nhưng dường như không ai đề cập đến trong câu trả lời rằng vim phải được biên dịch với hỗ trợ clipboard cho bất kỳ đề xuất nào được đề cập ở đây để làm việc. Của tôi không được cấu hình theo cách đó trên Mac OS X theo mặc định và tôi phải xây dựng lại vim. Sử dụng lệnh này để tìm hiểu xem bạn có nó hay không vim --version | grep 'clipboard'. +clipboardcó nghĩa là bạn tốt và các đề xuất ở đây sẽ phù hợp với bạn, trong khi đó -clipboardcó nghĩa là bạn phải biên dịch lại và xây dựng lại vim.


15
Hoặc, thay vì tự biên dịch, bạn có thể cài đặt gói vim đã được xây dựng với hỗ trợ clipboard. Trên OS X, Homebrew có điều này : brew install vim. Trên Ubuntu, bạn có thể sử dụng sudo apt-get install vim-gnome. Trên các bản phân phối Linux khác (không phải là Gnome), bạn có thể cài đặt vim-gtkhoặc vim-athena.
Neil Traft

3
Cảm ơn, trong Arch Linux, tôi đã phải gỡ bỏ vimvà cài đặt gvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber

Câu trả lời của bạn là giải thích lý do tại sao yank không hoạt động với clipboard, chỉ với thông tin của bạn, tôi có thể thực hiện tìm kiếm google tốt hơn và làm cho nó hoạt động dễ dàng. Và bây giờ nó hoạt động. Sẽ tốt hơn nếu bạn cũng đưa bình luận @NeilTraft vào câu trả lời của mình để mọi người không cần phải tìm kiếm trên google.
Yana Agun Siswanto

Trên Mac, ngay sau khi brew install vimtôi thêm set clipboard=unnamedvào .vimrc. Chạy source ~/.vimrctrong dòng lệnh. Trong .bash_profile tôi đã thêm alias vim="/usr/local/bin/vim"rồi chạy source ~/.bash_profile. Bây giờ trong vim chỉ cần sử dụng ypsao chép / dán
Dmitry

59

Tổng kết và làm cho nó dễ dàng hơn cho người mới,

Để sao chép dòng hiện tại, trong chế độ lệnh loại:

"*yy

Để sao chép toàn bộ tệp / bộ đệm, trong chế độ lệnh, trước tiên, hãy vào đầu thông qua gg, sau đó nhập

"*yG

Như đã lưu ý, điều này đòi hỏi phải +clipboardvim --version, trong đó chỉ ra sự sẵn có của hỗ trợ clipboard, -clipboardcó nghĩa là không.


1
"*5yynói 5 lines yankednhưng không có gì trong clipboard? os / x.
javadba

2
Có, tôi đã xác minh + clipboard
javadba

nnoremap <leader>c "* trong .vimrchoạt động khá tốt như một "bản sao" của các loại, theo sau là một chuyển động để lấy đối tượng văn bản bạn muốn sao chép vào bảng tạm hệ điều hành của bạn.
cpk

Cảm ơn, bạn đã giải thích nó chính xác theo cách tôi cần.
Symen Timmermans

3
Tôi cài đặt vim-gtkđể biến -clipboardthành +clipboard, hơn "+yylà làm việc.
Lai32290

30

Nếu bạn đang sử dụng vim trong MAC OSX, thật không may, nó đi kèm với verion cũ hơn và không tuân thủ các tùy chọn clipboard. May mắn thay, homebrew có thể dễ dàng giải quyết vấn đề này.

cài đặt vim:

brew install vim

cài đặt gui verion của vim:

brew install macvim

khởi động lại thiết bị đầu cuối để có hiệu lực.


nối dòng sau vào ~ / .vimrc
set clipboard=unnamed

bây giờ bạn có thể sao chép dòng trong vim yyvà dán nó trên toàn hệ thống.



Phương pháp cập nhật :

Tôi không bao giờ hài lòng với thiết lập phương pháp clipboard trong nhiều năm. Hạn chế lớn nhất là nó sẽ làm rối lịch sử clipboard của bạn, ngay cả khi bạn sử dụng xđể xóa. Đây là một giải pháp tốt hơn và thanh lịch hơn.

  1. Sao chép văn bản [phạm vi] của vim vào bảng tạm hệ thống. (Gợi ý: sử dụng vhoặc Vđể chọn phạm vi trước, sau đó nhập dấu hai chấm :để kích hoạt lệnh Ex):
    :[line-range]yank +
    ví dụ:
    :5,10y * (sao chép / yank dòng 5-10 vào thanh ghi clipboard của hệ thống *)

  2. Dán nội dung từ bảng tạm hệ thống vào vim trên một dòng mới:
    :put +

Ghi chú:

  1. Nếu bạn chọn một phạm vi từ, ở trên sẽ không hoạt động. sử dụng "* y hoặc " + y để lưu khối hình ảnh này vào khay nhớ tạm. Tuy nhiên điều này là khó để gõ, tôi vẫn đang suy nghĩ về các lựa chọn thay thế.
  2. : help "* hoặc : help * + để biết thêm thông tin
  3. brew info vimsẽ có thể thấy các tùy chọn khác để cài đặt vim. Thông thường, nó không có bất kỳ lựa chọn nào khác.

--with-override-system-vimnên là--with-override-system-vi
maffo

Tôi muốn thử điều này để tránh cài đặt nhiều thứ Xorg trên các hệ thống tối thiểu, nhưng tôi đang thiếu một cái gì đó. Tôi nhận được "Không phải lệnh biên tập [phạm vi] yank +" sau khi chọn ở chế độ v và sau đó nhấn ":".
jeremyjjbrown

29

Dành cho Ubuntu - Tháng 7 năm 2018

Sử dụng thanh ghi "+ để sao chép vào bảng tạm hệ thống (nghĩa là " + y thay vì y ).

Tương tự như vậy, bạn có thể dán từ "+ để lấy văn bản từ bảng ghi tạm của hệ thống (tức là " + p thay vì p ).

Bạn cũng phải đảm bảo rằng vim được biên dịch với sự hỗ trợ cho clipboard. Thử:

vim --version | grep .xterm_clipboard -o 

và nếu đó là -xterm_clipboard (tiền tố trừ) thì bạn không có hỗ trợ.

Dưới đây là một số hướng dẫn để hoán đổi với phiên bản hoạt động của vim có hỗ trợ clipboard.

  • $ sudo apt-get thanh trừng vim
  • $ sudo apt-get autoremove (loại bỏ mọi gói phụ thuộc vim ngoại lai khỏi hệ thống)
  • $ sudo apt-get cài đặt vim-gnome

Kiểm tra lại với vim --version | grep .xterm_clipboard -ovà bạn có thể xác nhận bảng tạm hiện có sẵn (ví dụ: + xterm_clipboard )

Chúc may mắn.


3
Bạn làm cho ngày của tôi, hoặc có thể tháng của tôi. Sau khi làm việc với vim clipboard trên Ubuntu trong nhiều năm, đây là một cảm giác tuyệt vời. arcseldon, cảm ơn bạn !!
evanrmurphy

Bên cạnh những gì đã được mô tả ở trên, tôi đã phải đưa set clipboard=unnamedplusvào .vimrctập tin của mình để yank hoạt động. Tôi đang sử dụng Ubuntu 18.04.
Elijah

23

Tôi không thể sao chép vào hệ thống của bảng tạm của mình vì tôi đã có tệp này trong tệp ~ / .vimrc của mình:

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

Nhưng nếu bạn thêm dòng này tiếp theo, nó sẽ cho phép bạn chỉ cần Ctrl+c để lấy bất cứ thứ gì bạn đã chọn vào bảng tạm.

vmap <C-c> "+y

Thảo luận ban đầu và biết thêm chi tiết: Sao chép văn bản ra khỏi vim với set mouse = a enable


3
Tôi đã không thêm dòng vào .vimrc của mình, nhưng liên kết bạn cung cấp rất hữu ích. Nếu bạn nhấn giữ Shift trong khi chọn văn bản trong vim, bạn có thể sao chép văn bản mà không cần vào chế độ trực quan. Vì vậy, cảm ơn và +1.
Stefan van den Akker

Thủ thuật thay đổi là những gì tôi cần. Hoạt động tốt với các trình soạn thảo như terminator sử dụng Ctrl + Shift + c để sao chép trong khi ở dấu nhắc, đây là điều tôi đã thử lúc đầu. Tôi đã cài đặt -xterm_clipboard với vim.
Anders Elmgren

18

giải pháp cho tôi là cài đặt thêm vim có tùy chọn clipboard bao gồm: 

sudo apt-get install vim-gnome

3
Đây là những gì tôi phải làm cho Ubuntu 16.04. Tôi đã thử các đề xuất khác mà không thành công. Đây là cách dễ nhất và đã làm những gì tôi mong đợi với "+ y.
Steven Eckhoff

Nó hoạt động như một bùa mê mà không có bất kỳ thay đổi vimrc! vẫn còn hiệu lực trong Ubuntu 16.04
Makerj

Các "+ygợi ý chỉ làm việc với vim-gnome. Sử dụng Linux Mint 18.2.
Samaursa

14

Nếu bạn đang sử dụng GVim, bạn cũng có thể set guioptions+=a. Điều này sẽ kích hoạt tự động sao chép vào bảng tạm của văn bản mà bạn đánh dấu trong chế độ trực quan.
Nhược điểm: Lưu ý rằng các trình quản lý clipboard nâng cao (có lịch sử) trong trường hợp này sẽ nhận được tất cả lịch sử lựa chọn của bạn


13

Bạn có thể tìm thấy câu trả lời ở đây Arch Wiki

Đối với Linux: Trước hết, bạn phải bật Clipboard trong phiên bản vim của mình bằng cách cài đặt gvim.


Tiếp theo bạn phải đặt dòng này vào .vimrctập tin của bạn .

set clipboard=unnamedplus


+1, đã rất ngạc nhiên khi bước này bắt buộc. Trong tất cả các cài đặt Arch trước đây của tôi, tôi đã không phải làm điều đó.
Konstantinos

cũng đã làm việc cho Ubuntu 18.04 và chạy trong tmux. Cảm ơn!
James Klein

10

Nếu vim của bạn tình cờ được biên dịch mà không có +xterm_clipboardtùy chọn như mặc định trong Debian và tôi đoán Ubuntu, bạn có thể chọn đường ống hoặc toàn bộ bộ đệm cho chương trình bên ngoài xử lý clipboard của máy tính để bàn. Đối với xclip(mà bạn có thể cần phải cài đặt trước đó), lệnh sẽ là:w !xclip -sel clip


1
Cảm ơn vì điều này - nó đã không hoạt động với tôi trên Ubuntu (vì vậy xác nhận dự đoán Ubuntu của bạn là chính xác) từ lâu và tôi không biết tại sao. Bây giờ tôi có thể nhìn thấy -xterm_clipboardtrong các cờ hiển thị khi tôi vim --version.
jamesc

Điều này giúp tôi tìm được một nguồn hỗ trợ clipboard tốt: vimcasts.org/blog/2013/11/getting-vim-with-clipboard- support
jamesc

9

Trong vim chỉ dưới thiết bị đầu cuối Ubuntu,

nhấn shift + drag mouseđể chọn một văn bản trong vim sau đó ctrl + shift + ctrên thiết bị đầu cuối

sau đó ctrl + vtrên trình soạn thảo khác


3
Điều này hoạt động để chỉ chọn những gì trực quan trong vim, nếu bạn muốn chọn toàn bộ tập tin thì sao?
Gerep

@Gerep phương pháp này không hoạt động cho toàn bộ lựa chọn tập tin. Thật tốt khi chỉ chọn một phần văn bản trên thiết bị đầu cuối vim và nơi văn bản được hiển thị trên màn hình thiết bị đầu cuối.
Supaw Pusavanno

1
Điều này sao chép số dòng, đường viền đệm của phần tách và tất cả những gì có thể nhìn thấy, thay vì chỉ văn bản / mã.
Zelphir Kaltstahl

9

Nếu bạn có xclip, một cách dễ dàng để sao chép văn bản vào bảng tạm như sau:

  1. Yank văn bản bạn muốn sao chép. ( ylệnh trong vanilla vim)
  2. Gõ vào :call system("xclip -selection clipboard", @")

:call system()chạy một lệnh đầu cuối. Phải mất hai đối số, lệnh đầu tiên, lệnh thứ hai sẽ chuyển sang lệnh đó. Ví dụ :echom system("head -1", "Hello\nWorld")trả về Hello (Với một số phần đệm). echom trả về đầu ra của một lệnh, gọi không.

xclip -selection clipboard chỉ sao chép văn bản vào bảng tạm hệ thống trái ngược với bảng tạm X mặc định, (Được truy cập bằng nút moue ở giữa).

@"trả về văn bản kéo dài cuối cùng. "là thanh ghi mặc định, nhưng bạn có thể sử dụng bất kỳ thanh ghi nào. Để xem nội dung của tất cả các thanh ghi, hãy nhập :registers.


2
Điều này mạnh mẽ hơn, nó hoạt động ngay cả khi vim không tuân thủ hỗ trợ cho clipboard và trên bất kỳ HĐH nào. Ví dụ, trên Mac chạy :call system("pbcopy",@"). Người ta có thể liên kết lệnh này với một khóa.
ilija139

nó hoạt động tốt, nhưng tôi có thể đặt nó trong vimrc của mình không, nó có hoạt động không. Nó không làm việc cho tôi.
thenakulchawla

4

Có lẽ ai đó sẽ thấy nó hữu ích. Tôi muốn độc lập với X clipboard và vẫn có thể sao chép và dán một số văn bản giữa hai vims đang chạy. Mã nhỏ này lưu văn bản đã chọn trong tệp temp.txt để sao chép. Đặt mã dưới đây vào .vimrc của bạn. Sử dụng CTRL-c CTRL-v để thực hiện công việc.

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

noremap: r! cat ~ / temp.txt


4
  1. Đặt set clipboard=unnamedtrong của bạn vimrc.
  2. Chọn những gì bạn muốn sao chép trong Visualchế độ (Nhấn v để nhập).
  3. Quay lại Normalchế độ (Nhấn esc [esc]), nhấn y để sao chép.
  4. Nếu bạn muốn dán thứ gì đó từ bảng tạm của HĐH, hãy nhấn p / P ở Normalchế độ Vim .

4

Tôi là người mới sử dụng Vim nhưng, để sao chép tất cả văn bản vào bảng tạm hệ thống (ví dụ: nếu bạn muốn dán nó vào trình xử lý văn bản hoặc trình soạn thảo văn bản khác như gedit, mousepad, v.v.), ở chế độ bình thường:

ggVGy

hoặc, đơn giản hơn:

:% y

Theo đề xuất, tôi cũng đã cài đặt vim-gtk và đặt

đặt clipboard = unnamedplus

trong .vimrc của tôi

và mọi thứ hoạt động tốt

Nếu bạn chỉ muốn sao chép một phần văn bản, hãy sử dụng chế độ trực quan (v) , chọn văn bản bạn muốn sao chép và nhấn y .

Cuối cùng, tôi đề xuất một chương trình clipboard như Clipman (yêu thích của tôi), Clipit, Parcellite hoặc tương tự.

(Tôi đang sử dụng vim 8.0 trong Debian Stretch Xfce)

CHO TÔI TIẾNG ANH! :-)


4

Câu trả lời này là dành riêng cho người dùng MAC.

VIM mặc định có sẵn với MAC không đi kèm với tùy chọn clipboard được bật. Bạn cần tùy chọn đó để truy cập vào bảng tạm hệ thống.

Để kiểm tra xem vim của bạn có bật tùy chọn đó hay không, hãy sử dụng lệnh bên dưới

vim --version

Trong kết quả, bạn nên có +clipboard. Nếu đúng như vậy -clipboard, thì VIM của bạn KHÔNG có tùy chọn để truy cập vào bảng tạm hệ thống.

Bạn cần phải LÀM và cài đặt VIM của bạn với tùy chọn bạn cần. Sau đây là các lệnh.

# 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"

Ở trên sẽ cài đặt VIM mới nhất với tùy chọn +clipboardđược kích hoạt.

Bây giờ bạn cần thiết lập bảng tạm hệ thống. Nối dòng sau vào~/.vimrc

set clipboard=unnamed

Bây giờ bạn có thể kéo văn bản vào hệ thống clipboard. Các bước dưới đây giải thích làm thế nào để kéo dài.

  1. Trong chế độ lệnh vim press v, điều này sẽ chuyển bạn sang chế độ VISUAL.
  2. Di chuyển con trỏ xung quanh để chọn văn bản hoặc dòng bạn cần sao chép.
  3. Press y, điều này sẽ sao chép văn bản đã chọn vào clipboard.
  4. Đi đến bất kỳ ứng dụng bên ngoài và CMD + vđể dán.

Tôi sử dụng MACBook Pro với macOS Mojave và các công việc trên trong đó.


3

Tôi gặp sự cố vì vim của tôi không hỗ trợ clipboard :

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

Tôi đã cài đặt vim-gnome (hỗ trợ clipboard) và sau đó kiểm tra lại:

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

Bây giờ tôi có thể sao chép và dán bằng cách sử dụng "+ y và" + p tương ứng.


3

Tôi đã vật lộn với điều này trong nhiều tháng nay cho MacOsX bằng các phím tắt. Tôi biết câu hỏi không phải là về việc sử dụng bàn phím. Nhưng điều này có thể giúp một người có cùng mối quan tâm.

Tôi thấy rằng nếu bạn bỏ chọn:

Xem -> Cho phép báo cáo chuột

từ menu Terminal, bạn sẽ có thể sao chép vào clipboard bằng cách sử dụng

command + c

lần nữa.


2

Tôi đã viết một dòng đơn giản trong .vimrc của tôi để làm cho bản sao hoạt động. Hy vọng điều này sẽ giúp được ai đó. Thật không may, vim của tôi không được cài đặt với hỗ trợ Clipboard, vì vậy không có gợi ý nào trong số này được đề xuất cho tôi. Về cơ bản, dán dòng này trong .vimrc của bạn:

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

Nếu bạn muốn đọc chi tiết về những gì nó làm, bạn có thể đọc về điều này trên blog của tôi


1
Người mua hãy cẩn thận. Trên mac, điều này có hiệu ứng kỳ lạ.
azatar

điều này dường như không sao chép bất cứ thứ gì vào clipboard khi sử dụng như được hướng dẫn (trên linux ubfox 16.04, không hỗ trợ clipboard) và nếu nhiều tệp được mở trong một phiên vim, sẽ đóng tab nơi thực hiện các hành động (chọn trực quan và Cc ).
calocedrus

2

Đối với một số bàn phím quốc tế, bạn có thể cần nhấn "+ Spaceđể có được a ".

Vì vậy, trong những trường hợp đó, bạn sẽ phải nhấn "Space+yhoặc"Space*y


2

Trong trường hợp bạn không muốn sử dụng bất kỳ giao diện đồ họa nào cho vim và bạn chỉ muốn gắn bó với trình giả lập thiết bị đầu cuối, có thể có một cách tiếp cận đơn giản hơn nhiều cho vấn đề này. Thay vì sử dụng yank hoặc bất cứ thứ gì như thế này, trước tiên hãy xem tài liệu về thiết bị đầu cuối bạn sử dụng. Tôi đã phải vật lộn với cùng một vấn đề (cố gắng sử dụng + clipboard và xclip, v.v.) và cuối cùng, hóa ra trong trình giả lập thiết bị đầu cuối của tôi, chỉ cần nhấn shift và chọn bất kỳ văn bản nào bạn muốn sao chép. Đó là nó. Khá đơn giản và không cần phải lộn xộn với cấu hình. (Tôi sử dụng urxvt bằng cách này).


1

đối với OSX, như 10342 câu trả lời ở trên đã rõ ràng, bạn cần chắc chắn rằng vim hỗ trợ tính năng clipboard, cho biết câu trả lời được gửi sẵn với OSX KHÔNG hỗ trợ clipboard và nếu bạn chạy brew install vimthì nó sẽ hoạt động.

Ngoại trừ việc chạy vi vẫn sẽ khiến bạn chạy phiên bản OSX được cài sẵn, không phải phiên bản bạn đã cài đặt từ brew.

Để vượt qua điều này, tôi chỉ đơn giản đặt bí danh lệnh vim của mình cho phiên bản brew chứ không phải mặc định OSX:

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

và bây giờ tôi là vàng


1

Giải pháp của tôi là đưa dòng sau vào .vimrc:

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

Kịch bản sao chép dòng đã chọn (chế độ hình ảnh máng) hoặc nội dung tệp (nếu không được chọn) vào bảng tạm bằng cách sử dụng Ctrl + y. Tôi đang sử dụng Manjaro Linux nếu điều đó quan trọng.


1

Tôi đang dùng mac osx (10.15.3) và mới sử dụng vim. Tôi thấy điều này rất bực bội và tất cả các câu trả lời ở đây quá phức tạp và / hoặc không áp dụng cho tình huống của tôi. Tôi đã kết thúc việc này theo 2 cách:

  1. ánh xạ khóa sử dụng pbcopy : hoạt động trên phiên bản cũ của vim đi kèm với mac.

    Thêm vmap '' :w !pbcopy<CR><CR>vào ~ / .vimrc
    Bây giờ bạn có thể chọn và nhấn ''(hai dấu nháy đơn) để sao chép vào clipboard

  2. Cài đặt phiên bản mới hơn của vim để tôi có thể truy cập giải pháp được đề xuất nhất trong các câu trả lời khác:

    brew install vim
    alias vim=/usr/local/bin/vim(nên thêm phần này vào ~ / .bashrc hoặc tương đương)
    Bây giờ bạn có thể chọn và nhấn trực quan "+yyđể sao chép vào clipboard


giải pháp rất hay!
ABD

0

selectingvới sự giúp đỡ của mouseright-click copylàm việc trong trường hợp của tôi.

Tôi không muốn số dòng bao gồm vì vậy tôi :set nonumbertrước đây copying.


làm thế nào bạn có thể làm điều đó trong nerdTree
ji-ruh

Điều đó không có gì để làm với vim và chỉ là một bản sao dựa trên thiết bị đầu cuối vào (X).
Carlo Wood

Tôi không chắc chắn @ ji-ruh
Akash

0

Không có gì ở trên làm việc cho tôi trên máy tính xách tay windows của tôi.

Ctrl+ Cđã ổn khi sao chép .. nhưng tôi cần Shift+ Insertđể Dán!

(Một lý do chính đáng để luôn có được một máy tính xách tay, nơi Insertluôn có thể truy cập mà không cần nhấn phím phụ)


0

Shift+ Ctrl+ C nếu bạn đang ở chế độ đồ họa của Linux, nhưng trước tiên bạn cần chọn những gì bạn cần sao chép.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.