Yanıtlar:
Komutu kullanarak satırdaki herhangi bir ardışık alanı bir satırsonu ile değiştirebilirsiniz :s/\s\+/\r/g
. \s\+
ortalama bir veya daha fazla boşluk karakterleri ve \r
bkz satır olduğunu :help :substitute
ve :help regexp
detaylar için. Komutu aşağıdaki gibi bir satırda çalıştırırsanız:
foo bar baz
Şunları elde edersiniz:
foo
bar
baz
Eğer varsa hlsearch
etkinse ve her yerde vurgulanır boşluklarla ekranınızı kalabalıklaştırmasını istemiyoruz, bunu önlemek için aşağıdaki gibi küçük bir fonksiyon yazabiliriz:
function! SplitLineNicely()
" Save previous value of last search register
let saved_last_search_pattern = @/
" :substitute replaces the content of the search register with the `\s\+`
" pattern highlighting all whitespaces in the file
substitute /\s\+/\r/g
" Restore previous search register
let @/ = saved_last_search_pattern
endfunction
\r
, bakın :help s/\r
. Bunun yerine, yeni bir satırsonu yazımı uygulanabilir <c-v><cr>
. Bu bağlamda \n
boş bir karakter, bkz :help s/\n
.
replaces the content of the register
- hangi kayıt?
vim
'In yerine koymayı kullanmak muhtemelen görevinizi gerçekleştirmenin daha iyi yollarından biridir, ancak bir makro da kullanabilirsiniz. Farz edelim ki imleç satır 1'in bir yerinde olacak şekilde aşağıdaki verilerimiz var:
1 a b c d e f
~
Normal modda başlandığında, vurmak qq, üzerinden çağrılabilir bir makro kaydetmeye başlar @q. Sonra yazılanlar qqyukarıda belirtilen çağrı ile tekrarlanabilir. Amacımız, kesintisiz tekrarlamaya izin verecek kadar genel olacak normal komutları kaydetmektir.
Böylece, 0imleci satırın başına getirip sonra imleci fspaceilk boşluğa taşımak için yazabiliriz . Bu, daha sonra yazmamıza izin verir renterve sonuç olarak:
1 a
2 b c d e f
~
qTekrar kullanılabilir makronuz tekrarlamaya hazır olduğundan şimdi vurmak iyi bir fikirdir. Bir şekilde keyfi olarak, yeni satırlarla değiştirilecek 4 boşluk kaldığını not ediyoruz. Böylece, vurarak, makroyu 4 kez 4@qtekrarlıyoruz q
:
1 a
2 b
3 c
4 d
5 e
6 f
~
Makroyu kurma şeklimiz nedeniyle, komutu sadece geçerli satırı etkileyeceğinden ve son veri girişinin sağında boşluk olmadığından, komutu 9000 kez tekrarlamanın güvenli fspaceolacağını unutmayın. 'güzel' başarısız olur ve verilerin yeni satırlarla değiştirilmesini önler.
Yani baştan tekrarlamak için:
qq0fspacerenterq9001@q
sonucumuzu verir.
9001
Kullanıcı adınızı hızlı yazmak için klavyenizde bir tuşa sahip olmanızı seviyorum .
Vim'deki satırları bölmenin en kolay yolu normal mod komutudur gq
(normal veya görsel modda her iki harfi de hızlı bir şekilde arka arkaya yazın).
Görsel modda, seçilen her şeyi böler, normal modda gq
bir hareket izlersiniz.
Örneğin, gql
bir satırı geçerli olarak ayarlanan genişliğe böler. Mevcut ayardan farklı olmasını bölünmüş hatlarının genişliğini ayarlamak için kullanabilirsiniz :set textwidth=n
, nerede n
bir çizgi, örneğin istediğiniz karakter sayısı vardır 10
işiniz bittiğinde ve normal genişliğine değişiklik geri.
Bu bilgiyi, bir hareket kullanarak normal modda çizgilere nasıl katılacağını ve bölündüğünü gösteren bir Kholidfu Youtube videosundan aldım.