it-swarm-vi.com

Làm thế nào để sao chép văn bản từ vim sang một chương trình bên ngoài?

Tôi đang cố gắng sao chép-dán một số văn bản từ vim. Tôi đang làm v để vào chế độ trực quan, sau đó y khi tôi chọn khối của mình.

Nó xuất hiện để sao chép văn bản vào clipboard của vim, bởi vì p sẽ dán nó. Nhưng trong một chương trình khác (ví dụ: Chrome), nhấp chuột phải-> dán không dán văn bản chính xác. Làm cách nào để sao chép văn bản vào bảng tạm?

91
ripper234

Những điều sau đây sẽ chỉ hoạt động nếu vim --version chỉ ra rằng bạn có +xterm_clipboard đặc tính. Nếu không, bạn sẽ phải cài đặt các gói bổ sung hoặc biên dịch lại vim với tính năng đó được thêm vào.


Thực tế có hai lựa chọn cho việc này:

"+y

sao chép vào bộ đệm clipboard "thông thường" (để bạn có thể dán bằng Ctrl + V, nhấp chuột phải và chọn "Dán", v.v.), trong khi

"*y

sao chép vào lựa chọn X11 - bạn có thể dán từ bộ đệm này bằng cách sử dụng nhấp chuột giữa.

Lưu ý rằng "*"+ làm việc cả hai cách. Vì vậy, nếu bạn đã chọn một số văn bản trong ứng dụng khác, bạn có thể dán nó vào vim bằng cách sử dụng "*p và nếu bạn đã sao chép một số văn bản (bằng cách sử dụng Ctrl-C) thì bạn có thể dán nó vào vim bằng cách sử dụng "+p.

70
Hamish Downer

Nếu bạn đang sử dụng vim> = 7.3.74, thì bạn thực sự có thể đặt cái này vào vimrc của bạn:

set clipboard=unnamedplus

Mà sẽ tự động sử dụng + bộ đệm (bảng tạm hệ thống) theo mặc định. Sau đó, để yank (sao chép), bạn chỉ cần sử dụng lệnh y thông thường, v.v.

Tuy nhiên, tôi thấy hành vi này khá khó chịu vì các lệnh như d đặt văn bản mà chúng hoạt động vào bộ đệm mặc định, điều đó có nghĩa là tôi không thể thực hiện nhanh dd và dán một dòng từ internet chẳng hạn.

35
Reid

Giữ phím shift và chọn văn bản bằng con trỏ chuột.
[.__.] Văn bản sẽ được sao chép vào bảng tạm.

Điều này cũng hoạt động để dán từ bảng tạm vào vim.

Để rõ ràng, điều này hoạt động cho vim đang chạy trong một thiết bị đầu cuối, chẳng hạn như xterm.

31
Andrew Stacey

Tôi tìm thấy tiêu chuẩn "+gP"+y lệnh rất khó sử dụng. Vì vậy, tôi đã ánh xạ lại Ctrl-Y để kéo vào bảng tạm và Ctrl-P để dán từ bảng ghi tạm. Thêm phần này vào .vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP
11
Bernhard Heijstek

Đừng bận tâm, tôi đã tìm thấy câu trả lời - nó được viết trên menu của vim.

"+y

Rất trực quan.

6
ripper234

Chỉ cần thêm một câu trả lời không cụ thể: Bạn có thể sử dụng Ctrl+Shift+C để sao chép vào bảng tạm hệ thống trong Ubuntu (nếu chức năng được cung cấp bởi trình giả lập thiết bị đầu cuối của bạn, gnome-terminal cho một người cung cấp nó). Ctrl+Shift+V dán vào cửa sổ đầu cuối khác, thông thường Ctrl+V dán vào ứng dụng GUI.

Ngoài ra, nếu bạn chọn văn bản trong thiết bị đầu cuối, sau đó bấm vào giữa, nó sẽ được dán từ bảng tạm X11.

4
crazy2be

Giữ phím Shift và chuột chọn văn bản để sao chép nó.

Sau đó dán vào chương trình khác với CTRL + v.

Hoạt động trong thiết bị đầu cuối trên Ubuntu 16.04 của tôi. Không chắc chắn về gvim và các hệ thống khác.

enter image description here

4
Andrzej Rehmann

Khi tôi kiểm tra 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 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
Ashutosh Tripathy

Theo mặc định, nếu bạn cài đặt phiên bản nhẹ của vim, thì bạn sẽ không có +xterm_clipboard tính năng trên (vim --version | grep xterm), cần thiết để sử dụng *+ đăng ký bên ngoài vim.

Để kích hoạt nó, bạn phải tự biên dịch vim hoặc cài đặt phiên bản vim đi kèm với nó. Tôi đã sử dụng vim-gnome: Sudo apt-get install vim-gnome. Nếu bạn thực hiện vim --version | grep xterm, bạn sẽ thấy rằng bây giờ là +xterm_clipboard.

Bây giờ, hãy thử sao chép vào +* và nó sẽ hoạt động.

2
laughing_man

Chỉ cần thêm, nếu bất cứ điều gì hoạt động hãy cố gắng chuyển thiết bị đầu cuối kết thúc vim (nếu bạn đang sử dụng vim từ thiết bị đầu cuối). Tôi thấy rằng, ví dụ, bảng tạm không thể truy cập bằng guake trong khi có thể truy cập từ gnome-terminal.

0
gc5