Tôi có thể chạy lệnh nào để xóa các dòng trống trong Vim?
Tôi có thể chạy lệnh nào để xóa các dòng trống trong Vim?
Câu trả lời:
:g/^$/d
:g
sẽ thực thi một lệnh trên các dòng khớp với biểu thức chính quy. Regex là 'dòng trống' và lệnh là :d
(xóa)
:%!cat -s
có thể là sự lựa chọn ..
Tìm thấy nó, đó là:
g/^\s*$/d
Nguồn: Sức mạnh của g tại vim wikia
Giải thích ngắn gọn về
:g
:[range]g/pattern/cmd
Điều này hoạt động trên [phạm vi] được chỉ định (toàn bộ tệp mặc định), bằng cách thực hiện lệnh Ex cmd cho mỗi mẫu khớp dòng (lệnh Ex là một bắt đầu bằng dấu hai chấm như
:d
để xóa). Trước khi thực hiện cmd , ".
" được đặt thành dòng hiện tại.
:v/./d
hoặc là
:g/^$/d
hoặc là
:%!cat -s
Những điều sau đây có thể được sử dụng để chỉ xóa nhiều dòng trống (giảm chúng thành một dòng trống duy nhất) và giữ nguyên các dòng trống duy nhất:
:g/^\_$\n\_^$/d
\_$
có nghĩa là điểm cuối của dòng có thể được sử dụng bên trong một mẫu ( $
chỉ có thể được sử dụng ở cuối mẫu.) Tương tự như \_^
vậy có nghĩa là bắt đầu của một dòng và có thể được sử dụng ở bất cứ đâu trong mẫu. Vì vậy, mẫu phù hợp với một dòng trống, một dòng mới và một lần nữa một dòng trống. Xem trang trợ giúp regim Vim .
:g/^$/,/./-j
làm thế nào để loại bỏ tất cả các dòng trống
:%s,\n\n,^M,g
(làm điều này nhiều lần sử dụng tất cả các dòng trống đã biến mất)
Làm thế nào để loại bỏ tất cả các dòng trống để lại dòng trống SINGLE
:%s,\n\n\n,^M^M,g
(làm điều này nhiều lần)
làm thế nào để loại bỏ tất cả các dòng trống để lại HAI dòng trống AT MAXIMUM,
:%s,\n\n\n\n,^M^M^M,g
(làm điều này nhiều lần)
để nhập ^ M, tôi phải điều khiển-Q và control-M trong windows
\r
thay thế Ctrl-M
.
Làm thế nào về:
:g/^[ \t]*$/d
làm việc với perl trong vim:
:%!perl -pi -e s/^\s*$//g
chomp
làm công việc?
Điều này làm việc cho tôi
:%s/^\s*$\n//gc
:%s/^\n//gc
Hàm này chỉ xóa hai hoặc nhiều dòng trống, đặt các dòng bên dưới vào vimrc của bạn, sau đó sử dụng \ d để gọi hàm
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>
Tôi đã thử một vài câu trả lời trên trang này, nhưng rất nhiều trong số chúng không hiệu quả với tôi. Có lẽ bởi vì tôi đang sử dụng Vim trên Windows 7 (đừng chế giễu, hãy thương hại tôi: p)?
Đây là cách dễ nhất mà tôi thấy hoạt động trên Vim trong Windows 7:
:v/\S/d
Đây là câu trả lời dài hơn trên Vim Wikia: http://vim.wikia.com/wiki/Remove_unwocate_empty_lines
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line
dán
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
trong .vimrc của bạn, sau đó khởi động lại vim của bạn. nếu bạn sử dụng lệnh: 5,12DBL, nó sẽ xóa tất cả các dòng trống giữa hàng thứ 5 và hàng thứ 12. Tôi nghĩ rằng câu trả lời của tôi là câu trả lời tốt nhất!
Nếu một cái gì đó đã gấp đôi dòng văn bản của bạn thì lệnh này sẽ loại bỏ khoảng cách gấp đôi và hợp nhất các dòng trống lặp lại có sẵn thành một dòng trống duy nhất. Nó sử dụng một dấu phân cách tạm thời của ^^ ^ khi bắt đầu một dòng vì vậy nếu điều này đụng độ với nội dung của bạn, hãy chọn một cái gì đó khác. Các dòng chỉ chứa khoảng trắng được coi là trống.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Điều này làm việc cho tôi:
:%s/^[^a-zA-Z0-9]$\n//ig
Về cơ bản, nó xóa tất cả các dòng không có số hoặc chữ cái. Vì tất cả các mục trong danh sách của tôi đều có chữ cái, nó đã xóa tất cả các dòng trống.