vim cut & paste Streç / Debian 9'da çalışmıyor


33

Burada birkaç VM sunucusu Debian 9'a yükseltildi.

Şimdi kullanırken ssh, uzak terminaller arasında kopyalayıp yapıştıramıyoruz.

İmleç, hareketleri yapıyor ve metni normalden daha eğlenceli / farklı bir şekilde de olsa işaretliyor gibi görünüyor, ancak ilgili menüde -C / command-V komutunu kopyalayıp yapıştırırken panoya başka bir şey kopyalanmıyor .

Ayrıca fare hareketlerini pozitif sonuç vermeden Shift ve diğer klavye kombinasyonlarıyla yapmayı da denedik.

Bu OS / X, Sierra ve El Capitan, ve Windows'ta da, mobaXterm terminallerini kullanarak oluyor.

Durum, vim'in bir fareye sahip olma bilincinden kaynaklanıyor.

Yığın taşması Diğer soruların ardından, benim yarattığım /etc/vim/vimrc.localile set mouse="r"ve set mouse="v; iyi işe yaramadı.

Nihayet set mouse="", ılımlı bir başarı ile, aynı dosyaya kurun.

Ancak, aynı zamanda zamanın% 100'ünde iyi çalışmıyor. Başka ne yapılabilir?


Fare desteğini neden kapatmak istiyorsunuz? Windows'ta bir macun oturumunda kopyalayıp yapıştırabilirim; Mac'te hangi terminal emülatörünü kullanıyorsunuz?
Alexej Magura

3
Normal Terminal + varsayılan olarak gelen ssh binary; 2 çalışma arkadaşı daha şikayet ediyor ... Onlar başsız sanal sunucular, hepsi de sadece metin. Kes ve yapıştır uygulamasının düzgün çalışmaması bizim için çok önemlidir.
Rui F Ribeiro

İTerm2 gibi bir şey kullanmanızı öneriyorum , sanırım Apple mağazasında bulabileceğiniz retro terim dışında kullandığım tek terminal emülatörü bu, ancak birisinin ssh üzerine kopyalayıp yapıştırdığını destekliyorum. Yine de ekran seçimlerini kopyalayabilmeniz gerekir. Bununla birlikte, terminalden sisteme saçmalık kopyalamaya çalışırken sorun yaşadığımı hafifçe hatırlıyorum, bunu kolaylaştırmak için .zshrc'mde bir sürü fonksiyon yazdım, ancak gerçekten aradığınız şeyin bu olup olmadığından emin değilim. için.
Alexej Magura

2
Belki birileri bu değişikliği geri almak için talepte bulunabilir (debian?) mouse=.
steffen

Yanıtlar:


37

Çözüm seçeneğini ayarlayarak, aslında mouse=ahiç mouse=r.

Bunu /usr/share/vim/vim80/defaults.vim, kabul edilen cevabın söylediği gibi ayarlamanın sorunu, her güncellemenin üzerine yazılacak olmasıdır. Uzun zamandır aradım ve bunun üzerine geldim: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

Çözüm, ilk olarak yerel .vmrc dosyalarını kullanmak ve orada ayarlamaktır. Böylece yerel bir .vimrc (~/.vimrc her kullanıcı için ) oluşturabilir ve seçeneklerinizi orada ayarlayabilirsiniz. Veya bir tane oluşturun, /etc/skelböylece oluşturduğunuz her yeni kullanıcı için otomatik olarak oluşturulur.

Yerel .vmrc dosyaları kullandığınızda Ama, yerel varsa, çünkü orada tüm seçenekleri ayarlamak zorunda .vimrc, defaults.vimher yüklenen almaz! Yerel yoksa .vimrctüm ayarların üzerine yazıldığından emin olun defaults.vim.

Varsayılan ayarları yükleyen ve ardından varsayılan ayarları kişisel ayarlarımla ekleyen veya üzerine yazan tüm kullanıcılar için genel bir yapılandırma istedim. Neyse ki Debian'da bunun için bir seçenek var:/etc/vim/vimrc.local sonra yüklenecektir /etc/vim/vimrc. Böylece bu dosyayı oluşturabilir ve varsayılanların yüklenmesine izin verebilir, tekrar yüklenmelerini önleyebilir (sonunda) ve kişisel seçeneklerinizi ekleyebilirsiniz:

Lütfen aşağıdaki dosyayı oluşturun: /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

( $VIMRUNTIMEYukarıdaki kod parçasında kullanılanın aşağıdaki gibi bir değere sahip olduğuna dikkat edin:)/usr/share/vim/vim80/defaults.vim .)

"Eski kopyala / yapıştır davranışını" da etkinleştirmek istiyorsanız, dosyanın sonuna aşağıdaki satırları da ekleyin:

" 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
Bu kabul edilen cevap olmalı. Ayrıca bağlantılı hata raporunuzdan kurtulabileceğimizi düşünüyorum source $VIMRUNTIME/defaults.vim.
Alasdair

1
Sonunda bu, mükemmel, harika iş dağıtmayı başardı! +1
Rui F Ribeiro

2
Hala Debian 10'da çalışıyor, sadece /usr/share/vim/vim81/defaults.vim kaynağını kullanıyor
Rui F Ribeiro

26

Vim'i farenin farkındalığından kesmenin bir yolu, fareyle ilgili yapılandırmayı yorumlamak gibi görünüyor.

İçinde /usr/share/vim/vim80/defaults.vimfareye özel algılama olarak yorum yaptım:

" 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

(Bu vim konfigürasyon dosyalarında, "bir yorum başlatıyor).

Değişiklik, sorun yaşamadan tekrar kopyalayıp yapıştırmamıza izin verdi.

Yapılandırma dosyası korunmadığı (veya yönlendirilmediği sürece) herhangi bir güncellemenin üzerine yazıldığından dolayı bu ideal bir çözüm değildir. O zamanlar, ya paketin bir versiyonunun ya da çalıştığım sunucuların konfigürasyonunun spesifikasyonları nedeniyle, çalışan tek kişi oydu. Dolayısıyla, bu cevabı burada bırakıyorum ve yalnızca son çare olarak kullanılmalı .


2
IMO bu kötü bir cevap! Kullanıcıları paket yönetimi tarafından yönetilen bir dosyayı düzenlemeye teşvik etmek, gelecekte beklenmedik bir şekilde işleri kırma eğilimindedir. @ I-GaLaXy-I cevabı tercih edilir.
Jeremy Davis

1
@JeremyDavis Sizinle aynı fikirdeyim, bu en iyi çözüm değil. O zamanlar, bazı sebeplerden dolayı çalışmış olan tek kişi oydu ve birkaç alternatif denedim. Ancak, şimdi birden fazla insan bana bugünlerde diğer çözümlerin işe yaradığını söylüyor, doğru cevap olarak kabul ediyorum. O zaman sapmaları kullandım ve yapılandırma dosyasının üzerine yazılmadı, ancak bu da ideal bir çözüm değil.
Rui F Ribeiro

11

İçin Vim dokümantasyon mouseseçeneği diyor

Fare düğmelerinin xterm kullanımı, shift tuşunu basılı tutarak da kullanılabilir.


Bunun için teşekkürler. Vim'i yıllardır kullanıyorum ve bu özelliğin farkında değildim. Sorunuzu, mevcut biçimlendirme özelliklerinin daha fazlasını içerecek şekilde düzenledim. Unix ve Linux'a Hoşgeldiniz !
Anthony G - Monica için adalet,

1
Sorun şu ki, Mac'te Terminal kullanıyorum ve Windows'taki operatörlerim macun / mobaXterm'i kullanıyorum ... değil xterm
Rui F Ribeiro

3

/etc/vimrc.localAşağıdakileri oluşturarak ve ekleyerek sistem dosyalarını değiştirmeden bunu devre dışı bırakabilirsiniz :

set mouse=

Beta zamanında, sürekli çalışmadı, tekrar kontrol edecek, teşekkürler.
Rui F Ribeiro

2
Bu çalışmıyor.
LtWorf

Yukarıdaki I-GaLaXy-I'in cevabına bakınız. Defaults.vim'i açıkça içe aktarmanız ve içeri aktarılmasını engellemeniz gerekir.
richard

Bu benim için de işe yarıyor, ancak @ I-GaLaXy-I'in cevabı ile birleştirdim (yani / edit / create / etc / vilgi/vimrc.local)
Jeremy Davis

Debian 9 konteynerinin içindeyken benim için gayet iyi çalıştı ... sadece ~ / .vimrc
Scott Stensland 'te

1

Birçok insan önerdi, :set mouse=aancak :set mouse=rDebian 9'daki Vim'de sadece kopyala-yapıştır özelliğini etkinleştirdiğini buldum . İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.