Làm thế nào để sao chép trên các thiết bị đầu cuối?


11

Tôi đang sử dụng hệ thống Linux. Hai vims được mở trong hai thiết bị đầu cuối. Bây giờ tôi muốn sao chép văn bản từ A sang B. Một cách để làm như vậy là chọn văn bản trong A, sử dụng chuột để sao chép, sau đó chuyển sang B, trong chế độ chèn, lệnh <c-r>+sẽ dán văn bản.

Có cách nào để thực hiện nó mà không cần sử dụng chuột? như "+yyở A, khi chuyển sang B , o<c-r>+? Tôi khám phá vài sự kết hợp trong vô vọng. Và tôi đã tìm kiếm "bản sao trên các thiết bị đầu cuối", nhưng không tìm thấy gì.

user @statox đề xuất một giải pháp sử dụng chế độ trực quan, tức là v$"+ytrong A, khi chuyển sang B , o<c-r>+.

Có cách nào đơn giản có thể sao chép văn bản trong A mà không cần vào chế độ v không? Phải thừa nhận rằng việc vào chế độ v không liên quan đến quá nhiều cuộc đình công quan trọng, chỉ tự hỏi liệu có cách nào tốt hơn không. Ví dụ. nếu con trỏ ở giữa một dòng, yysao chép toàn bộ dòng (để đăng ký "), trong khi 0v$ythực hiện điều tương tự với hành trình phím phụ.

Hoặc, câu hỏi của tôi có thể được giảm xuống nếu có bất kỳ cách nào có ít nét chính hơn so 0v$"+yvới bản sao để tôi có thể sử dụng <alt-tab>o<c-r>+để dán.


Vấn đề chính xác của bạn là gì? Bạn dường như có giải pháp: chọn bạn văn bản với chế độ trực quan (tại sao sẽ sử dụng chuột?) Đặt nó vào thanh ghi clipboard với "+yvà trong ví dụ vim khác đặt thanh ghi clipboard "+p. Hoặc trùng lặp này ?
statox

Bạn không cần phải vào chế độ trực quan để kéo một cái gì đó. Bạn có thể theo dõi yvới một chuyển động ( :help motion.txt) hoặc một đối tượng ( :help object-select). Nếu bạn kéo và dán trên các phiên bản Vim thường xuyên, bạn có thể thấy cài đặt đó clipboardbao gồm unnamedhoặc unnamedplushữu ích. Xem :help 'clipboard'. Sau đó, sao chép giữa các trường hợp chỉ nên làm việc.
garyjohn

1
Quan điểm của nhận xét của tôi không phải là chế độ trực quan, thực sự tôi gặp khó khăn khi hiểu vấn đề của bạn: ban đầu tôi nghĩ rằng thực tế là sao chép một số văn bản từ thiết bị đầu cuối này sang thiết bị đầu cuối khác, bây giờ có vẻ như đó là về việc sử dụng ít tổ hợp phím như có thể kéo vào thanh ghi clipboard. Nếu đó là trường hợp thứ hai, bình luận của Garyjohn có liên quan.
statox

1
0v$cũng giống như V. Và thật dễ dàng để tạo một bản đồ cho "+y: :nnoremap <Leader>y "+y. Vì vậy mà giảm nó xuống V\y.
Martin Tournoij

@Carpetsmoker giải pháp của bạn là tốt. Tôi muốn coi đó là giải pháp tối ưu nếu bạn dán nó vào vùng trả lời. Dường như không có bản đồ chính, điều tốt nhất chúng ta có thể làm cho bản sao trong câu hỏi của tôi là V"+y, 4 tổ hợp phím.
user3813057

Câu trả lời:


9

Bạn có thể kiểm tra xem Vim có được xây dựng với hỗ trợ clipboard với:

:echo has('clipboard')

Nếu đầu ra là 1, những điều sau đây là đủ để đạt được mục tiêu của bạn:

"*y    in source Vim
"*p    in destination Vim

Bạn có thể làm cho nó trở nên liền mạch hơn rất nhiều bằng cách đồng bộ hóa thanh ghi clipboard và thanh ghi mặc định với cài đặt này trong vimrc:

set clipboard^=unnamed

Nếu đầu ra :echo has('clipboard')0, hãy xem xét việc cài đặt một Vim thích hợp vim-gtkhoặc vim-gnome(tên của gói có thể khác nhau từ distro đến distro).


1

Tôi nghĩ rằng giải pháp bạn đã đề cập trong câu hỏi của bạn là giải pháp chính xác. Nếu bạn muốn giảm số lượng tổ hợp phím, bạn chỉ cần tạo bản đồ, ví dụ:

vmap <leader>y "+y
vmap <leader>d "+d
nmap <leader>p "+p
nmap <leader>P "+P
vmap <leader>p "+p
vmap <leader>P "+P

Xem mục thứ hai ở đây .


1

Để mở rộng câu trả lời của @ romainl, (có hỗ trợ clipboard), bạn có thể sử dụng các thanh ghi được chia sẻ với bảng tạm trên toàn hệ thống.

"+y    To yank/copy from a vim-terminal
"+p    To paste in destination vim-terminal

"*y    To yank/copy from a vim-terminal
"*p    To paste in destination vim-terminal

Bằng cách thực hiện các lệnh này, bạn sẽ được y anking / sao chép / lưu trữ nội dung được lựa chọn trong thanh ghi, và p asting họ đến đích Vim-thiết bị đầu cuối. Hai thanh ghi đặc biệt này +*được chia sẻ với bảng tạm trên toàn hệ thống (và do đó nhiều chương trình khác như trình duyệt web, gedit, v.v.). Đăng ký +được liên kết với bộ đệm sao chép / dán và *được liên kết với bộ đệm lựa chọn (một bộ đệm chèn một bản sao của lựa chọn với một cú nhấp chuột giữa vào một trường văn bản trong, giả sử, Ubuntu) và có thể được dán bằng cách sử dụng ctrl + v( ctrl + shift + vtrên gnome-terminal).


1

1) Trên Fedora tôi sử dụng thiết lập sau:

dnf install vim-X11

vim-X11 đi kèm với hỗ trợ clipboard - có thể trong các bản phát hành khác, nó cũng tương tự.

2) Đặt bí danh trong .bashrc của tôi

alias vim="vimx"

3) Trong .vimrc:

set clipboard=unnamedplus

Bây giờ, yank thông thường trong Vim đi vào bảng tạm hệ thống và mọi Ctrl-C bên ngoài vim có thể được dán trong vim.


0

Nếu bạn đang sử dụng máy Mac (OSX), bạn có thể cài đặt bpcopy (sử dụng brew install pbcopy --see http://brew.sh/ để biết thêm chi tiết). Sau đó chạy phần sau (dòng lệnh dạng thẳng) mà không cần chạm vào chuột:

THÍ DỤ:

1) Trong HẠN # 001 :

cat /tmp/stuff.txt | pbcopy

2) Bạn có thể chuyển sang thiết bị đầu cuối # 002 (không sử dụng chuột) bằng cách sử dụng các phím nóng tích hợp trong ứng dụng đầu cuối của OSX: command+i

3) Trong TERMINAL # 002 : Mở tệp mới trong vim

vi newfile

4) Đặt vim ở chế độ chèn vớii

5) Chèn văn bản từ bảng ghi tạm bằng command+ V(để dán từ bảng ghi tạm trên máy Mac)

6) Tận hưởng phần còn lại trong ngày của bạn!

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.