vim cut & paste tidak berfungsi di Stretch / Debian 9

33

Diupgrade di sini beberapa server VM ke Debian 9.

Sekarang saat menggunakan ssh, kami tidak dapat menyalin dan menempel di antara terminal jarak jauh.

Kursor tampaknya melakukan gerakan, dan menandai teks, meskipun dengan cara yang lebih lucu / berbeda dari biasanya, tetapi tidak ada yang disalin selain ke clipboard ketika melakukan perintah-C / command-V atau salin dan tempel di menu masing-masing .

Kami juga mencoba melakukan gerakan mouse dengan Shift dan kombinasi keyboard lainnya, tanpa hasil positif.

Ini terjadi di OS / X, yaitu Sierra dan El Capitan, dan di Windows, menggunakan terminal mobaXterm juga.

Situasi ini karena kesadaran vim untuk memiliki mouse.

Mengikuti pertanyaan lain di Stack Overflow, saya buat /etc/vim/vimrc.localdengan set mouse="r"dan set mouse="v; itu tidak berhasil dengan baik.

Akhirnya pengaturan set mouse=""di file yang sama, dengan beberapa keberhasilan moderat.

Namun, itu juga tidak berfungsi dengan baik 100% dari waktu. Apa lagi yang bisa dilakukan?

Rui F Ribeiro
sumber
Mengapa Anda ingin mematikan dukungan mouse? Di Windows saya bisa menyalin dan menempel dengan baik dalam sesi dempul; emulator terminal apa yang Anda gunakan di Mac?
Alexej Magura
3
Terminal reguler + binary ssh yang datang secara default; 2 rekan kerja lagi mengeluh ... Mereka adalah server virtual tanpa kepala, semuanya, hanya mode teks. Tidak memiliki cut & paste berfungsi dengan baik adalah masalah besar bagi kami.
Rui F Ribeiro
Saya akan merekomendasikan menggunakan sesuatu seperti iTerm2 , saya pikir itu satu-satunya emulator terminal yang saya gunakan selain dari istilah retro yang bisa Anda dapatkan di Apple store, tapi saya tidak ingat apakah itu mendukung copy dan paste lebih dari ssh. Anda tetap bisa menyalin pilihan layar. Namun, saya samar-samar ingat mengalami masalah ketika mencoba menyalin omong kosong dari terminal ke sistem, saya menulis banyak fungsi di .zshrc untuk membantu memfasilitasinya, tetapi saya tidak yakin apakah itu yang benar-benar Anda cari untuk.
Alexej Magura
2
Mungkin seseorang dapat mengajukan permintaan untuk mengembalikan perubahan ini (dalam debian?) Untuk mendapatkan kembali mouse=mode.
steffen

Jawaban:

37

Solusi sebenarnya, mengatur opsi mouse=auntuk mouse=r.

Masalah pada pengaturan ini di /usr/share/vim/vim80/defaults.vimsebagai jawaban yang diterima mengatakan, adalah bahwa itu akan ditimpa pada setiap pembaruan. Saya mencari waktu yang lama dan berakhir dengan yang ini: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

Solusi dengan cara pertama adalah menggunakan file .vmrc lokal dan mengaturnya di sana. Jadi, Anda dapat membuat .vimrc ( ~/.vimrc) lokal untuk setiap pengguna dan mengatur opsi di sana. Atau buat satu /etc/skelsehingga akan secara otomatis dibuat untuk setiap pengguna baru yang Anda buat.

Tetapi ketika Anda menggunakan file .vmrc lokal, Anda harus mengatur semua opsi di sana, karena jika ada lokal .vimrc, defaults.vimitu tidak dimuat sama sekali! Dan jika tidak ada lokal .vimrcsemua pengaturan Anda beeing ditimpa dari defaults.vim.

Saya memang menginginkan konfigurasi global untuk semua pengguna, yang memuat opsi default dan kemudian menambahkan atau menimpa default dengan pengaturan pribadi saya. Untungnya ada opsi untuk itu di Debian: /etc/vim/vimrc.localAkan dimuat setelah /etc/vim/vimrc. Jadi Anda dapat membuat file ini dan membiarkan default dimuat, mencegahnya tidak dimuat lagi (di akhir) dan kemudian menambahkan opsi pribadi Anda:

Harap buat file berikut: /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

(Perhatikan bahwa yang $VIMRUNTIMEdigunakan dalam cuplikan di atas memiliki nilai seperti /usr/share/vim/vim80/defaults.vim.)

Jika Anda juga ingin mengaktifkan "perilaku lama salin / tempel", tambahkan baris berikut di akhir file itu juga:

" 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
I-GaLaXy-I
sumber
4
Ini harus menjadi jawaban yang diterima. Juga dari laporan bug Anda yang ditautkan, saya pikir kita bisa lolos source $VIMRUNTIME/defaults.vim.
Alasdair
1
Akhirnya berhasil menyebarkan ini, luar biasa, kerja hebat! +1
Rui F Ribeiro
2
Masih bekerja di Debian 10, hanya menggunakan sumber /usr/share/vim/vim81/defaults.vim
Rui F Ribeiro
26

Salah satu cara untuk memotong vim dari kesadaran mouse tampaknya mengomentari konfigurasi tentang mouse.

In /usr/share/vim/vim80/defaults.vimsaya berkomentar deteksi spesifik mouse seperti pada:

" 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

(dalam file konfigurasi vim itu, "sedang memulai komentar).

Perubahan telah memungkinkan kami untuk menyalin dan menempel lagi tanpa masalah.

Saya setuju dengan komentar ini bukan solusi yang ideal, karena memang ditimpa ke pembaruan apa pun kecuali file konfigurasi dilindungi (atau dialihkan). Pada saat itu, dan karena spesifik dari versi paket atau konfigurasi server tempat saya dulu bekerja, itu adalah satu-satunya yang berfungsi. Karena itu, saya meninggalkan jawaban ini di sini, dan seharusnya hanya digunakan sebagai solusi terakhir .

Rui F Ribeiro
sumber
2
IMO ini jawaban yang buruk! Mendorong pengguna untuk mengedit file yang ditangani oleh manajemen paket cenderung merusak hal-hal yang tidak terduga di masa mendatang. @ I-GaLaXy-I jawabannya lebih disukai.
Jeremy Davis
1
@JeremyDavis Saya setuju dengan Anda ini bukan solusi terbaik. Pada saat itu, itu adalah satu-satunya yang berfungsi, untuk beberapa alasan yang tidak diketahui, dan saya mencoba beberapa alternatif. Namun, lebih dari satu orang sekarang memberi tahu saya solusi lain saat ini berhasil, saya menerimanya sebagai jawaban yang benar. Saya menggunakan pengalihan pada saat itu, dan file konfigurasi tidak ditimpa, namun itu juga bukan solusi yang ideal.
Rui F Ribeiro
11

The dokumentasi Vim untuk mousepilihan kata

Penanganan xterm dari tombol-tombol mouse masih dapat digunakan dengan terus menekan tombol shift.

Stefan
sumber
Terima kasih untuk itu. Saya telah menggunakan Vim selama bertahun-tahun dan tidak mengetahui fitur itu. Saya telah mengedit pertanyaan Anda untuk memasukkan lebih banyak fitur pemformatan yang tersedia. Selamat datang di Unix & Linux !
Anthony G - keadilan untuk Monica
1
Masalahnya adalah bahwa saya menggunakan Terminal di Mac dan operator saya dempul / mobaXterm di Windows ... bukan xterm
Rui F Ribeiro
3

Anda dapat menonaktifkan ini tanpa mengubah file sistem dengan membuat /etc/vimrc.localdan memasukkan yang berikut:

set mouse=
Geoffrey
sumber
Dalam waktu beta, itu tidak berfungsi secara konsisten, akan memeriksanya lagi, terima kasih.
Rui F Ribeiro
2
Ini tidak bekerja.
LtWorf
Lihat jawaban I-GaLaXy-I di atas. Anda perlu secara eksplisit mengimpor defaults.vim dan mencegahnya diimpor.
richard
Ini berfungsi dengan baik untuk saya juga, walaupun saya menggabungkannya dengan jawaban @ I-GaLaXy-I (yaitu diedit / dibuat /etc/vim/vimrc.local)
Jeremy Davis
bekerja dengan baik untuk saya saat berada di dalam wadah debian 9 ... masukkan saja ke ~ / .vimrc
Scott Stensland
1

Banyak orang menyarankan :set mouse=atetapi saya menemukan bahwa hanya :set mouse=rmemungkinkan copy & paste di Vim pada Debian 9. Selamat mencoba!

David Yeager
sumber