Câu trả lời:
Bạn có thể sử dụng substitute()
hoặc xác định hàm:
function! Chomp(string)
return substitute(a:string, '\n\+$', '', '')
endfunction
Biến thể này sẽ gọi system
cho bạn và sau đó kiểm tra kết quả:
function! ChompedSystem( ... )
return substitute(call('system', a:000), '\n\+$', '', '')
endfunction
(Chức năng này cũng có sẵn trong plugin thư viện ingo của tôi dưới dạng ingo#system#Chomped
.)
Chomp()
đang chuyển bất kỳ đối số nào mà nó nhận được system()
, tước bỏ dòng mới từ đầu ra của nó và trả về đó.
system()
có một {input}
đối số tùy chọn và điều này xử lý bất kỳ trong số này một cách khái quát. Nếu bạn không cần điều này, chỉ cần làm theo cách thông thường.
let @z = systemlist('date')[0]
xóa dòng mới cho bạn.
\n
dòng mới. systemlist()
chỉ loại bỏ \n
, không phải bất kỳ \r
.
Christian Brabandt đã liệt kê một số phương pháp khác nhau trên superuser.com.
Tôi thích cái này vì nó ngắn:
let @z = system("date")[:-2]
\r\n
loại kết thúc dòng ...
\n
đó trước khi trả lại chúng.
call
cú pháp kỳ lạ ? Tại sao không chỉ đưa raChomp
một tham số được gọistring
và sau đó chuyểna:string
đếnsubstitute
?