2013-07-16 40 views
9

Bu metni olduğunu varsayalım:Vim kullanarak bir desene göre metin birden çok satıra nasıl bölünür?

name1 = "John"; age1 = 41; 
name2 = "Jane"; age2 = 32; 
name3 = "Mike"; age3 = 36; 
... 

ve böyle bir sonuç elde iki hat halinde her satırı bölmek istiyorum:

name1 = "John"; 
age1 = 41; 
name2 = "Jane"; 
age2 = 32; 
name3 = "Mike"; 
age3 = 36; 
... 

nasıl bu işlemi otomatik hale ki?

bazı notlar:
(1), sanal-Vode metni,
(2) :'<,'>:norm ^3f r^M *** Yürütme seçin
ama:

  1. Zaten aşağıdaki yöntemi denedi doğru çalışmıyor; satırların sadece yarısını böler, çünkü her satır kırıldıktan sonra, komutun bir sonraki tekrarı bir sonraki satırda kırılan çizginin geri kalanı için geçerlidir!
  2. Bu, bir makro kullanılarak elde edilebilir ancak daha zarif bir çözüm arıyorum.


*** dizisinin açıklaması:

- norm normal mod
aşağıdaki komutları çalıştırmak için - başına imleci hareket ettirmek için ^- 3f<space> satırının r hattı
3. boşluğa imleci hareket -

+0

olası yinelenen [Vim bir satır için bir karakter nasıl değiştirilir?] (Http : //stackoverflow.com/questions/71323/how-to-replace-a-character-for-a-newline-in-vim) –

cevap

24

tüm dosya üzerinde çalıştırmak için yeni bir hat ile bu alanı değiştirmek için r^M, bunu kullanın:

:%s/; /;\r/ 

çalıştırmak için seçilen metin üzerinde sadece, bunu kullanın:

:'<,'>s/; /\r/ 

İngilizce çeviri "virgüllebir yeni satır ardından ardından bir boşlukyarı kolonun her geçtiği yerine ."

Açıklama: Vi yer değiştirmek için alır gibi yaklaşık olarak temel var

% - operate on the entire file 
s - substitute 
/ - symbol that separates search/replace terms 
; - the character you're searching for (notice I added a space) 
;\r - the replacement text (semi-colon followed by newline) 

.Daha fazla geekiness için


:

Aslında bu gibi durumlar için benim .vimrc dosyasında eşlenen aşağıdakiler var

: Bu komut ilk geçtiği bir dosyanın her satırından böler

" 
" add a newline after each occurrence of the last search term 
" 
nnoremap SS :%s//&\r/<CR> 

son arama modeli.

Yani, kullanım örneği için bunu olacaktır:

  1. arama ; için
  2. tipi aşağıdaki komutu (siz ya ... Bir boşluk eklemek istediğiniz olmayabilir sana bağlı) Normal modda: dosyanızın SS

Her satır ilk ; sembolü de bölünmüş alacak.

aşağıdaki 5 tuş vuruşlarını kullanmak istiyorsunuz, netleştirmek için:

/;ENTERSS Bu hızla vb XML, HTML, biçimlendirme için çok kullanışlı

... arasında