cắt và dán vim không hoạt động trong Stretch / Debian 9


33

Đã nâng cấp ở đây một vài máy chủ VM lên Debian 9.

Bây giờ khi sử dụng ssh, chúng ta không thể sao chép và dán giữa các thiết bị đầu cuối từ xa.

Con trỏ dường như đang thực hiện các chuyển động và đánh dấu văn bản, mặc dù theo cách hài hước / khác so với thông thường, nhưng không có gì được sao chép vào bảng tạm khi thực hiện lệnh-C / lệnh-V hoặc sao chép và dán vào menu tương ứng .

Chúng tôi cũng đã thử thực hiện các chuyển động chuột với Shift và các kết hợp bàn phím khác mà không có kết quả khả quan.

Điều này đang xảy ra trong OS / X, cụ thể là Sierra và El Capitan và trong Windows, sử dụng các thiết bị đầu cuối mobaXterm.

Tình hình là do nhận thức của vim về việc có một con chuột.

Sau các câu hỏi khác trong Stack Overflow, tôi đã tạo /etc/vim/vimrc.localbằng set mouse="r"set mouse="v; nó đã không hoạt động tốt.

Cuối cùng thiết lập set mouse=""trong cùng một tệp, với một số thành công vừa phải.

Tuy nhiên, nó cũng không hoạt động tốt 100%. Những gì người khác có thể được thực hiện?


Tại sao bạn muốn tắt hỗ trợ chuột? Trên Windows tôi có thể sao chép và dán tốt trong một phiên putty; bạn đang sử dụng trình giả lập thiết bị đầu cuối nào trên Mac?
Alexej Magura

3
Terminal thông thường + nhị phân ssh đi kèm theo mặc định; Thêm 2 người bạn làm việc phàn nàn ... Họ là những máy chủ ảo không đầu, tất cả đều chỉ có chế độ văn bản. Không cắt và dán hoạt động đúng cách là một vấn đề lớn đối với chúng tôi.
Rui F Ribeiro

Tôi khuyên bạn nên sử dụng một cái gì đó như iTerm2 , tôi nghĩ đó là trình giả lập thiết bị đầu cuối duy nhất tôi đã sử dụng ngoài thuật ngữ retro mà bạn có thể có trong cửa hàng Apple, nhưng tôi không nhớ nếu đó là một bản sao được hỗ trợ và dán qua ssh. Tuy nhiên, bạn vẫn có thể sao chép các lựa chọn màn hình. Tuy nhiên, tôi nhớ một cách mờ nhạt khi gặp sự cố khi sao chép crap từ thiết bị đầu cuối vào hệ thống, tôi đã viết một loạt các chức năng trong .zshrc của mình để giúp tạo điều kiện cho nó, nhưng tôi không chắc đó có phải là thứ bạn đang tìm kiếm không cho
Alexej Magura

2
Có lẽ ai đó có thể gửi yêu cầu hoàn nguyên thay đổi này (bằng debian?) Để lấy lại mouse=chế độ.
steffen

Câu trả lời:


37

Giải pháp là trong thực tế, thiết lập tùy chọn mouse=ađể mouse=r.

Vấn đề về việc đặt điều này theo /usr/share/vim/vim80/defaults.vimnhư câu trả lời được chấp nhận nói, là nó sẽ bị ghi đè lên mỗi bản cập nhật. Tôi đã tìm kiếm một thời gian dài và kết thúc trên cái này: https://bugs.debian.org/cgi-bin/ormsreport.cgi?orms=864074

Giải pháp theo cách đầu tiên là sử dụng các tệp .vmrc cục bộ và đặt nó ở đó. Vì vậy, bạn có thể tạo một .vimrc ( ~/.vimrc) cục bộ cho mọi người dùng và đặt các tùy chọn của bạn ở đó. Hoặc tạo một /etc/skelcái để nó sẽ được tạo tự động cho mọi người dùng mới mà bạn tạo.

Nhưng khi bạn sử dụng các tệp .vmrc cục bộ, bạn phải đặt tất cả các tùy chọn ở đó, bởi vì nếu có một cục bộ .vimrc, defaults.vimthì không được tải gì cả! Và nếu không có cục bộ, .vimrctất cả các cài đặt của bạn sẽ được ghi đè lên defaults.vim.

Tôi đã muốn có một cấu hình toàn cầu cho tất cả người dùng, tải các tùy chọn mặc định và sau đó thêm hoặc ghi đè mặc định bằng cài đặt cá nhân của tôi. May mắn thay, có một tùy chọn cho điều đó trong Debian: Nó /etc/vim/vimrc.localsẽ được tải sau /etc/vim/vimrc. Vì vậy, bạn có thể tạo tệp này và để mặc định được tải, ngăn không cho chúng được tải lại (ở cuối) và sau đó thêm tùy chọn cá nhân của bạn:

Vui lòng tạo tập tin sau: /etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

(Lưu ý rằng $VIMRUNTIMEđược sử dụng trong đoạn trích trên có giá trị như /usr/share/vim/vim80/defaults.vim.)

Nếu bạn cũng muốn kích hoạt "hành vi sao chép / dán cũ", hãy thêm các dòng sau vào cuối tệp đó:

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

4
Đây phải là câu trả lời được chấp nhận. Cũng từ báo cáo lỗi được liên kết của bạn, tôi nghĩ rằng chúng ta có thể thoát khỏi source $VIMRUNTIME/defaults.vim.
Alasdair

1
Cuối cùng quản lý để triển khai này, công việc tuyệt vời, tuyệt vời! +1
Rui F Ribeiro

2
Vẫn hoạt động trong Debian 10, chỉ cần sử dụng nguồn /usr/share/vim/vim81/defaults.vim
Rui F Ribeiro

26

Một cách để cắt vim từ nhận thức chuột dường như đang bình luận về cấu hình về chuột.

Trong /usr/share/vim/vim80/defaults.vimtôi đã nhận xét phát hiện cụ thể của chuột như trong:

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(trong các tệp cấu hình vim đó, "đang bắt đầu nhận xét).

Thay đổi đã cho phép chúng tôi sao chép và dán lại mà không gặp vấn đề gì.

Tôi đồng ý với các ý kiến ​​đây không phải là giải pháp lý tưởng, do thực sự bị ghi đè vào bất kỳ bản cập nhật nào trừ khi tệp cấu hình được bảo vệ (hoặc chuyển hướng). Vào thời điểm đó, và do các chi tiết cụ thể của một phiên bản của gói hoặc cấu hình của các máy chủ nơi tôi từng làm việc, nó là phiên bản duy nhất hoạt động. Như vậy, tôi để lại câu trả lời này ở đây, và nó chỉ nên được sử dụng như một giải pháp cuối cùng .


2
IMO đây là một câu trả lời tồi! Việc khuyến khích người dùng chỉnh sửa một tệp được quản lý bởi gói quản lý có khả năng phá vỡ mọi thứ bất ngờ trong tương lai. @ I-GaLaXy-Tôi trả lời là thích hợp hơn.
Jeremy Davis

1
@JeremyDavis Tôi đồng ý với bạn đây không phải là giải pháp tốt nhất. Vào thời điểm đó, nó là người duy nhất hoạt động, vì một số lý do không rõ, và tôi đã thử một vài lựa chọn thay thế. Tuy nhiên, nhiều hơn một người hiện đang nói với tôi giải pháp khác hiện nay có hiệu quả, tôi chấp nhận nó là câu trả lời đúng. Tôi đã sử dụng chuyển hướng vào thời điểm đó và tệp cấu hình không bị ghi đè, tuy nhiên đó cũng không phải là một giải pháp lý tưởng.
Rui F Ribeiro

11

Các tài liệu Vim cho mousetùy chọn nói

Việc xử lý xterm của các nút chuột vẫn có thể được sử dụng bằng cách nhấn phím shift.


Cảm ơn vì điều đó. Tôi đã sử dụng Vim trong nhiều năm và không biết về tính năng đó. Tôi đã chỉnh sửa câu hỏi của bạn để kết hợp thêm các tính năng định dạng có sẵn. Chào mừng bạn đến với Unix & Linux !
Anthony G - công lý cho Monica

1
Vấn đề là tôi đang sử dụng Terminal trong Mac và các nhà khai thác của tôi putty / mobaXterm trong Windows ... không phải xterm
Rui F Ribeiro

3

Bạn có thể vô hiệu hóa điều này mà không thay đổi các tệp hệ thống bằng cách tạo /etc/vimrc.localvà chèn vào các mục sau:

set mouse=

Trong thời gian beta, nó không hoạt động ổn định, sẽ kiểm tra lại, cảm ơn.
Rui F Ribeiro

2
Điều này không hoạt động.
LtWorf

Xem câu trả lời của I-GaLaXy-I ở trên. Bạn cần nhập rõ ràng mặc định.vim và ngăn không cho nhập.
Richard

Điều này cũng hoạt động tốt với tôi, mặc dù tôi đã kết hợp nó với câu trả lời của @ I-GaLaXy-I (nghĩa là đã chỉnh sửa / tạo /etc/vim/vimrc.local)
Jeremy Davis

làm việc tốt với tôi trong khi bên trong một container 9 debian ... chỉ cần đặt nó vào ~ / .vimrc
Scott Stensland

1

Nhiều người đề xuất :set mouse=anhưng tôi thấy rằng chỉ :set mouse=rcho phép sao chép và dán vào Vim trên Debian 9. Chúc may mắn!

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.