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 systemcho 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.
\ndò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\nloại kết thúc dòng ...
\nđó trước khi trả lại chúng.
callcú pháp kỳ lạ ? Tại sao không chỉ đưa raChompmột tham số được gọistringvà sau đó chuyểna:stringđếnsubstitute?