Perintah apa yang bisa saya jalankan untuk menghapus baris kosong di Vim?
Perintah apa yang bisa saya jalankan untuk menghapus baris kosong di Vim?
Jawaban:
:g/^$/d
:g
akan menjalankan perintah pada baris yang cocok dengan regex. Regex adalah 'baris kosong' dan perintahnya adalah :d
(hapus)
:%!cat -s
mungkin menjadi pilihan ..
Ditemukan, ini:
g/^\s*$/d
Sumber: Kekuatan g di vim wikia
Penjelasan singkat tentang
:g
:[range]g/pattern/cmd
Ini bekerja pada [range] yang ditentukan (default seluruh file), dengan mengeksekusi cmd perintah Ex untuk setiap pola pencocokan baris (perintah Ex adalah yang dimulai dengan titik dua seperti
:d
untuk menghapus). Sebelum menjalankan cmd , ".
" diatur ke baris saat ini.
:v/./d
atau
:g/^$/d
atau
:%!cat -s
Berikut ini dapat digunakan untuk menghapus hanya beberapa baris kosong (kurangi menjadi satu baris kosong) dan biarkan satu baris kosong utuh:
:g/^\_$\n\_^$/d
\_$
berarti end-of-line yang dapat digunakan di dalam suatu pola ( $
hanya dapat digunakan pada akhir pola.) Sama dengan \_^
itu berarti awal dari sebuah garis dan dapat digunakan di mana saja di dalam pola. Jadi, polanya cocok dengan garis kosong, baris baru, dan lagi garis kosong. Lihat halaman bantuan regex Vim .
:g/^$/,/./-j
cara menghapus semua baris kosong
:%s,\n\n,^M,g
(lakukan ini beberapa kali menggunakan semua baris kosong hilang)
cara menghapus semua baris kosong meninggalkan SINGLE baris kosong
:%s,\n\n\n,^M^M,g
(lakukan ini beberapa kali)
cara menghapus semua baris kosong meninggalkan DUA baris kosong PADA MAKSIMUM,
:%s,\n\n\n\n,^M^M^M,g
(lakukan ini beberapa kali)
untuk memasukkan ^ M, saya harus mengontrol-Q dan kontrol-M di windows
\r
sebagai pengganti Ctrl-M
.
Bagaimana tentang:
:g/^[ \t]*$/d
bekerja dengan perl di vim:
:%!perl -pi -e s/^\s*$//g
chomp
juga melakukan pekerjaan?
Ini bekerja untuk saya
:%s/^\s*$\n//gc
:%s/^\n//gc
Fungsi ini hanya menghapus dua atau lebih baris kosong, letakkan baris di bawah ini di vimrc Anda, lalu gunakan \ d untuk memanggil fungsi
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>
Saya mencoba beberapa jawaban di halaman ini, tetapi banyak dari mereka tidak bekerja untuk saya. Mungkin karena saya menggunakan Vim pada Windows 7 (jangan mengejek, kasihan padaku: p)?
Inilah yang termudah yang saya temukan yang berfungsi pada Vim di Windows 7:
:v/\S/d
Berikut jawaban yang lebih panjang di Vim Wikia: 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
tempel
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
di .vimrc Anda, lalu mulai ulang vim Anda. jika Anda menggunakan perintah: 5,12DBL itu akan menghapus semua baris kosong antara baris ke-5 dan ke-12. Saya pikir jawaban saya adalah jawaban terbaik!
Jika ada sesuatu yang menggandakan garis teks Anda maka perintah ini akan menghapus spasi ganda dan menggabungkan garis kosong berulang yang sudah ada menjadi satu baris kosong. Ini menggunakan pembatas sementara ^^^ pada awal baris jadi jika ini berbenturan dengan konten Anda pilih yang lain. Baris yang hanya berisi spasi putih dianggap kosong.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Ini bekerja untuk saya:
:%s/^[^a-zA-Z0-9]$\n//ig
Ini pada dasarnya menghapus semua baris yang tidak memiliki angka atau huruf. Karena semua item dalam daftar saya memiliki surat, itu menghapus semua baris kosong.