Vim'de Silme ve Yeni Çizgi Olmadan Yapıştırma


11

Vim'de birçok kez bir satırı tamamen silmek istiyorum, bu yüzden dd kullanıyorum. Ancak, daha sonra bu satırı bir satır içindeki başka bir konuma yapıştırmam gerekiyor, ancak bu yapıştırmadan önce yeni bir satır ekliyor, bu nedenle istenen sonucu almamı zorlaştırıyor. Örneğin,

while( pasteInHere )
{
    cin >> n; // Delete this line completely with dd
}

Ben yukarıdaki kodu ile bunu yapmak:

while( pasteInHere )
cin >> n; // Delete this line completely with dd
{
}

ki bu istediğim sonuçtan çok uzak ... bu satırsonu davranışını nasıl bastırabilirim veya çok verimli bir şekilde yapan başka bir yöntem kullanabilirim? Ben d $ iyi olduğunu düşünüyorum çünkü sadece satır başına gitmek zorunda değil, ama ben de boş satır silmek istiyorsanız ben başka bir kayıtta silmek gerekir, ben daha kolay bir yol olmalı gibi hissediyorum! Teşekkürler.



1
Ben daha sonra satırın başlangıcına gitmek için daha verimli bir yol istiyorum dediğim gibi, bir yinelenen değil, ben de aslında yeni satır karakteri ile tam satır kaldırmak istiyorum .... sadece satırın içeriği değil
fYre

Oh, şimdi ne demek istediğini anlıyorum. Neyi başarmaya çalıştığın bana çok açık değildi.
EvergreenTree

1
0Dsatır sonu hariç satırı sil. Ve gJhatlara katılmaktan daha . Şimdi metni kesik çizgi olmadan ve boş satır olmadan koyabilirsiniz.
Alex Kroll

Yanıtlar:


9

Silmek istediğiniz satırın üzerindeki satırın herhangi bir yerine gidebilir, ardından istediğiniz noktaya basıp JDyapıştırabilirsiniz p.

  • Jiki satıra katılır ve silmek istediğiniz metnin başlangıcında sizi taşır. Bu, yeni satır karakterini ve taşımak istediğiniz satırın girintisini siler.
  • D imlecin bulunduğu konumdan satırın sonuna kadar siler ancak yeni satır karakterini korur.

İpucu: Eğer kullanabilirsiniz :puBirlikte sildiyseniz Dveya birlikte çekti y$ve yapıştırmak istediğiniz ile yeni bir satır.


3

Gerçekten daha basit değil, biraz daha verimli ve her iki sıra için de normal mod haritaları oluşturabilirsiniz:

  • yanking: taşımak istediğiniz çizgiye gidin, sonra ^D"_dd
  • yapıştırma: değiştirmek istediğiniz kelimeye gidin, sonra viwp

2

İle oldukça iyi çalışan bir şey elde edebilirsiniz imap. Aşağıdakileri kendinize ekleyin vimrc:

inoremap <c-a> <c-r>1<esc>k$Jxi

Bu CTRL-a, son silinen metni ( ddveya benzeri) yapıştıracak bir eşleme oluşturur . İsterseniz, haritalama için elbette farklı bir anahtar kullanabilirsiniz.

Referanslar:

:h i_CTRL-R
:h quote1
:h J

1

Bu da benim için biraz ortaya çıkıyor, daha önce optimize etmeyi düşünmemiştim ama bu haritalama işe yarıyor:

nmap dil ^d$

dil"doğrultusunda silme" benzer etmek diw, di"vb


1

Yeni satır olmadan yapıştır

Bunu .vimrc dosyanıza koyun:

" Paste yanked line without line breaks before/after cursor position
nnoremap gP i<CR><Esc>PkJxJx
nnoremap gp a<CR><Esc>PkJxJx

Misal:

<span style="color:">danger</span>

Şimdi yazabilirsiniz gpeklemek #D51B3Fsonra color:benim imleç uzaklıkta iken, :normal modda.

Yank yeni çizgi olmadan

Flukus'un cevabını kullan:

" Delete current line without yanking the line breaks
nnoremap dil ^d$

silme iç satırının kısaltması olarak . Bu aynı zamanda önde gelen girintiden de kurtulur.


0

Kopyalamak istediğiniz metni düğmesine basarak seçebilir vve daha sonra düğmesine basarak ara belleğe alabilir ve ardından istediğiniz yyere yapıştırabilirsiniz p. Herhangi bir yeni satır eklemez.


Doğru, ama bu hala boş bir satır bırakıyor.
muru
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.