Làm cách nào để cắt / sao chép / dán trong GVim trên Ubuntu hoạt động với Ctrl + X, Ctrl + C, Ctrl + V?


54

Theo mặc định, việc cắt / sao chép / dán các đoạn cắt ngắn trong GVim trên Ubuntu là:

 Cắt "+ x
 Sao chép "+ y
 Dán "+ gP

Tôi muốn sử dụng các tổ hợp phím điều khiển trong GVim, giống như tôi sử dụng trong Firefox và các ứng dụng gnome. Làm cách nào để định cấu hình GVim để hoạt động như các ứng dụng Gnome khác?


Để tránh xung đột với các khóa vim mặc định, hãy chọn Ctrl + Shift + Key thay vì Ctrl + Key
Sheharyar

Câu trả lời:


50

Thêm các dòng sau vào _vimrchoặc.vimrc

source $VIMRUNTIME/mswin.vim
behave mswin

Nhưng hãy cẩn thận, chế độ trực quan sau đó là CTRL-Q thay vì CTRL-V.

Để biết tổng quan về mswin.vim, hãy xem mã nguồn mswin.vim . Nó được nhận xét rất tốt và nếu một số lệnh không rõ ràng, bạn có thể dễ dàng tìm kiếm nó trong trợ giúp của vim.

Dưới đây là tổng quan nhanh được tổng hợp từ nguồn:

  • phím lùi và phím con trỏ bao bọc đến dòng trước / tiếp theo
  • CTRL-X và SHIFT-Del bị cắt
  • CTRL-C và CTRL-Chèn là Sao chép
  • CTRL-V và Shift-Chèn được dán
  • Sử dụng CTRL-Q để làm những gì CTRL-V đã sử dụng để làm
  • Sử dụng CTRL-S để lưu, cũng trong chế độ Chèn
  • CTRL-Z là Hoàn tác; không phải trong cmdline
  • CTRL-Y là Làm lại (mặc dù không lặp lại); không phải trong cmdline
  • Alt-Space là menu Hệ thống
  • CTRL-A là Chọn tất cả
  • CTRL-Tab là cửa sổ tiếp theo
  • CTRL-F4 là Đóng cửa sổ

Theo yêu cầu của Nippysaurus: Tôi đặt theo sau trong .gvimrc của mình để hiển thị Ctrl-V bên cạnh Dán trong menu:

unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V        "+gP
cnoremenu    &Edit.&Paste<Tab>Ctrl-V        <C-R>+

Tôi đã không kiểm tra kỹ lưỡng, chỉ kiểm tra nhanh nếu nó làm đúng như tôi mong đợi. Làm việc cho tôi, hy vọng nó hoạt động cho bạn ;-)


1
Tôi hiểu và đánh giá cao những điểm mà Manni và Peter Thorin đã đưa ra trong các bình luận về câu trả lời của Peter Thorin. Tôi nghĩ rằng tôi đã học GVim trên Windows, như là một thay thế notepad và tôi muốn ít ma sát hơn. Cảm ơn Ludwig
pcapademia

2
Có cách nào để thay đổi văn bản phím tắt menu để khớp với các phím tắt mới không?
Nippysaurus

@Nippysaurus: Tôi đã thử nó với menutrans trong .gvimrc. Không làm cho nó hoạt động, sẽ có một cái nhìn khác vào buổi tối ...
Ludwig Weinzierl

2
Có vẻ như mswin.vimđã có một behave mswincuộc gọi. Có cần thiết phải gọi điều này một lần nữa trong riêng tôi _vimrc?
Bạn bè của Nathan

1
@NathanFriend Ditto. Nó hoạt động ngay cả khi không có behave mswin, ít nhất là trên hệ thống của tôi với Vim 8.0.
Mikel

46

Nếu bạn muốn Cắt / Sao chép / Dán hoạt động bằng các phím nóng "tiêu chuẩn", nhưng bạn không muốn thay đổi bất kỳ tùy chọn cấu hình nào khác trong gvim, hãy thử thêm vào sau đây ~/.vimrc.

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

Dán chỉ hoạt động ở chế độ Trực quan và chèn, do đó bạn không phải lo lắng về xung đột với Ctrl-V và Chế độ Trực quan theo khối. Đây không phải là vấn đề, vì Sao chép và Cắt đưa bạn vào chế độ chèn, do đó bạn có thể dán ngay lập tức sau đó. Nếu bạn dùng thử, bạn sẽ thấy rằng nó hoàn toàn tự nhiên.

Tôi đã đưa ra cấu hình này sau vài lần tinh chỉnh và tôi nghĩ bây giờ nó "hoàn hảo". Nếu bạn thậm chí có chút không hài lòng với cấu hình sao chép / dán hiện tại của mình, hãy thử điều này và tôi cá là bạn sẽ thích nó.


Điều này thật đúng với gì mà tôi đã tìm kiếm. Cảm ơn.
Sean McCleary

2
Sau một số thí nghiệm và tham khảo ý kiến :help i_ctrl-r_ctrl-o, tôi quyết định đổi imap <C-v> <ESC>"+pasang imap <C-v> <C-r><C-o>+; điều này hoạt động như mong đợi khi con trỏ ở bên trái của ký tự đầu tiên của một dòng và nó bắt chước gần nhất hành vi "tiêu chuẩn".
Holger

Tôi đang suy nghĩ về việc thay đổi <C-v>sang shift + insert dường như nhanh hơn rất nhiều trên máy của tôi. Nhưng ở giữa một dự án và không cảm thấy muốn khởi động lại vim ngay bây giờ. Chỉ cần chia sẻ
Sẽ

Bạn thật tuyệt vời =)
Joly Julum

9

Nếu bạn muốn duy trì hành vi vim bình thường nhưng cũng cho phép sử dụng bảng tạm thời ít cồng kềnh hơn, hãy xem Truy cập bảng tạm hệ thống . Nếu bạn muốn gvim sử dụng clipboard của hệ thống như bộ đệm mặc định của nó (vì vậy bất kỳ x, y, pvv lệnh sử dụng clipboard) sau đó thêm dòng sau vào vimrc của bạn:

set clipboard=unnamed

Cá nhân tôi sử dụng bộ đệm nhiều hơn trong vim so với giữa vim và hệ thống; Vì vậy, tôi muốn có một phím tắt rườm rà hơn một chút so với việc hệ thống của tôi liên tục bị ghi đè. Nhưng thật tuyệt khi lựa chọn này dành cho những người thích nó.


2

Tôi nghĩ bạn có thể thêm phần này bằng lệnh: imap (đã thử chỉ với Ctrl + X trong Windows đã hoạt động, nhấn ctrl + c dường như để hủy lệnh mặc dù vậy bạn có thể phải thực hiện bằng vimrc).

:imap <C-X> "+x
:imap <C-C> "+y 
:imap <C-V> "+gP

Nếu bạn thêm nó vào ~ / .vimrc, bạn chỉ cần xóa: phía trước imap.

imap chỉ thêm các liên kết trong chế độ chèn, vì vậy bạn có thể muốn thay đổi nó thành chỉ ánh xạ hoặc một cái gì đó khác. Nhìn vào :help mapmodeđể tìm hiểu thêm về ánh xạ lại và các công cụ ánh xạ.

Chúc may mắn!


1
Điều này nên làm một chút mẹo. Nhưng đó là một ý tưởng tồi để làm điều đó. Ctrl-V sẽ chuyển sang chế độ trực quan, Ctrl-C sẽ hủy mọi lệnh. Và thủ thuật sẽ chỉ hoạt động trên hệ thống của bạn; trên một máy khác, bạn sẽ bị mất.
innaM

1
Tôi đồng ý một phần rằng đó là một ý tưởng tồi, tôi sẽ không muốn sử dụng nó cho mình, nhưng nếu bạn chỉ là một người dùng gvim bình thường, thì có lẽ bạn sẽ không bỏ lỡ các ràng buộc mà bạn loại bỏ.
Peter Thorin

1
Tại sao sử dụng gvim ở nơi đầu tiên? Bao lâu bạn sẽ ở lại một người dùng bình thường?
innaM

2
Tôi không nghĩ đó là một ý tưởng tồi. Mọi người đã quen với Ctrl + X, v.v. và có hàng tỷ lý do khác để sử dụng vim.
Ludwig Weinzierl
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.