Відповіді:
Ви можете використовувати substitute()або визначити функцію:
function! Chomp(string)
return substitute(a:string, '\n\+$', '', '')
endfunction
Цей варіант закликає systemвас, а потім підбирає результат:
function! ChompedSystem( ... )
return substitute(call('system', a:000), '\n\+$', '', '')
endfunction
(Ця функція також доступна в моєму додатку Ingo-library як ingo#system#Chomped.)
Chomp()передає будь-які аргументи, до яких він потрапляє system(), знімаючи з нового результату останній рядок і повертаючи його.
system()має необов'язковий {input}аргумент, і це обробляє будь-яке з них загально. Якщо вам це не потрібно, просто зробіть це звичайним способом.
let @z = systemlist('date')[0]
видаляє новий рядок для вас.
\nдля нового рядка. systemlist()видаляє лише те \n, а не будь-яке \r.
Крістіан Брабандт перерахував на сайті superuser.com декілька різних методів .
Мені це подобається, тому що він короткий:
let @z = system("date")[:-2]
\r\nтип закінчень рядків ...
\nїх повернення.
callсинтаксис? Чому не просто датиChompпараметр, який називається,stringа потім перейтиa:stringдоsubstitute?