Câu hỏi Làm cách nào để chọn tất cả văn bản trong Vi / Vim?


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

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


149
2017-12-30 17:05


gốc




Các câu trả lời:


Cách đơn giản và nhanh nhất là sử dụng: :  %  y  + và sau đó chuyển sang Google Documents (hoặc ở bất kỳ đâu) 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để yank những dòng
  • +để sao chép vào clipboard hệ thống

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


128
2018-03-26 21:30



@Tuxmentat bạn có thể giải thích những gì mỗi phím trong :%y+ - Jas
Câu trả lời này sẽ tốt hơn nếu nó giải thích những gì mỗi phím làm cho cả hai trình tự. - AsksAnyway
Đ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ế độ cũ" (tôi nghĩ). Nhưng dù sao, đó là một mệnh lệnh. '%' là một đặc biệt trình chỉ định phạm vi dòng lệnh chỉ định toàn bộ tệp. 'y' yanks mọi thứ và '+' chỉ định đăng ký clipboard. : help <command> đã giúp tôi tìm ra điều này. - Hawkeye Parker
Tôi phải làm gì đó sai. tôi gõ :%y+, va tôi lây E488: Trailing characters - johny why
Tôi nhận được "E850: Tên đăng ký không hợp lệ". Phương pháp thứ hai làm việc tốt cho sao chép, nhưng không nhận được vào clipboard hệ thống trên Ubuntu 16.04 (đối với tôi, ít nhất --- tôi có một .vimrc có thể ảnh hưởng đến mọi thứ). - EntangledLoops


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

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

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

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.


68
2018-05-29 15:09



Chính xác những gì tôi đang tìm kiếm, và nó là tốt đẹp để 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
Cá nhân tôi sử dụng ggVG, nhưng gg0vG$ có thể thích hợp hơn vì nó sao chép chặt chẽ hơn thao tác Ctrl + A 'bình thường'. - Sheharyar


Bạn có thể dùng cat file và 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 bạn.

Đố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, điều này sẽ hoạt động trên cả Linux và Windows - tôi đã thử trên Mac nhưng nó không hoạt động.


35
2017-12-30 17:21



Để dán vào trình duyệt Web cat file là con đường để đi. Các shift v phương pháp chỉ sao chép vào bộ đệm nội bộ của Vi. - Aleksandr Levchuk
không phải nếu bạn sử dụng clipboard hệ thống sử dụng * registry - nhưng điều này chỉ hoạt động trên X và tôi nghe trên cửa sổ - vì vậy nếu bạn ssh bạn cần -X - để kiểm tra xem vim có hỗ trợ cho điều này vào vim -: set clipboard + = chưa đặt tên
Có cách nào khác để làm điều này mà không cần tạo một tệp mới.if 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ã sao lưu trên máy cục bộ để chúng tôi có thể hoàn nguyên trở lại. - Nagama Inamdar
1 cho mèo và chọn putty. Tất nhiên, sẽ không làm việc cho các tập tin lớn và không phải là phương pháp thân thiện nhất. Tuy nhiên, để sao chép các tập tin kịch bản nhỏ mà đi bên ngoài màn hình viewport là đủ tốt. - Arnis Juraga


SỬ DỤNG ggVG. nhập "gg" để đi đầu bài kiểm tra Sau đó gõ VG.


13
2017-12-29 12:47





gg"+yG

hoặc là

gg"*yG

tùy thuộc vào việc + hoặc * là khay nhớ tạm thời của hệ thống. (Trên nhiều unix, + là bộ đệm chọn chuột cho chuột giữa, và * là khay nhớ tạm của hệ thống).


6
2017-12-30 19:19



Tôi nghĩ rằng đó là cách khác xung quanh: "* 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


Tôi đang sử dụng Vim 7,4 trong môi trường CentOS-7. Mà làm việc cho tôi để lựa chọn tất cả các văn bản là

:%y

Sau đó chỉ p trong 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 cat.

cat copyfile > pastefile

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


4
2017-07-17 04:07





Đố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 tệp.txt hiện đã có trong khay nhớ tạm để dán vào một ứng dụng khác (ví dụ: trình duyệt).

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

pbpaste > file.txt

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


3
2018-01-08 19:05





Nếu bạn đang sử dụng một máy tính để bàn Linux, bạn có thể tải nó vào clipboard bằng cách sử dụng xclip hoặc xsel. Đối với thứ gì đó có 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
2017-12-30 17:28





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

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

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

^+ CHÈN sao chép

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


1
2017-07-12 14:20





Không sử dụng vi, bạn có thể tải văn bản lên tài liệu google bằng API và cURL của chúng.


0
2017-12-30 17:34



điều ngược lại với những gì OP muốn -.- - Rápli András