Shift kesici uç neden yalnızca kesici uç modunda tam olarak çalışıyor?


13

Bazı içeriği vim kullanarak bir dosyaya (CentOS sunucusundaki Git Bash) yapıştırmayı denedim.
Sadece dosyayı açtım ve shift+ kullanmayı denedim insertve ilk yarının (kabaca) kesildiğini fark ettim, ancak vim mod eklemek ve shift+ 'ya insertbasmak her şeyi mükemmel bir şekilde yapıştırır.
Bunun neden olduğunu merak ediyor muydunuz?

Teşekkürler


Hey, bende iki başparmak var !!! : D
RonJohn

Yanıtlar:


24

Hem Shift+ Inserthem de " bir terminale " yapıştırma "işlemleri benzer şekilde davranır - tuşlara basmayı taklit ederler.

Bu, terminaller için genellikle imkansız olan önemli bir ayrımdır - yazıyor veya yapıştırıyor musunuz? Not : bazı terminaller " parantez yapıştır " modlarını destekler, @ Josh'un yorumundan sonra bile ilginizi çekebilecek xterm'de bir vim eklentisi parantez macunu ile karşılaştım.

Yapıştırılan verileriniz, ekleme moduna giren ilk karaktere kadar kaybolacaktır. Ayrıca imlecinizin taşındığını ve dosyanın diğer bölümlerinin de değiştiğini görebilirsiniz (örneğin: büyük / küçük harf değişimi / silinmiş / vb.) ...

Özet olarak, dosyaya eklenmesini istediğiniz metni yapıştırıyorsanız, önce ekleme moduna girin.


Aşağıdaki metni kopyalamayı deneyin ve Vim çalıştıran bir terminale yapıştırın (ekleme modunda değil):

hello how are you

Sonuç, klavyenize aynı harfleri yazmakla aynıdır:

Vim'e yapışmanın sonucu

Bu durumda, sizi ekleme modunda bırakır ...

Şimdi ekleme modundan çıkmayı deneyin - Esc- ve aşağıdakileri yapıştırın

/are
n

Bu "are" için arama yapar:

Vim'e yapışmanın sonucu

Şimdi şunu yapıştırın:

:0
dG

Oh hayır ... her şey gitti!

hepsi gitti


Girintilemeyi etkinleştirdiyseniz, o zaman bir kod bloğunu vim'e (ekleme modunda) yapıştırmanın çok fazla girintili olacağını göreceksiniz - otomatik girintili olacağını ve yapıştırılan kodunuzun girintiyi içerdiğini göreceksiniz.

def my_print(message):
    print(message)
    print('done...')

yapıştırma kodu

Bunu düzeltmek için :set pasteve :set nopastekomutlarını kullanın

yapıştırma kodu (yapıştırma modu)


4
"Bu, terminallerin yapamayacağı önemli bir ayrım - yazıyor veya yapıştırıyor musunuz?" - bu tamamen doğru değildir, bazı terminaller ve uygulamalar yapıştırılan metinden önce ve sonra özel bir dizinin gönderildiği "köşeli hamur" u destekler.
Kül

@Josh: ilginç, teşekkürler ... Yorumunuz beni bir vim eklentisine
Attie

Rahatsız olan sadece ben miyim set nopaste? Beklerdim unset paste.
Eric Duminil

@ThisGuyHasTwoThumbs alternatif olarak, en azından Vim kullanırken "+, sistem panosuyla etkileşim kurmak için kaydı kullanmak isteyebilirsiniz , çünkü daha akılcı davranmaya eğilimlidir. Dezavantajı, Vim'in bazı sistemleri veya yapılarının kullanabileceği "*veya sadece sistem panosu desteğine sahip olamayacağı, ancak benim deneyimime göre "+oldukça güvenilir olduğu.
8bittree
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.