Làm cách nào để tạo vim dán từ (và sao chép vào) bảng tạm của hệ thống?


770

Không giống như các trình soạn thảo khác, vim lưu trữ văn bản sao chép trong bảng tạm của chính nó. Vì vậy, rất khó để tôi sao chép một số văn bản từ một trang web và dán nó vào tệp làm việc hiện tại. Nó xảy ra như vậy tôi phải mở gedit hoặc gõ nó bằng tay.

Tôi có thể thực hiện dán vim từ và vào bảng tạm của hệ thống không?



7
Sao chép "+ y Paste" + p Hoạt động giống như yank và dán trừ khi bạn chỉ định anh ấy đăng ký trước đó.
Banjocat

2
Để sử dụng các lệnh sau, hãy đảm bảo bạn đã thực hiện sudo apt-get install vim-gnome sẽ thêm chức năng đó vào sẵn vim sử dụng bảng tạm của hệ thống.
Harnirvair Singh

2
@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

3
Theo mặc định trên Fedora - không có quyền truy cập clipboard (bạn cần gvim), superuser.com/questions/194747/
Kẻ

Câu trả lời:


881

Các "*và các "+thanh ghi dành cho clipboard của hệ thống ( :help registers). Tùy thuộc vào hệ thống của bạn, họ có thể làm những việc khác nhau. Ví dụ, trên các hệ thống không sử dụng X11 như OSX hoặc Windows, thanh "*ghi được sử dụng để đọc và ghi vào bảng tạm hệ thống. Trên các hệ thống X11 cả hai thanh ghi có thể được sử dụng. Xem :help x11-selectionđể biết thêm chi tiết, nhưng về cơ bản "*là tương tự với lựa chọn CHÍNH của X11 (thường sao chép những thứ bạn chọn bằng chuột và dán bằng nút chuột giữa) và "+tương tự với lựa chọn CLIPBOARD của X11 (phù hợp với bảng tạm).

Nếu tất cả những gì diễn ra trong đầu bạn, hãy thử sử dụng "*yyhoặc "+yysao chép một dòng vào bảng tạm của hệ thống. Giả sử bạn có các tùy chọn biên dịch phù hợp, cái này hoặc cái kia sẽ hoạt động. Bạn có thể muốn ánh xạ lại điều này để một cái gì đó thuận tiện hơn cho bạn. Ví dụ: bạn có thể đặt vnoremap <C-c> "*y~ / .vimrc của mình để bạn có thể chọn trực quan và nhấn Ctrl+ cđể kéo vào bảng tạm của hệ thống.

Xin lưu ý rằng sao chép / dán từ bảng tạm hệ thống sẽ không hoạt động nếu :echo has('clipboard')trả về 0. Trong trường hợp này, vim không được biên dịch với +clipboardtính năng này và bạn sẽ phải cài đặt một phiên bản khác hoặc biên dịch lại. Một số distro linux cung cấp cài đặt vim tối thiểu theo mặc định, nhưng nói chung nếu bạn cài đặt vim-gtkhoặc vim-gtk3gói, bạn có thể nhận được các tính năng bổ sung.

Bạn cũng có thể muốn xem xét 'clipboard'tùy chọn được mô tả tại :help cb. Trong trường hợp này, bạn có thể :set clipboard=unnamedhoặc :set clipboard=unnamedplusthực hiện tất cả các thao tác kéo / xóa tự động sao chép vào bảng tạm hệ thống. Điều này có thể là một sự bất tiện trong một số trường hợp bạn đang lưu trữ một cái gì đó khác trong bảng tạm vì nó sẽ ghi đè lên nó.

Để dán, bạn có thể sử dụng "+phoặc "*p(một lần nữa, tùy thuộc vào hệ thống của bạn và / hoặc lựa chọn mong muốn) hoặc bạn có thể ánh xạ những thứ này sang thứ khác. Tôi gõ chúng một cách rõ ràng, nhưng tôi thường thấy mình ở chế độ chèn. Nếu bạn đang ở chế độ chèn, bạn vẫn có thể dán chúng với thụt lề thích hợp bằng cách sử dụng <C-r><C-p>*hoặc <C-r><C-p>+. Xem :help i_CTRL-R_CTRL-P.

Nó cũng đáng đề cập đến pastetùy chọn của vim ( :help paste). Điều này đặt vim vào một "chế độ dán" đặc biệt, vô hiệu hóa một số tùy chọn khác, cho phép bạn dễ dàng dán vào vim bằng trình giả lập thiết bị đầu cuối hoặc phím tắt dán quen thuộc của bộ ghép kênh. Chỉ cần gõ :set pasteđể kích hoạt nó, dán nội dung của bạn và sau đó gõ :set nopasteđể vô hiệu hóa nó. Ngoài ra, bạn có thể sử dụng pastetoggletùy chọn để đặt mã khóa bật chế độ ( :help pastetoggle). Tôi khuyên bạn nên sử dụng các thanh ghi thay vì các tùy chọn này, nhưng nếu chúng vẫn còn quá đáng sợ thì đây có thể là một cách giải quyết thuận tiện trong khi bạn đang hoàn thiện các vim của bạn.

Xem :help clipboardđể biết thêm thông tin chi tiết.


103
Điều này rất nhiều thông tin, nhưng bạn có thể tóm tắt những gì tổ hợp phím cần thực hiện để dán từ bảng tạm hệ thống ... ví dụ như người ta đang làm gì với "*p? Tôi có nhấn Shift- ', rồi Shift-8, rồi p, v.v. không?
T. Brian Jones

10
Có, nhập ba ký tự theo thứ tự. Nhiều lệnh trong vim sử dụng cái được gọi là "chế độ chờ toán tử" trong đó một phím được nhấn và sau đó vim chờ thêm khóa. Lấy ddví dụ. Cái đầu tiên dvào chế độ chờ toán tử, sau đó cái thứ hai dkết thúc lệnh và xóa dòng. dGTuy nhiên, nếu bạn nhập , Glàm cho nó xóa đến cuối tệp thay vì chỉ xóa dòng. Các thanh ghi sử dụng cùng hiệu trưởng này để cho phép các lệnh khác nhau sử dụng chúng.
Conner

4
Than ôi! Nếu tôi chỉ nhìn thấy bài này trước ngày hôm nay! Đây là tất cả mọi thứ tôi muốn biết về sao chép và dán từ bảng tạm hệ thống. "<Cr> <Cp> * hoặc <Cr> <Cp> +" là vàng nguyên chất.
Keith Pinson

54
Một nhấn mạnh: bạn cần cài đặt vim-gtkgói (ít nhất là trong Debian), để có được vim được biên dịch +xterm_clipboard. Mất 40 triệu để tìm hiểu điều này và chỉ vài giây để sudo apt-get install vim-gtk.
Dominykas Mostauskis

3
@DominykasMostauskis vim-gnomecũng hoạt động và đã +xterm_clipboardkích hoạt.
Chev

155

Bạn có thể sao chép vào vim bằng phím tắt của gnome-terminal để dán. Tạo tập tin ở chế độ chèn và sử dụng

Ctrl+ Shift+ v.

Nhớ trước

 :set paste 

để tránh gây rối với vết lõm.


19
điều này gây rối với thụt lề nếu có nhiều dòng như python cho vòng lặp
Moj

11
Sử dụng một chuyển đổi dán cho chế độ chèn. Ví dụ: đặt pastetoggle = <F2> Sau đó, trong chế độ chèn, nhấn <F2> và sau đó chèn mã python của bạn.
Jan Weitz

Phải sao chép bằng Ctrl + Shift + c và dán vào tệp othe r
neel

1
nếu các tab / khoảng trắng, eols, v.v. được hiển thị dưới dạng một ký tự hiển thị (thông qua tùy chọn listchars), thì các ký tự thay thế đó sẽ được sao chép thay vì các ký tự ẩn.
dùng907860

2
Đây phải là câu trả lời được chọn đưa ra câu trả lời ngắn gọn
Aidin

41

Linux

Trên hệ thống Linux của tôi, +*đăng ký ánh xạ tới lựa chọn X11, có thể được dán bằng nút chuột giữa. Khi :set clipboard=unnamed:set clipboard=unnamedplusđược sử dụng, sau đó các thanh ghi ánh xạ vào bảng tạm và có thể được dán bằng CTRL-V.

Các chi tiết cụ thể dường như hơi phụ thuộc vào cấu hình và hệ thống, vì vậy số dặm của bạn chắc chắn sẽ thay đổi. Nó chắc chắn sẽ giúp bạn chỉ đúng hướng, mặc dù.

Xem thêm

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


1
Chỉ *ánh xạ tới thanh ghi chính X11 (thường được dán bằng chuột). +ánh xạ tới thanh ghi clipboard X11 thường được dán bằng phím tắt.
ZyX

@ZyX Không có trên hệ thống của tôi, nhưng số dặm của bạn chắc chắn có thể thay đổi. Tốt nhất là định cấu hình hành vi bạn muốn một cách rõ ràng nếu bạn muốn có trải nghiệm nhất quán trên các nền tảng và phiên bản phần mềm.
Todd A. Jacobs

Tôi tin rằng nó có nghĩa là bạn có trình quản lý clipboard như klipper / glipper, họ có thể đồng bộ hóa hai bộ đệm. Nó không thay đổi thực tế rằng vim sử dụng *cho tiểu học và +cho vào clipboard ghi X11, bạn có thể thấy điều này trong nguồn vim: những giá trị này được thiết lập ở đó và không bao giờ thay đổi, và clip_starclip_plusluôn sử dụng cho *+thanh ghi tương ứng.
ZyX

41

Đối với tôi, cấu hình đó hoạt động để sao chép và dán

" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa

bạn đã dán cái gì?
StarWind0

IMHO này là một giải pháp tốt hơn để đặt clibboard thành không tên - không gây rối với bảng tạm của hệ điều hành với mọi hành động x / dd / y, v.v. Và trên máy Mac, có thể nên thay đổi công cụ sửa đổi C (ctrl) thành D để ánh xạ các kết hợp cmd + c / x / v.
mindex 7/12/2016

34

Đây sẽ là dòng bạn cần trong vimrc của bạn cho mục đích này:

set clipboard+=unnamed  " use the clipboards of vim and win
set paste               " Paste from a windows or from vim
set go+=a               " Visual selection automatically copied to the clipboard

2
Tôi thích giải pháp của bạn. Tôi muốn một lời giải thích tốt hơn.
zhon

thông minh. sử dụng sổ đăng ký luôn khiến tôi ngần ngại và phải suy nghĩ. Điều này tốt hơn nhiều
JonnyRaa

Phiên bản vim của tôi có + clipboard và tùy chọn này không phù hợp với tôi. Tôi đang sử dụng Byobu (sử dụng Tmux dưới mui xe).
GGhe

Tôi đã phải thêm cài đặt clipboard + = unnamedplus cho Fedora
hakunin

29

Tôi tin rằng câu hỏi này xứng đáng có câu trả lời khách quan và đồ họa hơn:

Đang vào chế độ dán

  • ESC
  • : đặt dán
  • nhấn i
  • SHIFT+ Insert(với một văn bản được sao chép trên clipboard của bạn)


Rời khỏi chế độ dán

  • ESC
  • : thiết lập nopaste
  • nhấn i

Bạn đã dán văn bản và bạn có thể nhập lại.


1
Tôi đã làm việc này, nhưng :set nopastekhông làm gì cả. Nó phải làm gì đây? Tại sao tôi cần nó?
Marko Avlijaš

1
Vâng, thực sự, nó làm. Khi bạn thực hiện :set nopaste, bạn đang nói với biên tập viên rằng bạn không muốn dán nữa. Và khi bạn nhấn i, bạn sẽ quay lại chế độ chỉnh sửa :).
ivanleoncz

2
Thành thật với bạn, Marko, tôi không biết.
ivanleoncz

1
SHIFT + Chèn làm cho tôi, cảm ơn!
Melissa Loos

1
Điều này làm việc như một cơ duyên đối với tôi. Mỗi lần tôi trở lại vim, tôi luôn phải trông giống như thế này.
benjaminadk

17

clipboard

Có một thanh ghi đặc biệt để lưu trữ lựa chọn này, đó là thanh ghi "*. Không có gì được đưa vào đây trừ khi thông tin về văn bản được chọn sắp thay đổi (ví dụ như nhấp chuột trái ở đâu đó) hoặc khi ứng dụng khác muốn dán văn bản đã chọn. Sau đó, văn bản được đặt trong thanh ghi "*. Ví dụ: để cắt một dòng và làm cho nó trở thành lựa chọn hiện tại / đưa nó vào CLIPBOARD:

    "*dd

Tương tự, khi bạn muốn dán một lựa chọn từ một ứng dụng khác, ví dụ, bằng cách nhấp vào nút chuột giữa, lựa chọn được đặt trong "* đăng ký trước, sau đó 'đặt' như bất kỳ đăng ký nào khác. Ví dụ: để đặt lựa chọn (nội dung của CLIPBOARD):

    "*p

đăng ký E354

> There are nine types of registers:                      
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~ 
> 8. The black hole register "_
> 9. Last search pattern register "/

Dán từ clipboard

1. Clipboard: Copy
2. Vim insertmode, middle mouse key

Kiểm tra hỗ trợ X11-clipboard trong thiết bị đầu cuối

Khi bạn muốn chạy Vim trong một thiết bị đầu cuối, bạn cần tìm một phiên bản Vim được biên dịch với hỗ trợ clipboard. Kiểm tra hỗ trợ X11-clipboard, từ bảng điều khiển, gõ:

% vim --version

Nếu bạn thấy "+ xterm_clipboard", bạn tốt để đi.

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

Máy chủ X duy trì ba lựa chọn, được gọi là:

CHÍNH HÃNG, THỨ HAI và CLIPBOARD

Lựa chọn CHÍNH được sử dụng thông thường để thực hiện sao chép và dán thông qua nút chuột giữa. Các lựa chọn THỨ HAI và CLIPBOARD ít được sử dụng bởi các chương trình ứng dụng.

http://linux.die.net/man/1/xsel


12

Tôi đã thử các đề xuất ở trên và không ai trong số họ làm việc trong môi trường của tôi. (Windows PuTTY nhân bản qua ssh)

Một số googling bổ sung đã bật lên: /unix/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard

Một trong những ý kiến ​​đề xuất sử dụng SHIFT+INSERTđã thực hiện thủ thuật dán từ bảng tạm của máy tính để bàn của tôi vào bộ đệm của Vim. Ctrl-Cđã làm việc để sao chép vào clipboard của máy tính để bàn từ Vim.


2
Tôi đang làm việc trên vim bên trong công cụ cmder [windows 8.1]. Khi bạn đi vào cài đặt cmder> phím và macro> dán, ở đó tôi có lệnh shift + insert để dán đa dòng và ctrl + v để dán một dòng.
Zubair Alam

1
đối với tôi một nhấp chuột phải đơn giản hoạt động như một bùa mê !! Chỉ cần nhấp chuột phải!
Fr0zenFyr

2
Bởi vì bạn đang sử dụng thiết bị đầu cuối và ssh vim không thể truy cập bảng tạm của hệ thống gốc của bạn thông qua SSL. SHIFT+INSERThoạt động vì đó là tùy chọn dán cho thiết bị đầu cuối của bạn (hoặc trong trường hợp của bạn là PuTTY); tuy nhiên, thụt đầu dòng có thể sẽ sai. Kiểm tra đoạn cuối câu trả lời của tôi về pastetùy chọn để sửa lỗi này.
Conner

1
@jinksPadlock. cảm ơn .. yeah .. Tôi có thể sao chép / dán qua chuột .. đã cố gắng tìm ra cách để làm điều đó bằng "chỉ bàn phím". Sao chép từ windows sang VIM có thể chỉ bằng Bàn phím bằng cách sử dụng Putty, nhưng không phải theo hướng ngược lại. Trong bash cho windows .. không thể làm như vậy trong cả hai hướng ATM. Tổng hợp danh sách các tài nguyên để hướng mọi người đi đúng hướng và cũng cho chúng tôi .. nếu bạn có bất cứ điều gì để thêm..có thể bạn có thể thêm chúng vào đây: stackoverflow.com/questions/45271895/iêu
alpha_989 24/07/17

1
@ alpha_989 sau tốt hơn bao giờ hết;) Tôi không thể thêm vào jinksPadlock 'vì hiện tại tôi không có HĐH Windows dưới ngón tay. SHIFT+INShoạt động từ máy chủ linux đến ssh vim cũng như nhấp chuột thứ ba.
tuk0z

10

Không có + clipboard nên tôi đã đưa ra giải pháp thay thế này bằng xsel:

Thêm vào ~ / .vimrc của bạn:

vnoremap <C-C> :w !xsel -b<CR><CR>


1
Cảm ơn ý tưởng tuyệt vời này! Tôi đã kết thúc bằng cách sử dụng:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

6

Một lưu ý nhanh cho những người có cài đặt vim không hỗ trợ các thanh ghi * và +. Không cần thiết phải tải xuống bản cài đặt vim mới để dán từ bảng ghi tạm. Đây là một phương pháp thay thế:

1) Cài đặt parcellite (trình quản lý clipboard có dung lượng bộ nhớ thấp);

2) Trong tệp .vimrc của bạn, thêm vào như sau:

command Clip r !parcellite -c

3) Khởi động lại vim.

Bây giờ khi bạn nhập: Clip dưới dạng lệnh ex, nội dung của bảng tạm sẽ được dán vào con trỏ. Bạn cũng có thể ánh xạ lệnh mới tới một phím chức năng để có thể thực hiện việc này bằng một lần nhấn phím.


4

Điều này làm việc cho tôi: Ctrl+ Shift+V


3
Câu trả lời của @ neel đã nêu điều này. Điều này chỉ nên là một bình luận, hoặc tốt hơn là một cuộc bỏ phiếu, nếu bạn muốn nói rằng nó cũng làm việc cho bạn.
ericbn

3

Giải pháp đơn giản nhất cho vấn đề này, cũng hoạt động giữa các máy Linux khác nhau sshlà:

  1. Kiểm tra xem vim có hỗ trợ clipboard X-11 không : vim --version | grep clipboard. Nếu nó báo cáo lại -clipboard-xterm_clipboardbạn nên cài đặt vim-gtkhoặc vim-gnome(gvim trên arch linux)

  2. Thêm các dòng sau vào .vimrc:

set clipboard=unnamedplus
set paste
  1. Nếu bạn đăng nhập vào một máy khác thông qua ssh, hãy sử dụng tùy chọn -Y: ssh -Y machine

Bây giờ, sao chép và dán sẽ hoạt động chính xác như mong đợi trên một máy và trên các máy khác nhau bằng cách chỉ sử dụng ycho yank và pdán. NB sửa đổi .vimrctrên tất cả các máy mà bạn muốn sử dụng tính năng này.


Tôi nghĩ rằng, máy chủ X nên có sẵn trong máy chủ để nó hoạt động. Vâng! nó có thể được cài đặt bởi vim-gtk. Tôi nghĩ, xvfb sẽ là một lựa chọn thay thế để chạy máy chủ X.
Ajeeb.KP

3

Tôi gặp vấn đề này trên Macbook Pro giữa năm 2017 chạy vimtrong iTerm2môi trường phát triển chính của mình.

Như các câu trả lời khác đã đề xuất, tôi đã chạy vim --versionvà nhận thấy rằng nó trả về -clipboard, có nghĩa là phiên bản vimđược gửi cùng với máy của tôi chưa được biên dịch với tùy chọn clipboard.

Các homebrewgói cho vimxuất hiện để biên dịch với các clipboardtùy chọn, vì vậy việc sửa chữa đối với tôi là:

  1. Chạy brew install vim
  2. Thêm set clipboard+=unnamedvào ~/.vimrctập tin của tôi
  3. Đóng và mở lại iTerm2

3

Sao chép vào bảng điều khiển hệ điều hành

Chọn văn bản trong chế độ trực quan, nhấn "*y

Dán từ Clipboard hệ điều hành

nhấn "*p


2

Theo dõi câu trả lời của Conner, thật tuyệt, nhưng C-R C-p +C-R C-p *trong chế độ chèn là một chút bất tiện. Ditto "*p"+ptừ chế độ lệnh.

một bậc thầy VIM đã đề xuất những điều sau đây để lập bản đồ C-v tới những gì C-r C-p +.

Bạn chỉ có thể có :inoremap <C-v> <C-o>"+pchế độ chèn

nếu bạn thực sự muốn ghi đè chế độ hình ảnh theo chiều ngang (không được anh ấy khuyên dùng vì chế độ trực quan là tốt) bạn có thể có map <C-v> "+p


2

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 --with-lua --with-override-system-vim

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

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

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.


2

Nếu bạn đang sử dụng chuột trước tiên hãy làm

 :set paste 

Sau đó right click mousevà nội dung trong bộ đệm sẽ được dán


1

Trên đầu cài đặt :set clipboard=unnamed, bạn nên sử dụng mvim -vcái mà bạn có thể sử dụng brew install macvimnếu bạn đang sử dụng vim trên Terminal.app trên Mac OS X 10.9. Vim mặc định không hỗ trợ tùy chọn clipboard.


1

Cũng có thể đáng nói, trên OSX sử dụng Vim, bạn có thể chọn văn bản bằng chuột, Cmd-C để sao chép vào bảng tạm hệ thống OSX và văn bản được sao chép sẽ có sẵn trong bảng tạm bên ngoài Vim.

Nói cách khác, OSX đối xử với nó giống như một cửa sổ thông thường và đây là lúc nút "Lệnh" sai lầm của Apple có ích.

B-30


1
Điều này cũng đúng với mọi trình giả lập thiết bị đầu cuối nửa phong nha trên bất kỳ HĐH nào khác. Apple không có lợi thế ở đây.
gạch dưới

1

Dựa trên câu trả lời @ lis2, tôi sử dụng một cấu hình đơn giản hơn sẽ không buộc chế độ Chèn ở cuối:

" Copy and paste
if has('clipboard') && !has('gui_running')
  vnoremap <C-c> "+y
  vnoremap <C-x> "+d
  vnoremap <C-v> "+p
  inoremap <C-v> <C-r><C-o>+
endif

Lưu ý rằng tất cả các ánh xạ Vim mặc định này:

  • v_CTRL-C: dừng chế độ trực quan
  • v_CTRL-X: trừ [đếm] từ số
  • v_CTRL-V: chế độ hình khối
  • i_CTRL-V: chèn chữ số tiếp theo theo nghĩa đen, cũng được ánh xạ tới i_CTRL-Q

Là một thay thế, người ta có thể sử dụng các phím cảm hứng trong "yank", "delete" và "đặt" Vim động từ: <C-y>, <C-d><C-p>tương ứng. Chúng chỉ ghi đè lên một ánh xạ mặc định:

  • i_CTRL-P: từ khóa tìm kiếm ngược để hoàn thành

1

Các giải pháp khác là tốt nếu bạn muốn thay đổi vimrc của mình, v.v ... Tuy nhiên tôi muốn một cách đơn giản để sao chép từ vim vào bàn phím hệ thống của tôi. Đây là những gì tôi đã đưa ra.

  • Chọn văn bản bạn muốn sao chép với chế độ trực quan v
  • Nhấn :(nó sẽ tự động mở rộng để hiển thị :'<,'>)
  • Nhập y * hoặc y + (tùy thuộc vào hệ thống của bạn) để kéo văn bản đã chọn vào bảng tạm hệ thống


1

vim 8 nhấp chuột phải cho phép chế độ trực quan theo mặc định. Điều này ngăn chặn việc sao chép và dán "bình thường" (gọi đó là "lỗi theo thiết kế" https://github.com/vim/vim/issues/1326 ). Khắc phục bằng cách thực hiện:

echo "set mouse-=a" >> ~/.vimrc .

Thoát và khởi động lại vim.


1

Với Vim 8+ trên Linux hoặc Mac, giờ đây bạn có thể chỉ cần sử dụng dán gốc của HĐH ( ctrl+shift+Vtrên Linux, cmd+Vtrên Mac). Không nhấn icho Chế độ chèn.

Nó sẽ dán nội dung của bảng tạm hệ điều hành của bạn, giữ nguyên các khoảng trắng và tab mà không cần thêm tự động. Nó tương đương với cái cũ :set paste, i, ctrl+shift+V, esc, :set nopastephương pháp.

Bạn thậm chí không cần các tính năng +clipboardhoặc +xterm_clipboardvim được cài đặt nữa. Tính năng này được gọi là "dán khung". Để biết thêm chi tiết, hãy xem Tắt tự động thụt lề khi dán văn bản vào vim


0

Khi tôi sử dụng vim Debian không được tích hợp với Gnome (vim --version | grep clip # hiển thị không hỗ trợ bảng tạm), tôi có thể sao chép vào bảng tạm sau khi giữ phím Shift và chọn văn bản bằng chuột, giống như với bất kỳ chương trình nguyền rủa khác. Như tôi đã tìm ra từ một nhận xét của @Conner, đó là thiết bị đầu cuối (gnome-terminal trong trường hợp của tôi) sẽ tắt báo cáo sự kiện chuột của nó khi nó cảm nhận được phím Shift của tôi. Tôi đoán các chương trình dựa trên lời nguyền có thể nhận các sự kiện chuột sau khi gửi một chuỗi Escape nhất định đến thiết bị đầu cuối.


1
Đây là sử dụng thiết bị đầu cuối của bạn, không phải vim.
Conner

0

Nếu bạn đang ở trên windows và bạn muốn dán nội dung của bảng tạm hệ thống bằng cách sử dụng plệnh này.

:set clipboard = unnamed

Điều này đã giải quyết vấn đề của tôi.


0

Có hai cách đơn giản để làm điều này. Đặt tệp của bạn ở chế độ chèn và 1) nhấn nút giữa (bánh xe cuộn) trong chuột hoặc 2) Ctrl + Shift + V


0

Đố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*ysao chép.

"Space+phoặc " Space*pđể dán.


0

Tôi đã sử dụng câu trả lời của NM Pennypacker và cài đặt vim qua homebrew cho MacBook Pro đầu năm 2011:

brew install vim

Bây giờ tôi cũng có thể sử dụng đăng ký "* để sao chép và dán văn bản trong vim. Tôi thậm chí không phải thay đổi thứ gì đó trong tệp ~ / .vimrc của mình hoặc $ PATH. vim -> ../Cellar/vim/8.1.2350/bin/vim.

Cách khác, hoạt động trước đây, là sao chép một số dòng văn bản trong vim bằng cách đánh dấu nó bằng chuột và sử dụng bản sao và dán (cmd + c, cmd + v) trên máy mac. Tùy chọn này chỉ hoạt động nếu văn bản bạn muốn sao chép và dán có kích thước nhỏ hơn kích thước cửa sổ của vim. Nếu bạn muốn sao chép tất cả văn bản trong vim bằng cách đánh dấu toàn bộ cửa sổ hoặc sử dụng cmd + a, điều này sẽ sao chép các phần khác của bảng điều khiển, được viết trước khi bắt đầu vim, điều này rất khó chịu.

Vì vậy, tôi rất vui khi tìm thấy phương thức mới bằng cách sử dụng thanh ghi clippboard.

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.