2017-02-19 5 views
1

Я пытаюсь добавить результат вызова system() в качестве заголовка для одного из подключаемых модулей (vim-startify). Команда:Избавьтесь от^@ in vim output from system (...)

system('vim --version | head -1') 

Однако, когда она распечатана имеет дополнительный символ в конце: ^@

VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Feb 12 2017 23:20:57)^@ 

enter image description here

Там есть подобный вопрос here, но он обращается файл , а не буфера.

ответ

1

Это должно дать вам то, что вы хотите:

system('vim --version | head -1 | tr -d "\n"') 

См $ man tr.

+0

это делает, спасибо – skamsie

2

Просто chomp it! ->system('whatever')[:-2], или, если вы предпочитаете что-то более надежное, вы можете применить sustitute(system_result, "\n\+$", "", "")

Примечание: в отличие от tr, это решение работает на всех платформах. Это то, что мы использовали с функцией chomp() в perl.

2

С Vim 8 (или поздних версий 7.4):

get(systemlist('vim --version'), 0) 
+0

Мы точно не нужно 'получить()' как 'systemlist()' всегда будет возвращать что-то. 'systemlist ('vim --version') [0]' было бы достаточно. В любом случае, приятно знать, что 'systemlist()' chomps завершает новую строку. Благодарю. –

+0

_ 'systemystem()' всегда будет возвращать что-то. _ - Если он не возвращает пустой список по какой-либо причине. Тогда '... [0]' является ошибкой. :) –

+0

Моя ошибка. Я думал об этом конкретном случае (либо 'vim' не найден, либо' vim -version' должен что-то возвращать). В общем случае вы совершенно правы. –

 Смежные вопросы

  • Нет связанных вопросов^_^