Vim'deki boş satırları kaldırmak için hangi komutu çalıştırabilirim?
Vim'deki boş satırları kaldırmak için hangi komutu çalıştırabilirim?
Yanıtlar:
:g/^$/d
:g
normal ifadeyle eşleşen satırlarda bir komut yürütür. Normal ifade 'boş satır' ve komut :d
(sil)
:%!cat -s
seçim olabilir ..
Buldum, öyle:
g/^\s*$/d
Kaynak: Gücü g at vim wikia
Kısa açıklama
:g
:[range]g/pattern/cmd
Bu , her satır eşleştirme modeli için Ex komutu cmd'sini yürüterek belirtilen [aralık] (varsayılan tüm dosya) üzerinde etkili olur (Ex komutu, silme gibi iki nokta üst üste ile başlayan bir komuttur ). Yürütmeden önce
:d
Cmd ".
" geçerli satıra ayarlanır.
:v/./d
veya
:g/^$/d
veya
:%!cat -s
Yalnızca çok boş satırları kaldırmak (tek bir boş satıra indirgemek) ve tek boş satırları olduğu gibi bırakmak için aşağıdakiler kullanılabilir:
:g/^\_$\n\_^$/d
\_$
bir desenin içinde kullanılabilen çizgi sonu anlamına gelir ( $
sadece desenin sonunda kullanılabilir.) Aynı şey bir çizginin başlangıcı\_^
anlamına gelir ve desenin içinde herhangi bir yerde kullanılabilir. Böylece, desen boş bir satırla, bir yeni satırla ve yine boş bir satırla eşleşir. Bkz Vim yardım sayfasını regex .
:g/^$/,/./-j
tüm boşluk satırları nasıl kaldırılır
:%s,\n\n,^M,g
(tüm boş satırlar gittiğinde bunu birkaç kez yapın)
SINGLE boş satır bırakarak tüm boşluk satırları nasıl kaldırılır
:%s,\n\n\n,^M^M,g
(bunu birkaç kez yapın)
MAKSİMUMDA İKİ boş satır bırakarak tüm boşluk satırlarını kaldırma,
:%s,\n\n\n\n,^M^M^M,g
(bunu birkaç kez yapın)
^ M girmek için pencerelerde -Q ve control-M'yi kontrol etmeliyim
\r
yerine Ctrl-M
.
Nasıl olur:
:g/^[ \t]*$/d
vim perl ile çalışmak:
:%!perl -pi -e s/^\s*$//g
chomp
işi de yapmaz mıydı?
Bu işlev yalnızca iki veya daha fazla boş satırı kaldırın, aşağıdaki satırları vimrc'nize koyun, ardından işlevi çağırmak için \ d kullanın
fun! DelBlank()
let _s=@/
let l = line(".")
let c = col(".")
:g/^\n\{2,}/d
let @/=_s
call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>
Bu sayfadaki cevaplardan birkaçını denedim, ancak çoğu benim için çalışmadı. Belki Windows 7'de Vim kullandığım için (alay etme, sadece üzülme: p)?
İşte Windows 7'de Vim üzerinde çalışan en kolay olanı:
:v/\S/d
İşte Vim Wikia hakkında daha uzun bir cevap: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line
yapıştırmak
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
.vimrc'nizde, ardından vim'inizi yeniden başlatın. komut: 5,12DBL kullanırsanız, 5. satır ile 12. satır arasındaki tüm boş satırları siler. Bence cevabım en iyi cevap!
Metninizde çift satır aralıklı bir şey varsa, bu komut çift aralığı kaldırır ve önceden var olan yinelenen boş satırları tek bir boş satıra birleştirir. Bir satırın başlangıcında ^ ^ ^ geçici bir sınırlayıcı kullanır, bu nedenle içeriğinizle çakışırsa başka bir şey seçin. Yalnızca boşluk içeren satırlar boş olarak kabul edilir.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Bu benim için çalıştı:
:%s/^[^a-zA-Z0-9]$\n//ig
Temelde sayı veya harf içermeyen tüm satırları siler. Listemdeki tüm öğelerin harfleri olduğundan, tüm boş satırları sildi.