Vim преобразует `\ n` в` \ r \ n` при использовании: redir для перенаправления вывода внешней команды - PullRequest
0 голосов
/ 30 марта 2019

При перенаправлении вывода команды в переменную с помощью :redir кажется, что все \n заменяются на \r\n.

Например, при запуске

redir => m
silent !echo -e "Hallo\nCiao"
redir END
put =m

затем новые строки, вставленные в буфер, заканчиваются ^M, что указывает на символ возврата каретки (\r).

Однако, похоже, это происходит только при выполнении внешней команды.Если вместо команды echo, предоставленной оболочкой, мы используем внутреннюю команду Vim echo, то есть

redir => m
" Note the missing `!` in front of `echo`
silent echo "Hallo\nCiao"
redir END
put =m

, тогда строки не заканчиваются ^M, т.е.возврат каретки не вставляется.

Кто-нибудь знает, как я могу предотвратить преобразование Vim \n в \r\n?(Я нахожусь на Linux.)

1 Ответ

1 голос
/ 31 марта 2019

Вместо !cmd вы можете использовать system(cmd), который возвращает результат команды оболочки в виде строки:

redir => m
    echo system('echo -e "Hallo\nCiao"')[:-2]
redir END

[:-2] удаляет последний EOL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...