Tôi đã thử sử dụng Ctrl+ Vđể dán nội dung trong tài liệu soạn thảo vi, nhưng Ctrl+ Vkhông được hiểu là dán.
Tôi đã thử sử dụng Ctrl+ Vđể dán nội dung trong tài liệu soạn thảo vi, nhưng Ctrl+ Vkhông được hiểu là dán.
Câu trả lời:
Trước tiên, hãy đảm bảo bạn đang ở chế độ chỉnh sửa (nhấn i). Sau đó, bạn có thể dán bằng Ctrl+ Shift+ V, nếu bạn đang ở trong trình giả lập thiết bị đầu cuối như gnome-terminal
(hoặc chọn "Dán" từ menu chuột phải).
Bạn cũng có thể nhập :set paste
vim trước khi dán để tắt thụt lề tự động, vv Sau đó, :set nopaste
sau khi bạn đã dán nội dung.
Đồng thời kiểm tra câu hỏi này trên stackoverflow.com để biết thêm thông tin.
Nếu bạn muốn sao chép / dán các dòng vào vim
(trái ngược với dán nội dung clipboard), bạn sẽ muốn kiểm tra lệnh yank . Đây là một bảng cheat có thể giúp đỡ.
I
trường hợp nhạy cảm. Chữ thường i
là cách thông thường để vào chế độ chèn. Capital I
đưa con trỏ đến đầu dòng và sau đó đưa bạn vào chế độ chèn.
Vi (và Vim) hoạt động rất khác so với trình soạn thảo văn bản thông thường như Gedit. Nó cũng có một đường cong học tập khá dốc. Nếu bạn muốn tìm hiểu một số lệnh cơ bản, hãy bắt đầu với hướng dẫn tương tác này .
Tuy nhiên, để trả lời câu hỏi của bạn. Nội dung của bảng tạm hệ thống có thể được truy cập thông qua thanh ghi cộng. Vì vậy, để dán một cái gì đó từ bảng tạm hệ thống, bạn có thể, từ chế độ Bình thường, nhấn: "+p(Không phải cùng lúc, nhưng lần lượt từng cái một).
vi
không sử dụngvim
set :paste
).
Nếu bạn muốn sao chép nội dung dán trong cùng một tệp , hãy sử dụng yank
và paste
.
Nếu bạn muốn sao chép nội dung dán trên các thiết bị đầu cuối , hãy mở tệp đầu tiên, kéo dài văn bản bạn muốn, sau đó mở tệp thứ hai trong vim (ví dụ :tabnew /path/to/second/file
) và nhấn p
để dán.
Nếu bạn muốn sao chép nội dung dán từ vim sang chương trình bên ngoài , bạn cần truy cập vào bảng tạm hệ thống. Tôi giả sử bạn sử dụng Ubuntu. Phiên bản GUI của vim luôn có hỗ trợ clipboard, tuy nhiên, nếu bạn muốn sử dụng Vim từ thiết bị đầu cuối, bạn sẽ phải kiểm tra hỗ trợ X11-clipboard.
Từ bàn điều khiển, gõ:
$ vim --version | grep xterm
Nếu bạn tìm thấy -xterm_clipboard , bạn có hai tùy chọn:
1) Tự biên dịch vim, với cờ xterm_clipboard trên
2) Gỡ cài đặt vim, cài đặt gvim (vim-gtk hoặc vim-gnome) thay thế. Bạn có thể dính vào vim không gui bằng cách gọi vim từ thiết bị đầu cuối, giống như cách bạn đã làm trước đây. Lần này khi bạn kiểm tra, bạn nên tìm + xterm_clipborad .
Bây giờ, khi bạn lấy một số văn bản trong thanh ghi + bên trong trình soạn thảo vim của bạn (ví dụ: "+ yy), nó cũng sẽ được sao chép vào bảng tạm hệ thống mà bạn có thể truy xuất từ chương trình bên ngoài như trình soạn thảo gedit, bằng cách sử dụng Ctrl+ V.
Nếu bạn muốn sao chép nội dung dán từ chương trình bên ngoài vào vim , trước tiên hãy sao chép văn bản của bạn vào bảng tạm hệ thống qua Ctrl+ C, sau đó ở chế độ chèn trình chỉnh sửa vim , nhấp vào nút giữa chuột (thường là bánh xe) hoặc nhấn Ctrl+ Shift+ Vđể dán.
Đây là 4 điều kiện sao chép & dán cơ bản liên quan đến vim. Tôi hi vọng cái này giúp được.
vim-gtk
có xterm_clipboard
hỗ trợ và trên Fedora xvim
có nó.
Tôi luôn sử dụng Shift+ Insertkhi tôi muốn dán văn bản vào thiết bị đầu cuối, hoạt động trong tất cả các chương trình thiết bị đầu cuối.
(Đó cũng là lý do tại sao tôi không bao giờ nhận được máy tính xách tay mà bạn không thể nhấn Insertmà không nhấn phím phụ)
Vi
/ Vim
! = thiết bị đầu cuối;)
Ctrl+A
, Ctrl+C
cũng?
Khi bạn nhập vi, nhấn i
để vào chế độ chèn, nhấp chuột phải vào thiết bị đầu cuối, nhấp vào dán.
i
. Trường hợp trên I
làm gì?
i
. Chữ hoa I
di chuyển con trỏ đến đầu dòng trước khi vào chế độ chèn, không cần thiết ở đây.
Hướng dẫn chi tiết để sao chép / dán các dòng văn bản trong vi bằng cách sử dụng yank
vàput
(sử dụng như sau trong chế độ lệnh của vi)
Sao chép (YANK)
Để sao chép một dòng trong vi:
yy
hoặc gõY
Để sao chép 2 dòng trong vi:
2yy
hoặc gõ2Y
(tương tự, bất kỳ số lượng dòng có thể được sao chép)
Để sao chép tất cả các dòng từ vị trí hiện tại đến cuối tệp:
yG
Để sao chép tất cả văn bản từ vị trí hiện tại đến cuối từ hiện tại:
yw
Để sao chép tất cả văn bản từ vị trí hiện tại đến cuối dòng:
y$
Dán (PUT)
Để dán văn bản vào bảng tạm - sau vị trí của con trỏ:
p
Để dán văn bản vào bảng tạm - trước vị trí của con trỏ:
P
Tôi gặp sự cố vì cài đặt Vim của tôi không hỗ trợ bảng tạm :
vim --version | grep clip
-clipboard +insert_expand +path_extra +user_commands
+emacs_tags -mouseshape +startuptime -xterm_clipboard
Tôi đã cài đặt vim-gnome (hỗ trợ bảng tạm) và sau đó kiểm tra lại:
vim --version | grep clipboard
+clipboard +insert_expand +path_extra +user_commands
+emacs_tags +mouseshape +startuptime +xterm_clipboard
Bây giờ tôi có thể sao chép và dán bằng cách sử dụng "+ y và" + p tương ứng.
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+V
trên Linux, cmd+V
trên Mac). Không nhấn i
cho 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à các 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 nopaste
phương pháp.
Bạn thậm chí không cần các tính năng +clipboard
hoặc +xterm_clipboard
vim đượ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 https://stackoverflow.com/questions/2514445/turn-off-auto-indent-when-pasting-text-into-vim/56781763#56781763
Tôi chỉ muốn lưu ý rằng sử dụng Vim qua Git Bash trên Windows, bạn chỉ có thể sử dụng p
hoặc nhấp chuột giữa mà không ở chế độ chèn. Sử dụng Vim thông qua PuTTY , bạn có thể chỉ cần nhấp chuột phải. Và làm nổi bật không sao chép.
Tôi đã lưu ý điều này bởi vì tôi đến đây không thấy rằng đây là SE cho Ubuntu.
Các lệnh hữu ích khác:
Bạn có thể sử dụng Ctrl+ Shift+ Vđể dán trong phiên bản đầu cuối vim, nhưng đối với phiên bản GUI vim như Neovim-Qt
, dán văn bản từ bảng tạm hệ thống với Ctrl+ Shift+ Vđơn giản là không hoạt động. Bạn phải truy cập vào bảng tạm "+
hoặc "*
trong trình soạn thảo vim.
Thêm keybinding mới vào .vimrc
sẽ đơn giản là các lệnh sao chép / dán:
" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
vimtutor
Nó sẽ giúp bạn tăng tốc đến nơi có thể sử dụng cho bạn trong khoảng 45 phút.