Cách sao chép vùng chọn vào bảng tạm OS X


225

Tôi có một khu vực được chọn trong Vim. Làm thế nào tôi có thể sao chép nó vào bảng tạm OS X?

(Bảng tạm OS X có thể được ghi vào thông qua một đường ống đến /usr/bin/pbcopy)


4
Chỉ cần chọn trực quan, sau đó "+y.
zx1986

2
Các vim vận chuyển với OSX không+clipboardhoặc +xterm-clipboard. Bạn có thể xác minh điều này với vim --version | grep clipboard. Có thể giải quyết vấn đề này với brew install vim --with-client-server.
LondonRob

1
Hoặc sử dụng MacVim, cung cấp phiên bản dòng lệnh có thể được liên kết với nhau ~/binvà sau đó ~/bincó thể được chèn vào đường dẫn của bạn trước vim và từ đồng nghĩa được cài đặt hệ thống thông thường.
Tin Man

Dựa trên những gì @ zx1986 đã viết, tôi đã làm ba điều: 1) Đã thêm đoạn sau vào ~ / .bashrc để đặt bí danh vi / vim vào chế độ đầu cuối của MacVim: alias vi='mvim -v'2) Đã thêm đoạn sau vào ~ / .vimrc, ánh xạ Ctrl + c (không phải Cmd + c): vnoremap <C-c> "+y3) Maestro Bàn phím được định cấu hình để nhập chuỗi khóa ^c(Ctrl + C) khi chạy trong thiết bị đầu cuối (trong trường hợp của tôi là iTerm2) Điều này cho phép sử dụng Cmd + c để sao chép văn bản vào bảng tạm OSX để nó có thể được dán trong các ứng dụng OSX khác.
Neil Griffin

Câu trả lời:


79

Tùy thuộc vào phiên bản Vim nào tôi sử dụng, tôi có thể sử dụng thanh +ghi để truy cập vào bảng tạm.

" Chia sẻ clipboard Mac OS X " cũng có thể có một số ý tưởng phù hợp với bạn.


5
Đối với những người có VIM được biên dịch mà không có + clipboard, liên kết ở trên là một tài nguyên tuyệt vời để cung cấp cách giải quyết với việc biên dịch lại VIM
sdjuan

CHI TIẾT RẤT QUAN TRỌNG !!! Nếu bạn có Vim-phiên bản 7.3 thì điều này có thể không phù hợp với bạn, nhưng nếu bạn có Vim-phiên bản 7.4 thì có (và đôi khi bạn thậm chí không phải thực hiện toàn bộ "+ y). Và bạn chỉ kiểm tra điều này ghi> vim trong thiết bị đầu cuối và sau đó là số phiên bản là khi bạn khởi động nó.
Zeth

câu trả lời này giống như stackoverflow.com/a/680271/2652524
Gujarat Santana

1
Thanh "+ghi chỉ tồn tại cho X11 (trừ khi bạn xây dựng vim có hỗ trợ + X11, sẽ cài đặt máy chủ X11 XQuartz trong OS X), trong khi OS X không sử dụng X11 làm hệ thống windows.
nn0p

Phải làm gì, nếu cả hai - vimmacvimcó + clipboard. Và clipboard=unnamedthêm vào ~/.vimrc? Trông giống như nỗi đau thực sự, đã thử tất cả các cách giải quyết và hiện phải sử dụng tàu vũ trụ, khi tôi biết, tôi sẽ phải sử dụng bảng tạm toàn cầu :)
Nikolay Fominyh

240

Đối với MacVim và Windows Gvim, chỉ cần thêm các mục sau vào ~/.vimrc:

set clipboard=unnamed

Bây giờ tất cả các hoạt động như yy, DPlàm việc với clipboard. Không cần phải thêm tiền tố vào chúng bằng "*hoặc "+.


2
Tôi đã dành cả buổi sáng để tìm cách tách các lệnh y, d và P khỏi-C và ⌘-V mà MacVim cho phép bạn và cuối cùng đã tìm thấy điều này. Chắc chắn, tôi đã thêm nó vào vimrc của tôi khi tôi còn là một thiếu niên vim và nó đã làm tôi thất vọng kể từ đó.
Jonathan Dumaine

2
Đối với những người mới sử dụng MacVim, có thể sử dụng từ thiết bị đầu cuối với -vcờ ( mvim -v). Tôi có bí danh của tôi với vim và mvim.
pk-nb

3
Như @VincentG đã đề cập trong nhận xét của mình ở trên, điều này thực sự hoạt động với các phiên bản Vim dựa trên thiết bị đầu cuối, nhưng những người sử dụng tmux trong thiết bị đầu cuối sẽ cần tuân theo một trong các giải pháp chi tiết tại đây: stackoverflow.com/a/11421329/456584
user456584

3
đây phải là câu trả lời được chấp nhận - miễn là :echo has("clipboard")nói 1, đó là trường hợp của MacVim và tôi có một vibí danh chạy mvim -vthay thế
jdsumsion 6/03/2015

1
@Joseph, nếu :versionhiển thị cho bạn -clipboardthì bản dựng của Vim không hỗ trợ tính năng clipboard. Tôi đã nói về MacVim, một ứng dụng GUI.
George V. Reilly

136

Nếu bảng tạm được bật, bạn có thể sao chép vùng đã chọn vào bảng tạm bằng cách nhấn "*y

Để xem nếu nó được kích hoạt, hãy chạy vim --versionvà tìm kiếm +clipboardhoặc -clipboard. Ví dụ: nó không được bật theo mặc định trên hộp 10.5.6 của tôi:

% mà vim
/ usr / bin / vim
% vim - chuyển đổi
VIM - Vi IMproved 7.2 (2008 ngày 9 tháng 8, biên soạn ngày 11 tháng 11 năm 2008 17:20:43)
Bao gồm các bản vá: 1-22
Được tổng hợp bởi _www@b77.apple.com
Phiên bản bình thường không có GUI.  Các tính năng bao gồm (+) hoặc không (-): 
... 
-clentserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + bình luận
 ...

Nếu nó đã được biên dịch +clipboard, tôi có thể sử dụng thanh "*ghi để truy cập vào bảng tạm hệ thống.

Tôi đã tải xuống nguồn 7.2 và biên dịch nó (dễ như tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install) và bảng tạm được bật:

% mà vim
/ usr / địa phương / bin / vim
% vim - chuyển đổi
VIM - Vi IMproved 7.2 (ngày 9 tháng 8 năm 2008, biên soạn ngày 24 tháng 3 năm 2009 17:31:52)
Được tổng hợp bởi ramion@Myrrhy.local
Phiên bản bình thường với GUI GTK2.  Các tính năng bao gồm (+) hoặc không (-): 
... 
+ máy khách + bảng tạm + cmdline_compl + cmdline_hist + cmdline_info + nhận xét
 ...

Tuy nhiên, ngay cả sau khi biên dịch, tôi không thể sao chép vào bảng tạm khi chạy vim trong Terminal.app, chỉ trong X11.app.


3
Tôi đã biên dịch phiên bản mới nhất với + clipboard và bây giờ clipboard gốc hoạt động với nó dưới dạng * đăng ký. Ngoài ra, việc đặt "set clipboard = unnamed" trong tệp .vimrc của bạn làm cho bảng tạm hệ thống trở thành điển hình. Tôi thực sự đã sử dụng github.com/adamv/homebrew/blob/d repeatates / L Library / Formula / ám công thức homebrew này để xây dựng và biên dịch nó.
rado

Hmm, không chắc tại sao Vim không xuất hiện trong Homebrew của tôi, nhưng tôi đã sao chép nó xuống / usr / local / Library / Formula, chạy brew install vim và thất bại với "ld: library không tìm thấy cho -lruby-static ". Tôi đang sử dụng RVM và vào ngày 1.8.7. Khi tôi chuyển sang 1.9.2, lỗi là "ld: không tìm thấy thư viện cho -lruby.1.9.1". Giải pháp là sử dụng hệ thống Ruby bằng cách thực hiện hệ thống sử dụng rvm đầu tiên.
cần xem

9
Dễ dàng hơn một chút so với tìm kiếm từ "clipboard" trong danh sách dài các tính năng: làm :echo has("clipboard"). Nếu nó hiển thị 0, nó không được biên dịch. Nếu nó hiển thị 1, thì nó là.
ravron

3
bạn cũng có thể nhận được vim được biên dịch với clipboard bằng cách sử dụng homebrew: brew install vim
Anton Koval '

4
Coi chừng! Tôi đã có một +clipboardphiên bản, nhưng đã cài đặt --with-client-servercho phép +x11và cố gắng sao chép / dán vào x11 trong terminal vim trên macOS không hoạt động :) Tôi phải cài đặt lại mà không có +clientserver.
jacwah

96

Bạn có thể trực quan chọn văn bản và gõ :w !pbcopy<CR>

Hoặc bạn có thể bao gồm các ánh xạ chính bên dưới trong ~/.vimrctệp của bạn . Họ cắt / sao chép văn bản ở chế độ trực quan vào bảng tạm của hệ điều hành.

vmap <C-x> :!pbcopy<CR>  
vmap <C-c> :w !pbcopy<CR><CR> 

nguồn: http://drydevelopment.com/blog/vim-pbcopy-on-os-x


6
Bạn cũng có thể chọn văn bản từ dòng lệnh như: 1,10w! Pbcopy để sao chép các dòng 1-10 vào bảng tạm. Các w là quan trọng cùng với không gian sau nó để giữ văn bản gốc tại chỗ. Liên kết nguồn ở trên hiện đã bị hỏng nhưng có một cuộc thảo luận ở đây: vim.wikia.com/wiki/Mac_OS_X_clipboard_shaming
sdjuan

Tôi đã làm theo cách này để làm việc này trong tmux: superuser.com/questions/231130/ Kẻ
Wex

@Wex Link đã được sửa
SnoringFrog

2
Lưu ý điều này dường như chỉ hoạt động để chọn toàn bộ dòng. Nó dường như không hoạt động nếu bạn chỉ muốn chọn một phần của một dòng. stackoverflow.com/questions/16196826/ Mạnh
Kevin Wheeler

1
@Kevin Wheeler: bạn có thể thử với lệnh sau có thể giải quyết bản đồ không theo đường thẳng <im lặng> <lãnh đạo> y: <CR>: let @ a = @ "\ | thực thi" bình thường! vgvy "\ | let res = system (" pbcopy ", @") \ | hãy để @ "= @ a <CR>
dragonxlwang

38

dấu ngoặc kép ( "*) trước bất kỳ lệnh yank nào sẽ đưa kết quả vào bộ đệm sao chép. Điều đó cũng làm việc cho Windows và Linux.


11
dường như chỉ phát ra một nhân vật chuông và không có tác dụng nào khác đối với tôi
ʞɔIu

3
Trong X11, "* là CHÍNH HÃNG" của Vim, + là CLIPBOARD và THỨ HAI không nhận được đăng ký có tên. (Không phải ai cũng sử dụng nó ...)
ephemient

Hoàn hảo. Thực sự có ích, đặc biệt là với lựa chọn khối (ctrl-v).
Sonique

Vì câu hỏi cụ thể là về Mac OS X, nên thêm rằng nó hoạt động cho Mac "quá" là không cần thiết.
Paul Tomblin

@PaulTomblin được rồi, đủ công bằng :-)
học

26

Trên macos 10.8, vim được biên dịch -clipboardđể sử dụng, "*ybạn sẽ cần biên dịch lại. May mắn brew install vimsẽ biên dịch một phiên bản mới dễ dàng cho bạn và nó sẽ được +clipboard.


1
Một cái gì đó để ghi nhớ - khá kỳ lạ, brew install vimvới các bản cập nhật vi, và không vim . Vì vậy, bạn có thể phải bí danh những thứ khác nhau sau khi cài đặt vim với homebrew.
shridharama

18

Trực quan chọn văn bản và gõ:

ggVG
!tee >(pbcopy)

Mà tôi thấy đẹp hơn:

ggVG
:w !pbcopy

Vì nó không hiện lên một dấu nhắc: "Nhấn ENTER hoặc gõ lệnh để tiếp tục"


Vẫn sao chép toàn bộ dòng
Karl Pokus


11

Nếu bạn đang sử dụng MacPorts, bạn có thể nâng cấp VIM của mình để bao gồm hỗ trợ clipboard qua:

port install vim +x +x11

Bây giờ bạn sử dụng thanh "+ghi để kéo văn bản của bạn trực tiếp vào bảng tạm của máy Mac. Hoạt động như một lá bùa.


1
Đây chỉ là những gì tôi cần. Người ta chỉ cần đảm bảo rằng $ PATH là chính xác và bạn đang nhận / opt / local / bin / vim chứ không phải Apple vim.
Gareth

8

Nếu bạn đang dùng MacOS X:

$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]

Sau đó, thêm vào .vimrc của bạn:

set clipboard=unnamed

Bây giờ bạn chỉ cần ở trong vim và làm :%y, để có tất cả nội dung được sao chép vào clipboard của bạn.


nội dung được kéo dài nhưng tôi không thể dán bên ngoài VIM.
nguyện

5

Sử dụng vim của Homebrew :brew install vim

Mac (tính 10.10.3 Yosemite) được cài sẵn với một vim hệ thống mà khôngclipboardcờ kích hoạt.

Bạn có thể tự biên dịch vim và bật cờ đó hoặc đơn giản là sử dụng vim của Homebrew được thiết lập đúng.

Để thấy điều này cho chính mình, hãy kiểm tra vim hệ thống chứng khoán với /usr/bin/vim --version

Bạn sẽ thấy một cái gì đó như:

$ /usr/bin/vim --version

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov  5 2014 21:00:28)
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...

Lưu ý -clipboard

Thay vào đó, vim homebrew của bạn nhận được

$ /usr/local/bin/vim --version

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42)
MacOS X (unix) version
Included patches: 1-712
Compiled by Homebrew
Huge version without GUI.  Features included (+) or not (-):
... +clipboard ...

Lưu ý +clipboard


1
Vậy thì làm sao để tạo bản sao?
Frozen Flame

với phiên bản brew của vim tôi đã có thể làm những gì tôi muốn: Tôi nhấn mạnh các dòng sử dụng Vsau đó :w !pbcopyvà nó làm việc
davidpm4

5

Nếu Vim của bạn không được biên dịch bằng bảng ghi, bạn muốn sao chép văn bản đã chọn thay vì toàn bộ dòng, bạn không muốn cài đặt MacVim hoặc GUI khác, giải pháp đơn giản nhất là thêm dòng này vào .vimrc:

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

Để sử dụng nó, chỉ cần chọn trực quan văn bản bạn muốn sao chép và sau đó Control- C. Nếu bạn muốn giải thích đầy đủ về dòng này, hãy đọc " Cách sao chép vào clipboard trên vim ".


nhưng nó cũng cho tôi 2 dòng màu đen sau khi văn bản được sao chép
Nic Wanavit


3

Bạn có thể sử dụng MacVim khi bạn sử dụng máy Mac để dễ dàng truy cập bảng tạm bằng các phím hệ điều hành tiêu chuẩn.

Nó cũng hoàn toàn tương thích ngược với Vim bình thường, vì vậy tôi thậm chí không phải có một cái riêng .vimrc.


Tôi sử dụng MacVim và sau đó liên kết các từ đồng nghĩa vim dòng lệnh vào của tôi ~/binđể ghi đè mặc định.
Tin Man

2

lệnh-C? Điều này ít nhất hoạt động cho vim được khởi chạy từ bên trong Terminal.app cho văn bản được chọn bằng chuột.


6
câu trả lời ngây thơ tốt nhưng phá vỡ đầu ra nếu bạn đang sử dụng các luồng con chia theo chiều dọc trong vim (đó thực sự là trường hợp tôi có trong tâm trí) hoặc nếu kết quả dài hơn một màn hình đầu cuối
--Iu

3
Bạn nói đúng, tôi đã không nghĩ về những trường hợp này. Tôi để lại câu trả lời của mình chỉ để ngăn người khác đưa ra những câu trả lời không hữu ích.
mouviciel


2

Vấn đề chính của tôi là phiên bản OSX mặc định của Vim. Cài đặt nó thông qua homebrew được thêm +clipboardvào bản dựng.

Bạn có thể kiểm tra với:

vim --version

để xem nếu nó nói -clipboardhay +clipboard.


2

nếu bạn có +clipboardtùy chọn cài đặt Vim (bạn có thể kiểm tra :version) và bạn đang ở chế độ trực quan, bạn có thể thực hiện "+yĐiều này sẽ đưa lựa chọn vào bộ đệm +là bảng tạm.

Tôi đã thêm các bản đồ sau vào vimrc của mình và nó hoạt động tốt.

vmap <leader>y "+y : Với điều này, tôi có thể làm leader keytheo yđể sao chép vào bảng tạm trong chế độ trực quan.

nmap <leader>p "+p : Với điều này tôi có thể làm leader keytheo bằng cách pdán từ bảng tạm vào chế độ bình thường.

PD: Trên Ubuntu tôi phải cài đặt vim-gtk để có +clipboardtùy chọn.


0

trên mac khi mọi thứ dường như hoạt động - chọn bằng chuột, nhấp chuột phải chọn sao chép. uff


0

Tôi hiện đang dùng OS X 10.9 và những nỗ lực biên dịch vim của tôi với + xterm_clipboard không mang lại cho tôi điều gì. Vì vậy, giải pháp hiện tại của tôi là sử dụng MacVim ở chế độ đầu cuối với tùy chọn set clipboard=unnamedtrong tệp ~ / .vimrc của tôi. Hoạt động hoàn hảo cho tôi.


0

Điều gì làm việc cho tôi trong tôi .vimrc

set clipboard=unnamed
if has("unnamedplus") " X11 support
    set clipboard+=unnamedplus
endif

0

Đối với Mac - Giữ optionphím theo sau ctrl Vtrong khi chọn văn bản đã thực hiện thủ thuật.


0

Shift cmd c - đặt chế độ sao chép Kéo chuột, chọn văn bản, cmd c để sao chép văn bản đã chọn Cmd v để dán


-1

Đối với người dùng Ubuntu, gói bạn muốn truy xuất để sử dụng bảng tạm là đầy đủ. Các gói khác (vim-tiny, vim) không bao gồm tính năng clipboard.


vim-full không còn là tên gói ubfox. gói vim mặc định (7.3.154) có một bộ tính năng tối thiểu, bao gồm -clipboard. Cài đặt vim-gtk hoặc vim-nox sẽ cung cấp phiên bản + clipboard.
spazm

-1

Sao chép vào clipboard bằng cách sử dụng thanh ghi '+' hoặc '*' không hoạt động?

Lý do: Phiên bản cụ thể của vim của bạn đã được biên dịch mà không có hỗ trợ clipboard. Loại vim --verion trên bảng điều khiển và bạn sẽ thấy -xterm_clipboard . Cài đặt vim với các gói gui giải quyết vấn đề này. Trên Ubuntu bạn có thể làm điều này bằng cách gõ trên shell:

sudo apt-get install vim-gui-common

Bây giờ một lần nữa làm vim --version trên console. Rất có thể, bạn sẽ thấy + xterm_clipboard ngay bây giờ !!

Vì vậy, bây giờ bạn có thể sao chép mọi thứ vào clipboard bằng cách sử dụng register + (như "+ yy để sao chép dòng hiện tại vào clipboard)


-1

Tôi gặp vấn đề tương tự, sau khi cài đặt macvimvẫn không hoạt động, cuối cùng tôi cũng tìm được cách giải quyết:

Hãy thử gỡ cài đặt tất cả vim trước,

brew uninstall macvim

brew uninstall --force vim

và cài đặt lại macvim

brew install macvim --with-override-system-vim

Sau đó, bạn có thể sử dụng "*yhoặc "+y, không phảiset clipboard=unnamed


-2

Command-c hoạt động với tôi trong cả MacVim và trong thiết bị đầu cuối.


Sao chép và dán truyền thống không hoạt động với bộ đệm Vim và hoàn toàn có thể làm rối định dạng của bạn. Ví dụ, sao chép 15 dòng đối tượng lồng nhau bằng Cmd + C và sau đó dán bằng Cmd + V sẽ khiến nó mất đi sự hiểu biết về việc lồng nhau. Điều này rất có thể phụ thuộc vào cài đặt của bạn trong .vimrc của bạn và có thể rất đặc biệt
netpoetica
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.