Vim'de nasıl silinir (kesilmez)?


145

Bir satırı varsayılan arabelleğe koymadan nasıl silebilirim?

Misal:

line that will be copied.

line that I want to be substitued with the previous one.

Ne yapmaya çalışıyorum:

yy
dd
p

Ancak Vim, son kopyalanan dizeyi silinen (kesilen) dizeyle değiştirir. Ben gibi tamponlarını kullanabilirsiniz biliyoruz "1yy, ddo zaman "1p, ama her zaman bir tampon kopyalanan dize koymak unutmayın sonra ben ilk (kopyalanacak çizgi) benim içeriğini yapıştırın ve sonra ben istiyorum ki (çizgi istediğini silmeniz gerekir öncekiyle değiştirilecek.)

Vi (m) 'deki bir metni kopyalamadan gerçekten nasıl silebilirim?

İlgili başka bir soru, ekleme modunda bir sözcüğü nasıl silebilirim? Ctrl+ ' Ya benzer bir şey istiyorum w.


Yanıtlar:


130

, "Kara delik kayıt" kullanın "_gerçekten silme şey: "_d.
Bir "_dPşeyi yapıştırmak ve daha fazla yapıştırma için kullanılabilir tutmak için kullanın .

İkinci soru için kullanabilirsiniz <C-o>dw. ekleme modundan <C-o>çıkmadan normal bir komut yürütmek için kullanılır .

Elbette yazmayı kaydetmek için kendi eşlemelerinizi ayarlayabilirsiniz. Bunlara sahibim:

nnoremap <leader>d "_d
xnoremap <leader>d "_d
xnoremap <leader>p "_dP

teşekkürler, her iki soruma da cevap veriyorsunuz. Ancak bu noremap komutlarının bana nasıl yardımcı olacağını anlamadım. Kesme fonksiyonunu mu kaybediyorum?
MaikoID

3
Hayır, dyine de "keser" ve pyine de "yapıştırır", <leader>dgerçek için siler ve <leader>pseçilen metni atar ve varsayılan kaydın içeriğini yapıştırır. <leader>padlandırılmış kayıtları kullanmak zorunda kalmadan aynı metni birden çok kez yapıştırmamı sağlar.
romainl

119

Kara delik kayıt "_ hile olacaktır, ancak daha iyi bir çözüm yoktur:

Satırı pkomutla geri girdiğinizde, üzerine yazılan (geçici) varsayılan kaydın içeriğini yapıştırıyorsunuz . Ancak yine de delete komutuyla üzerine yazılmayacak olan (uçucu olmayan) yank yazmacından yapıştırabilirsiniz .""dd "0dd

Yani bunlar örneğinize göre kullanmak istediğiniz komutlardır:

yy
dd
"0p

1
Harika, bu kabul edilen cevap olmalı. Yapıştırmak istediğimde bir kaydı el ile belirtmek, her şeyi sildiğimde bir kayıt belirtmeye devam etmekten çok daha kolaydır.
JShorthouse

44

Bu vim hakkında sevmediğim şeylerden biri ... dd.vimrc'deki kara delik kaydına eşleştirdim ve hayat şu tarihten beri iyi oldu:

nnoremap d "_d
vnoremap d "_d

6
o zaman nasıl kesiyorsun?
VitalyB

11
v/Vile xde kesilir. Ayrıca , herhangi bir işletim sisteminde kesme ile xuyumludur Ctrl + x.
WesternGun

22

aşağıdaki eşlemeler üretilecektir:

  • d => "sil"
  • lider d => "kes"
nnoremap x "_x
nnoremap d "_d
nnoremap D "_D
vnoremap d "_d

nnoremap <leader>d ""d
nnoremap <leader>D ""D
vnoremap <leader>d ""d

Ayrıca, "lider" anahtarını virgül olarak ayarlamak iyi bir uygulamadır, örneğin:

let mapleader = ","
let g:mapleader = ","

bu 2 parçacık ", d" yi yeni kesme komutunuz yapar.

Bu eşlemeleri daha sonra paylaşılan bir sistem panosu yapılandırmasıyla kullanmak isterseniz, https://github.com/pazams/d-is-for-delete adresindeki diğer ayrıntılara bakın.


Keşke bu cevabı birden fazla kez değerlendirebilseydim - kprobst'un cevabını kullanıyordum ama sonra bir çizgi kesmek için, yyddparmaklarımda biraz sürdürülemez olan kullanmak zorunda kaldım ;-).
Tahir Hassan

1
intellij fikri bundan sonra çok garip davranıyor. dd hiçbir şey yapmaz. , d hiçbir şey yapmaz
s1n7ax

Çözümü çok seviyorum. Benim için işe yaramayan bir şey, çizgileri kesmek ,dd. Ekledikten sonra nnoremap <leader>dd ""ddo işe başladı
Alexey

8

"_dİşlerin metninizin üzerine yazılmasını önlemek için kullanabilirsiniz . Çekilmiş veya silinmiş metni istediğiniz herhangi bir kayıtta saklayabilirsiniz "ve _umursadığınız şeyleri gönderdiğiniz 'kara delik' kaydıdır.

Daha fazla bilgi için :help "_veya:help deleting


-1
yy
Vx
p

Görsel moddayken xseçimi silecektir, bu nedenle tüm bir satırı silmek istiyorsanız, önce Vgörsel modda satırı seçmek için düğmesine basın ve ardından xseçimi silmek için düğmesine basın .


3
Bu, silinen satırı, OP'nin tam olarak kaçınmak istediği panoya kopyalar.
aVeryStableGenius

Teşekkürler! Her nasılsa bu Emacs'in Evil eklentisi üzerinde mükemmel çalışıyor
Pedro Penna
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.