Làm cách nào để tôi chọn tất cả văn bản trong Vi / Vim?


193

Sử dụng công cụ VI để chỉnh sửa tập tin cấu hình.

Làm cách nào tôi có thể chọn tất cả văn bản trong một tệp (khoảng 1000 dòng), sao chép nó, sau đó dán vào Google Docs?

Câu trả lời:


159

Cách đơn giản nhất và nhanh nhất là sử dụng: : % y +và sau đó truy cập Google Docs (hoặc bất cứ nơi nào) và dán. Giải trình:

  • % để tham khảo lệnh tiếp theo để làm việc trên tất cả các dòng
  • y  để kéo những dòng đó
  • +  để sao chép vào clipboard hệ thống

Một cách khác là g g " + y Gnhưng bạn có thể sẽ thừa nhận rằng những điều trên là nhanh hơn và dễ dàng hơn.


10
@Tuxmentat bạn có thể vui lòng giải thích từng phím làm gì:%y+
Jas

10
Câu trả lời này sẽ tốt hơn nếu nó giải thích mỗi phím làm gì cho cả hai chuỗi.
AsksAnyway

6
Dự đoán tốt nhất của tôi: ':' có nghĩa là chúng tôi đang sử dụng lệnh "chế độ ex" (tôi nghĩ). Nhưng dù sao, đó là một mệnh lệnh. '%' là một công cụ xác định phạm vi dòng lệnh đặc biệt chỉ định toàn bộ tệp. 'y' sắp xếp mọi thứ và '+' chỉ định thanh ghi clipboard . : help <lệnh> đã giúp tôi tìm ra điều này.
Hawkeye Parker

11
Tôi phải làm gì đó sai. tôi gõ :%y+, và tôi nhận đượcE488: Trailing characters
johny tại sao

25
Tôi nhận được "E850: Tên đăng ký không hợp lệ". Phương pháp thứ hai hoạt động tốt để sao chép, nhưng không vào bảng tạm hệ thống trên Ubuntu 16.04 (đối với tôi, ít nhất là --- Tôi có một .vimrc có thể ảnh hưởng đến mọi thứ).
EntangledLoops

95

Nhiều câu trả lời cũng đưa ra lựa chọn mà tôi không tìm kiếm.

Tôi đang sử dụng ggVGcho mục đích này (cần được chạy ở chế độ bình thường). Lệnh này chỉ chọn toàn bộ văn bản bên trong tài liệu.

Tôi thậm chí đã ánh xạ lại Ctrl+Acho mục đích này, vì tôi thực sự không cần tăng số nguyên bằng phím tắt ( Ctrl+Abản đồ mặc định ).

Chỉ cần thêm điều này vào .vimrc:

map <C-a> <esc>ggVG<CR>

Nó có <esc>đầu tiên, để đảm bảo người dùng ở chế độ bình thường.


2
Chính xác những gì tôi đang tìm kiếm và thật tuyệt khi thấy rằng Ctrl + A không bị chiếm giữ trong vim theo mặc định. Hy vọng không có tác dụng phụ.
Nikos Alexandris

2
Cá nhân tôi sử dụng ggVG, nhưng gg0vG$có thể phù hợp hơn vì nó sao chép chặt chẽ hơn hoạt động 'bình thường' Ctrl + A.
Sheharyar

39

Bạn có thể sử dụng cat filevà sau đó chọn đầu ra và sao chép và dán nếu bạn cần dán nó vào trình duyệt của mình.

Đối với vi, đây là cách bạn có thể chọn tất cả văn bản và viết nó vào một tệp mới:

shift v  -- visual mode
shift g -- jump to eof
"*y -- yank select text
:e my_new_file -- create a new file
"*p -- paste into a new file

Về lý thuyết, nó sẽ hoạt động trên cả Linux và Windows - Tôi đã thử nó trên máy Mac nhưng nó không hoạt động.


1
Để dán vào trình duyệt Web cat filelà cách tốt nhất. Các shift vphương pháp duy nhất bản sao để đệm nội Vi.
Alexanderr Levchuk

không phải nếu bạn sử dụng bảng tạm hệ thống sử dụng * registry - nhưng điều này chỉ hoạt động trên X và tôi nghe thấy trên windows - vì vậy nếu bạn ssh bạn cần -X - để kiểm tra xem vim có hỗ trợ cho việc này vào vim không:: đặt clipboard + = chưa được đặt tên

Có cách nào khác để thực hiện việc này mà không tạo tệp mới không. Nếu chúng tôi đang chỉnh sửa trực tiếp trên máy chủ, chúng tôi cần giữ mã dự phòng trên máy cục bộ để có thể hoàn nguyên lại.
NJInamdar

+1 cho mèo và chọn trong putty. Tất nhiên, sẽ không hoạt động đối với các tệp lớn và không phải là phương pháp thân thiện với người dùng nhất. Nhưng để sao chép các tập lệnh nhỏ đi ra ngoài chế độ xem màn hình là đủ tốt.
Arnis Juraga


8

Tôi đang sử dụng Vim 7.4 trong môi trường CentOS-7. Điều này làm việc cho tôi để chọn tất cả các văn bản là

:%y

Sau đó, chỉ ptrong tập tin tiếp theo, nơi tôi muốn có một bản sao đầy đủ.

Hoặc là

Bạn có thể sử dụng lệnh mèo.

cat copyfile > pastefile

Repo git này cũng có một số lệnh hữu ích khác.


7

gg"+yG

hoặc là

gg"*yG

tùy thuộc vào việc + hay * là bảng tạm hệ thống. (Trên nhiều unixes, + là bộ đệm chọn chuột để nhấp chuột giữa và * là bảng tạm hệ thống).


1
Tôi nghĩ đó là cách khác: "* là lựa chọn và" + là clipboard. vimdoc.sourceforge.net/htmldoc/gui_x11.html#x11-selection
Mikel

Bạn đúng. Tôi cũng biết điều đó, nhưng đã gõ sai. ☹
frabjous

3

Đối với máy Mac, hãy sử dụng pbcopy (bản sao bảng):

cat file.txt | pbcopy

Nội dung của file.txt hiện có trên bảng tạm để dán vào ứng dụng khác (ví dụ: trình duyệt).

Bạn cũng có thể dán nội dung của bảng tạm vào tệp bằng pbpaste:

pbpaste > file.txt

Mặc dù điều này không liên quan đến vi cụ thể nhưng nó đạt được cùng một mục tiêu trên máy Mac.


1

Nếu bạn đang sử dụng máy tính để bàn linux, bạn có thể tải nó vào clipboard bằng xclip hoặc xsel. Đối với một cái gì đó kích thước bạn có thể chỉ muốn sử dụng tính năng tải lên trong tài liệu google.


1

Một cách khác sẽ là:

Bạn nhấn vphím trên bàn phím và chuyển VIM sang VISUAL

Sau đó chọn tất cả văn bản bằng cách cuộn xuống

^+ INSERTđể sao chép

SHIFT+ INSERTđể dán văn bản bất cứ nơi nào bạn muốn trên Google Docs.




0

Sử dụng lệnh sau.

cat <your file name>

Nó sẽ lặp lại nội dung của tập tin. Bây giờ chọn, cuộn, sao chép, dán.
Trò chơi kết thúc

Ví dụ.:

cat bobis.txt
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.