символ ^ @ в vim - PullRequest
       7

символ ^ @ в vim

4 голосов
/ 03 февраля 2012

Следующий символ появляется при просмотре моего файла в vim.

---<snip>----
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@fstalone
---<snip>-----

Файл, который я создаю, перенаправляет stdout и stderr моей утилиты, например: #./my_util > util.log 2>&1,Этот файл имеет тенденцию увеличиваться в размерах (~ 4 МБ)

  1. Что это за символ?
  2. Как от него избавиться?

Ответы [ 2 ]

14 голосов
/ 03 февраля 2012

Это нулевой символ в формате (который Vim часто использует, как вы, наверное, заметили), называемом символом каретки . По сути, вы получаете байты, полные нулей, в ваш файл.

Поскольку мы не знаем, что делает ваша утилита, если она виновна, вам нужно будет показать нам некоторый код, если вы хотите, чтобы мы помогли. В противном случае, если вы просто хотите удалить символы из вашего файла, используйте подстановку:

%s/<Ctrl-V><Ctrl-J>//g

Ctrl-V отмечает начало escape-последовательности. Также после нажатия Ctrl-J в вашей команде должно появиться ^@. Таким образом, как вы уже догадались, Ctrl-V, Ctrl-J является одной escape-последовательностью для нулевого символа.

0 голосов
/ 03 февраля 2012

^ @ появляется при попытке открыть нетекстовый файл в vim. Например, если вы открываете exe-файл или файл изображения, отображается ^ @, который является нечитаемым символом. Попытка открыть файл в каком-то другом редакторе и увидеть результат

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