Vim'de bir kelime nasıl silinir ve nasıl yazılır?


98

Normal modda , mevcut kelimenin geri kalanını silen ve ekleme moduna giden Ctrl+ tuşuna basabilirim E.

İmleç konumundan bağımsız olarak tüm kelimeyi silmek istiyorum (tabii ki kelime içinde).

Yanıtlar:


166

İmlecinizin üzerinde bulunduğu bir kelimeyi silmek için "ciw" yazarak "iç kelimeyi değiştir" i kullanabilirsiniz.

"İç" ve "a" komutları Vim'de harikadır, ayrıca bir {} bloğunun içindeki "ci {" veya {} karakterlerini de kaldırmak istiyorsanız "ca {" deneyin. Bu komutları daha iyi hatırlamak için İngilizceye çevirmek için şunu deneyin: "içteki {bloğu değiştir" ve "bir {bloğu değiştir".

Http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects adresindeki belgeler


"caw" aynı işlev "ciw" yerine kullanılabilir.
Amjith

'Caw' ve 'ciw' tüm sözcüğün yerini alırken, basitçe 'cw' mevcut imleç konumundan geçerli sözcüğün sonuna değişecektir.
Drew Stephens

Jinxed_coders yorumunun hatırlattığı gibi, cevabı "co {" dan "ca {" ye anlattım. Eski özelleştirmem, "(a) <>" komutlarını "(o) uter <>" komutları olarak uygular.
Kaali

19
ciwve cawtam olarak aynı değildir: ciwsadece kelimeyi, cawsondaki boşluğu da siler.
Roberto Bonvallet

5
: vim'deki nesnelere bu tür seçimler hakkında daha fazla bilgi almaları için yardım edin .
Aaron

19

Takip eden sorunuzun cevabı: viwp

v    -> start visual mode
iw   -> select the 'inner word'
p    -> paste - in visual mode it replaces the visually selected text.

3
Bunu arka arkaya defalarca nasıl yaparsınız? Her yapıştırışınızda, tampon, üzerine yapıştırdığım sözcükle dolar.
Ben Gartner

1
@BenGartner Bunu Vim Tips wiki'de buldum : yiwMevcut kelimeyi kopyalamak için kullanın , imleci değiştirilecek kelimenin üzerine getirin, kullanın ciw<C-r>0. Bundan sonra imleci bir sonraki sözcüğe yerleştirebilir ve .değiştirmeyi yeniden yapmak için kullanabilirsiniz .
siegi

@BenGartner Tek yapmaya çalıştığınız tüm WORD_A örneklerini WORD_B ile değiştirmekse, o zaman sadece vim'in ex modunu :%s/a/b/g,. atam metin veya normal bir ifade olabilir ve btüm eşleşmelerini aile değiştireceğiniz şey budur . Normal ifadeleri vim /modu ile test edebilirsiniz . Değiştir %tüm hatlarda yerine istemiyorsanız bir hat numarası veya aralığı ile.
Braden Best

8

İkinci soru için: bPldw

Bu, sizi sırasıyla mevcut kelimenin başlangıcına götürür, varsayılan kaydı imlecin önüne yerleştirir, sonraki karaktere gider (yeni girdiğiniz metnin sonunu geçmenizi sağlar) ve geri kalanını siler. kelime.


5
bu aynı zamanda kelimeden sonraki boşluğu da siler. Olmalı bPlde.
0x89

10
Hayır, olmalıviwp
aehlke

3

İlk soru için bcwde çalışın. " bKelimenin başına ack, change word" anlamına gelir . Ama bence ciwhangi vasıta "daha unutulmaz change inner word", sadece tek bir adım.

"Yapıştır kullanarak değiştir" hakkındaki ikinci soru için benim çözümüm "_diwP. Bu delete inner wOrd için umurunda ve yok kayıt pvarsayılan kasan içeriğini Aste'deki. Bir avantaj, varsayılan kaydı birçok kez yapıştırabilmenizdir, çünkü kirletilmeyecektir. Bu bir litte kompleksi, bu yüzden onu olarak eşleştiriyorum nnoremap ,r "_diwP.


2

Ya da, bdwimevcut kelimeyi silmek ve INSERT moduna geçmek için belki de tuş dizisini kullanabilirsiniz .


1
bcwMevcut kelimenin başına gitmek için tuşunu kullanabilir ve ardından kelimeyi değiştirebilirsiniz, bu da size ekleme modu bırakır.
Hank Gay

İmleciniz zaten kelimenin ilk karakterinin üzerindeyse, bu önceki kelimeyi siler.
Warren Pena

3
@WarrenPena Bu durumda, sadece kullanın dwi. DWI çoğu eyalette yasa dışı olduğu için polislerin fark etmemesine dikkat edin.
Braden Best
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.