Có cách nào để sao chép tất cả các dòng từ tệp đang mở sang clipboard trong trình chỉnh sửa VI. Tôi đã thử yGnhưng nó không sử dụng clipboard để lưu trữ những dòng đó.
Vì vậy, nó có thể?
Có cách nào để sao chép tất cả các dòng từ tệp đang mở sang clipboard trong trình chỉnh sửa VI. Tôi đã thử yGnhưng nó không sử dụng clipboard để lưu trữ những dòng đó.
Vì vậy, nó có thể?
Câu trả lời:
Bạn nên kéo văn bản đến *
hoặc +
đăng ký :
gg"*yG
Giải trình:
gg
để đưa con trỏ đến ký tự đầu tiên của tệp"*y
để bắt đầu một lệnh yank đến thanh ghi *
từ dòng đầu tiên, cho đến khi ...G
đi đến cuối tập tin"
.
:version
trong vim và tìm +xterm_clipboard
cờ. Nếu nó đi trước một dấu trừ, thì bạn sẽ không có chức năng này. Nếu đây là trường hợp, bạn có thể muốn tự biên dịch vim hoặc chạy gvim thường bật tính năng này.
Sử dụng:
:%y+
để kéo tất cả các dòng.
Giải trình:
%
để tham khảo lệnh tiếp theo để làm việc trên tất cả các dòngy
để kéo những dòng đó+
để sao chép vào clipboard hệ thốngNB : Trong Windows, +
và *
tương đương xem câu trả lời này .
:help
để đảm bảo bạn thực sự trong vim.
set clipboard=unnamed
, nhưng sau đó điều này làm việc tuyệt vời!
E850: Invalid register name
:(
trên máy Mac
sao chép phần đã chọn: chọn trực quan văn bản (loại v
hoặc V
ở chế độ bình thường) và loại:w !pbcopy
sao chép toàn bộ tập tin :%w !pbcopy
quá khứ từ clipboard :r !pbpaste
pbcopy
là một tiện ích Mac. Trên Linux, xsel
có thể hoạt động thay thế hoặc clip
trên Windows.
:%w !pbcopy
vẫn hoạt động nếu tệp dài hơn chiều cao của thiết bị đầu cuối.
Bảng tạm là bộ đệm +. Để sao chép vào clipboard, làm "+yvà [chuyển động].
Vì vậy, gg"+yGsẽ sao chép toàn bộ tập tin.
Tương tự, để dán từ clipboard, "+p
Một cách dễ dàng khác để sao chép toàn bộ tệp nếu bạn gặp sự cố khi sử dụng VI, chỉ bằng cách nhập "tên tệp mèo". Nó sẽ lặp lại tập tin vào màn hình và sau đó bạn có thể chỉ cần cuộn lên xuống và sao chép / dán.
:!cat %
. Và để sao chép nội dung của tệp theo chương trình vào bảng tạm trên Mac OS::!cat % | pbcopy
Đây là những gì tôi làm để kéo toàn bộ tập tin:
ggVGy
clipboard
bộ sao chép văn bản được kéo vào +
.
Bạn có thể sử dụng lệnh "cat" để mở tệp và sử dụng chuột để sao chép
reset
thiết bị đầu cuối trước, sau đó chọn tất cả và sao chép. Điều này hoạt động thông qua ssh
phiên.
(để trả lời @rshdev và để tránh phải biên dịch lại vim với + xterm_clipboard mỗi @nelstrom trong các nhận xét về OP)
có một chương trình gọi là xclip hoạt động như putclip trên Ubuntu 11:
:%!xclip -sel clip
u
Nó không được cài đặt theo mặc định. để cài đặt, sử dụng:
sudo apt-get install xclip
Trên Ubuntu 12
bạn có thể thử cài đặt vim-gnome
gói:
sudo apt-get install vim-gnome
Tôi đã thử nó, vì vim --version
đã nói với tôi rằng nó sẽ tắt cờ xterm_clipboard (được biểu thị bằng - ), cần thiết để sử dụng chức năng clipboard.
-> cài đặt gói vim-gnome trên Ubuntu 12 cũng đã cài đặt phiên bản vim dựa trên bảng điều khiển, có bật tùy chọn này (được biểu thị bằng dấu + trước cờ xterm_clipboard)
Trên Arch Linux
bạn có thể cài đặt vim-clipboard
cho cùng một lý do.
Nếu bạn chạy neovim thì bạn nên cài đặt xclip
(như được giải thích bởi help clipboard-tool
)
Nếu bạn đang sử dụng Vim ở chế độ trực quan, các phím cắt và dán tiêu chuẩn cũng được áp dụng, ít nhất là với Windows.
Trong thiết bị đầu cuối Ubuntu (Gnome) ít nhất, bản sao tiêu chuẩn cũng hoạt động ( CTRLSHIFTCmặc dù dường như không có phím tắt tiêu chuẩn nào cho select all
(ngoài ALTEsau đó A).
Tôi đã thử một vài lệnh mà mọi người đã đề cập ở trên. Không có làm việc. Sau đó, tôi đã nắm giữ đơn giản nhất của tất cả chúng.
Bước 1: vi <filename>
Bước 2: Nhấp chuột phải vào thanh tiêu đề của cửa sổ Putty
Bước 3: Chọn "Xóa cuộn lại" (để tránh sao chép phần còn lại của phiên SSH)
Bước 4: Nhấp chuột phải lần nữa và chọn "Sao chép tất cả vào khay nhớ tạm".
Window > Settings > lines of scrollback
lên 40000 (cũng có sẵn bằng cách nhấp chuột phải vào thanh tiêu đề). Nó cũng giúp sử dụng cat
thay vì vi vì nó cuộn qua tất cả các văn bản.
:set go=a
ggVG
Xem :help go-a
:
'a' Autoselect: If present, then whenever VISUAL mode is started,
or the Visual area extended, Vim tries to become the owner of
the windowing system's global selection. This means that the
Visually highlighted text is available for pasting into other
applications as well as into Vim itself. When the Visual mode
ends, possibly due to an operation on the text, or when an
application wants to paste the selection, the highlighted text
is automatically yanked into the "* selection register.
Thus the selection is still available for pasting into other
applications after the VISUAL mode has ended.
If not present, then Vim won't become the owner of the
windowing system's global selection unless explicitly told to
by a yank or delete operation for the "* register.
The same applies to the modeless selection.
Chà, tất cả các cách tiếp cận này đều thú vị, tuy nhiên vì lập trình viên lười biếng tôi sử dụng tất cả các dòng bằng cách sử dụng kết hợp số + y
ví dụ: bạn có tệp mã nguồn với tổng số 78 dòng, bạn có thể làm như dưới đây:
gg
để lấy con trỏ ở dòng đầu tiên y
-> nó đặt 78 dòng bên dưới con trỏ và dòng hiện tại của bạn Không có khái niệm "clipboard" trong vi của Bill Joy nên tôi không nghĩ có một cách tích hợp để làm điều đó.
Tính năng sao chép tự động mọi thứ được tô sáng vào bảng tạm của gVim là dễ nhất hoặc sử dụng chương trình bên ngoài qua :!
Đối với vim của Cygwin tôi sử dụng
:%!putclip
u
Có lẽ Ubuntu có ứng dụng CLI như putclip ??
Nếu ngón tay của bạn mặc định CTRL-A CTRL-C
, sau đó thử ánh xạ từ $VIMRUNTIME/mswin.vim
.
" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG
Tôi có chúng ánh xạ tới <Leader><C-a>
và <Leader><C-c>
.
Đừng sao chép toàn bộ tập tin bên trong vim hoặc các tab của nó
y G
sau đó di chuyển đến một tab và dán bằng
p
và để cắt toàn bộ tập tin sử dụng
d G
Tôi biết mười năm về việc này nên được giải quyết nhưng hai câu trả lời đầu tiên không hiệu quả với tôi nên tôi tiếp tục đào. Trên Redhat (máy chủ từ xa) - Windows 10 (máy cục bộ), nếu bạn không thể chọn toàn bộ bằng chuột, bạn sẽ bị kẹt vì các bản sao thông thường không hoạt động giữa bảng điều khiển từ xa và máy cục bộ.
Vì vậy, để sao chép trên Linux từ xa và dán vào Windows cục bộ, hãy chỉ định bộ đệm chính với *và thực hiện một cú đúp đẹp
Sử dụng gg" * yy.
Tôi đã tạo ra một chức năng để thực hiện hành động này, đặt nó trên của bạn ~/.vimrc
.
fun! CopyBufferToClipboard()
%y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()
OBS: Nếu bạn đang sử dụng neovim, bạn cũng cần một số trình quản lý clipboard như xclip. để biết thêm thông tin loại trong neovim:h checkhealth
Một điều cũng quan trọng cần đề cập là không phải lúc nào đơn giản y
cũng sẽ sao chép vào bảng tạm, để làm cho mọi nguồn cấp dữ liệu sao chép +
là "Đăng ký Clipboard" hãy thử đặt : :set clipboard=unnamed,unnamedplus
. Để biết thông tin mor, xem::h unnamed
.
Ở đây thêm thông tin về vim wikia.
Bạn có thể sử dụng shortcur, như thế này:
noremap <F6> :%y+<CR>
Điều đó có nghĩa là, khi bạn đẩy F6 ở chế độ Normald, nó sẽ sao chép toàn bộ tệp và thêm nó vào bảng tạm. Hoặc bạn chỉ có thể gõ ở chế độ bình thường :%y+
và sau đó đẩy Enter
.
Nhấp vào nút chuột trái, kéo qua phần bạn muốn sao chép và phát hành. Mã sẽ tự động được sao chép vào clipboard.
vi
cách).
Tôi không thể sao chép các tập tin bằng cách sử dụng các câu trả lời ở trên nhưng tôi đã đặt ra và tôi đã tìm thấy một cách giải quyết trên Quora.
Lưu ý: nó sao chép tất cả các ký tự được in của phiên đó vào tệp nhật ký, vì vậy cuối cùng nó sẽ trở nên lớn. Trong trường hợp đó, hãy xóa tệp nhật ký và gửi tệp mục tiêu để bạn có được nội dung của tệp cụ thể đó được sao chép trên máy của bạn.