Başka bir satırdan başlayarak görsel blok nasıl yapıştırılır


10

Görsel bloğun seçtiği pya Pda seçtiği ctrl+vve çektiği (kopyalandığı ) bir şeyi koymanın (yapıştırma) y, önceki tarzı koruduğunu fark etmek çok uzun zaman aldı , böylece kopyalanan metin satırların ortasındayken, daha sonra mümkün olduğunda diğer metnin ortasına kopyalanır. Aksine, seçme satırı Vkopyalanan satırı diğer metnin içine yapıştırmaz, başka bir satırdan başlayarak yapıştırır.

Örneğin, şimdiye kadar sahip olduğumu varsayalım:

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
12/15:
12/16:
12/17:

Ben kesim istediğinizde Avocadove Beanve Cherry, seçerek tarafından (seçim olarak temsil _)

12/12: ________ Apple.
12/13: ________ Banana.
12/14: ________ Citron.
12/15:
12/16:
12/17:

ve tuşuna basın yve imleci aşağıdaki satıra taşıyın (imleç olarak gösterilir _),

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
_2/15:
12/16:
12/17:

düğmesine basın P. Sonuç:

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
Avocado.12/15:
Bean.   12/16:
Cherry. 12/17:

Ama istediğim şuydu:

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
Avocado.
Bean.   
Cherry. 
12/15:
12/16:
12/17:

Her seferinde beni şaşırttı, çizginin ortasında kopyalandıkları için, çizginin ortasına yapıştırıldıklarını, oldukları gibi taklit ettiklerini anlayana kadar beni şaşırttı.

Başka bir satırdan başlayarak bir şeyi yapıştırmanın en iyi yolu, imleci başlangıca 0ve 3 satırdan aşağıya yeni yere taşımaktır; ve ekleme moduna girerek ive tuşuna <return>3 kez basın ve imleci 6 satır geriye ve sağa, orijinal yerine geri götürün; kopyalayıp tekrar yeni yere taşıyın ve yukarıda yaptığım gibi yapıştırın.

Birkaç vuruş kaydedebilir miyim? Veya genellikle ne yaparsınız?

(Düzenle: Yukarıda söylenenler, bunu sorduğum anda nasıl anladığımdı. Doğru açıklama için şu cevaplara bakın:)

Yanıtlar:


11

Bir metni kopyaladığınızda, bir kayıt defterine gider. Bir kayıt içindeki metin türü vardır: characterwise, linewiseveya blockwise.

Bu tür, metnin hangi şekilde yerleştirileceğini belirler.

Örneğinizde, görsel blok modundan bazı metinler kopyaladınız. Böylece, metin türü vardı blockwiseve isimsiz kayıtta saklandı ".
Bu türden dolayı, arabellek içine geri yapıştırdığınızda, blok olarak yapıştırılır.


Bir blok yerine bir satır dizisi olarak yapıştırmak istiyorsanız, 3 yol vardır.

  1. Ekleme modundan, vurarak ekleyebilirsiniz C-r ".
    Adsız kaydın içindekiler, türü yeni gibi yazılmalıdır.

  1. Komut satırından komutu kullanabilirsiniz :put.
    :putorijinal türü ne olursa olsun, metni bir kaydın içine sanki çizgi gibi yapıştırmalıdır. Bir kaydın adını bağımsız değişken olarak ve kaydın yapıştırılmasını istediğiniz satırın altında belirtmek için bir satır adresi aktarabileceğinizi unutmayın.

Örneğin:

:42put a

... sicilin içeriğini th satırının aaltına koymalıdır 42.

Bir kayıt adı olmadan Vim, adlandırılmamış kaydı (veya +ince ayar yaparsanız kaydı 'clipboard') yapıştırmak istediğinizi varsayacaktır .
Ve bir adres olmadan, Vim onu ​​geçerli satırın altına yapıştırmak istediğinizi varsayacaktır.


  1. Komut satırından, adlandırılmamış kayıt türünü setreg()işleviyle değiştirebilirsiniz:

    :call setreg('"', '', 'al')

Burada, setreg()isimsiz yazmacıya boş bir dize eklemeliyiz ( aüçüncü bir argüman olarak geçen bayrak sayesinde ) ve türünü ( lbayrak sayesinde ) yeni satır olarak değiştirmelidir .

Daha sonra, normal moddan, kaydı pnormal komutla, sanki türü çizgi gibi yapıştırabilmelisiniz .


Sorununuzla doğrudan bağlantılı değil, ancak bazı metinleri kopyaladığınızda, 0kayıt defterine de geçiyor . Ve değeri unnamedplusseçeneğe eklediyseniz 'clipboard', +kayıt defterine de gider .

getregtype()İşlevi kullanarak bir kayıt türünün ne olduğunu kontrol edebilirsiniz :

:echo getregtype('"')

Küçük harf döndürürse v, türün karaktersel olduğu anlamına gelir.
Büyük harf döndürürse V, türün satır içi olduğu anlamına gelir.
Geri dönerse ^V{some number}, türün blok halinde olduğu ve bloğun genişliği olduğu anlamına gelir {some number}.


3

Ben "sık sık belirli bir (characterwise / linewise / blockwise) moduna kayıt içeriğini döküm gerekiyordu, bunun için UnconditionalPaste eklentisi yazdı . Sağladığı gcp, glpvb alternatifler yerleşik (virgül veya sorgulanan karakterler katıldı ile yapıştırarak gibi bu tema üzerinde ve şimdi birkaç tane daha varyasyonlar ile) belirli bir mod zorlamak yapıştırma.

Bununla birlikte, metni nasıl çektiğinizden bağımsız olarak, geçerli satırdan sonra / öncesine (yeni satırlar olarak) yapıştırmak için glp/ tuşunu kullanabilirsiniz glP.


Böyle bir şey yazmak için zamanınız olduğunu kıskanıyorum QQ Ama memnunum :put. (Ayrıca seni oyladı)
Violapterin

@Aminopterin: Sıklıkla, ilk paragraf için bir snipMate snippet'im olduğunu yanıtladım. Bu yüzden biraz özelleştirmem gerekiyor. Cevabımı ve oylamayı takdir ettiğiniz için teşekkür ederiz!
Ingo Karkat

Ah, kıskançlıkla yapılır gibi, tek başına bir eklenti yazmak için zamanınız olduğunu kıskanıyorum dedim. ve vim kullanmaya başladım ~~
Violapterin

2
@Aminopterin Ah, eklenti Vimtips'ten kopyalanan küçük bir snippet olarak başladı ve zamanla yavaşça büyüdü. Benim için çok yararlı olduğu kanıtlandığında, yavaş yavaş büyük ölçüde geliştirdim. Birçok küçük adım büyük bir çabadan daha güçlüdür!
Ingo Karkat
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.