Không thể sao chép từ vim vào clipboard hệ thống


54

Như đã nói trong tiêu đề, tôi không thể sao chép từ vim vào clipboard hệ thống. Viceversa hoạt động, sao chép từ bên ngoài vim và dán với plà ok.

Tôi đã cài đặt hỗ trợ clipboard, phiên bản vim là 7.3.429:

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

Tôi có:

set clipboard=unnamedplus

trong tôi .vimrcvà nó được thiết lập khi tôi làm:

set clipboard?

hoặc là

:echo has('clipboard')

Tôi đang sử dụng Ubuntu 12.04 LTS và vim bên trong gnome-terminal(nhưng GVim cũng gặp vấn đề tương tự). Ý tưởng nào không?

Cảm ơn


stackoverflow.com/questions/11361428/ trộm Điều này có thể giúp bạn một chút.
coteyr

Bạn đã bỏ vim giữa khi gõ "+ y vào lựa chọn trực quan và cố gắng dán bên ngoài vim? Sẽ không hiệu quả nếu bạn làm thế
Samuel Peter

@SamuelPeter Không, tôi đã không bỏ vim
gc5

1
Tôi gặp phải vấn đề này bởi vì tôi đang thiết lập clipboard+=unnamedplusmột cái gì đó trong cài đặt mặc định là vô hiệu hóa nó. Thay đổi thành clipboard=unnamedplus(ví dụ: loại bỏ các cài đặt khác) làm việc cho tôi.
JonnyRaa

Như @JonnyLeed đã đề cập. Cấu hình set clipboard+=unnamed& set clipboard+=unnamedpluskhông hoạt động trong khi sử dụng yp để chia sẻ bảng tạm hệ thống. :set clipboard?== clipboard=autoselect,exclude:cons\|linux,unnamed,unnamedplus; Sau khi tôi lấy ra đầu tiên +, đó là set clipboard=unnamedset clipboard+=unnamedplus, và nó hoạt động !! :set clipboard?==clipboard=unnamed,unnamedplus
Marslo

Câu trả lời:


87

Đây là những gì làm việc cho tôi (Ubuntu 13.10):

Cài đặt lại vim dưới dạng vim-gtk:

sudo apt-get install vim-gtk

chọn những gì bạn muốn bằng chuột - sau đó gõ để sao chép vào clipboard :

"+y

để dán vào vim từ loại clipboard :

"+p

Tôi không biết tại sao nhưng so sánh đầu ra của vim --versionchương trình cho thấy cài đặt vim thông thường khá hạn chế so với vim-gtk. Thay thế vim bằng vim-gtk không ảnh hưởng đến bất kỳ trình cắm nào.


Thêm thông tin:


1
Tôi không thể bày tỏ bạn đã giúp tôi bao nhiêu và bây giờ tôi hạnh phúc đến mức nào: D
7hi4g0

1
Điều thú vị là vào ngày 14.04, cả VIM và VIM-GTK thông thường đều có xterm_clipboardhỗ trợ, nhưng "+pkhông hoạt động trong VIM thông thường. Thay vì cắt vào bảng tạm, nó làm tăng sự không ổn định của các dòng được chọn.
dotancohen

1
Cài đặt vim-gtkcuối cùng đã làm việc cho tôi trong 14.04.4, nhưng tôi đã trải nghiệm mọi thứ hơi khác so với những người khác nhận xét. Trước khi vim-gtkcài đặt, vim đã hiển thị -xterm_clipboard(nghĩa là không được bật). Sau khi cài đặt, vim-gtknó hiển thị (+ xterm_clipboard). Tôi đang kiểm tra điều này với vim --version | grep clip. Dù sao, có ý nghĩa mà bạn cần +xterm_clipboard!
lật đổ

Đây là một giải pháp tuyệt vời. Trên thực tế, tôi đã thực hiện điều này trước tiên sau khi cài đặt hệ điều hành Ubuntu mới.
linbianxiaocao

Cài đặt vim-gtk làm việc cho tôi. Cảm ơn
Miguel Mota

6

Tôi sẽ để lại câu trả lời ban đầu dưới đây vì nó có thể quan trọng đối với những người khác tìm kiếm câu hỏi này.

Nói tóm lại, dường như không có một kích thước phù hợp với tất cả câu trả lời, nhưng với 'set clipboard = unnamedplus', một trong hai '* p' hoặc '+ p' sẽ hoạt động từ bảng tạm "hệ thống".

'* P' gần như chắc chắn là thứ bạn muốn. ( từ đây )


vim là một chương trình cli. Khi sử dụng nó bên trong gnome-terminal (hoặc bất kỳ trình giả lập thiết bị đầu cuối nào), crtl + c (hoặc bất kỳ tổ hợp phím nào) được xử lý bởi trình giả lập đầu cuối, sau đó là shell, sau đó là chương trình (vim trong trường hợp này). vim và ctrl + c gần như chắc chắn sẽ không bao giờ hoạt động vì ctrl + c gửi tín hiệu SIGINT cho tác vụ đang chạy. vim sử dụng SIGINT để dừng những thứ khác như hủy bỏ chế độ chèn hoặc dừng các chức năng tìm kiếm.

Nói cách khác. Ctrl + C không bao giờ thực sự được chuyển đến VIM. SIGINT được truyền cho VIM. SIGINT có các cách sử dụng khác trong vim vì vậy sử dụng để sao chép có thể sẽ không hoạt động (và ngay cả khi bạn có thể ép buộc nó, không phải là một ý tưởng tốt).

Thay vào đó hãy thử gắn bó với Ctrl + Shift + C và Ctrl + Shift + V (có những người khác nhưng tôi tin rằng những người đó đặt văn bản trong bảng tạm hệ thống)

Công bằng mà nói tôi không biết nhiều về gvim.


Có thể tôi đã làm bạn bối rối .. Tôi đã nói sử dụng ctrl-cOUTSIDE vim và dán p, nhưng trong vim tôi biết tôi phải sử dụng y.. Tôi sẽ chỉnh sửa câu hỏi của mình
gc5

1
LOL chưa có cafein của tôi, xin lỗi.
coteyr

5

Sử dụng trong vimrc của bạn:

set mouse=a

Nó sẽ cho phép bạn chọn và sao chép thủ công bằng chuột.


3

Ngoài câu trả lời được chấp nhận , nếu bạn đang làm việc từ xa qua SSH (ví dụ: qua tmuxnhiều bảng với các vimquy trình khác nhau mà bạn muốn sao chép giữa), bạn cũng cần xuất màn hình X của mình vì vimđang sử dụng xterm-clipboardđể giao diện giữa các quy trình khác nhau. Bạn có thể đặt màn hình X bằng cách chạy

export DISPLAY=:0.0

Điều này phải được chạy trước khi vim được đưa ra, và dưới bất kỳ shell nào khác mà bạn có.


1

Tôi đã tìm thấy trên Ubuntu 16.04 Tôi cần vim-gui-commoncài đặt "+yđể hoạt động.

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.