Vim ожидает подключения к реальному терминалу и отправляет соответствующие коды.
Сбросить терминал с помощью
reset
Самый простой обходной путь:
locate 50local.policy | xargs gvim
Обоснование GUI VIM не требует терминала
В противном случае:
vim $(locate 50local.policy)
Обоснование vim запускается непосредственно подключенным к терминалу (вместо дочернего процесса в xargs
, который, в свою очередь, выполняется в подоболочке с stdin / stdout, подключенным к каналам вместо терминала). Это как сказать
vim /usr/some/dir/50local.policy /usr/local/some/dir/50local.policy
С другой стороны
Вы можете избежать проблемы, не запуская vim с аргументами, а добавляя аргументы из vim! На самом деле Vim намного лучше управляет оболочками, чем оболочки в управлении оболочкой.
Пока в vim:
:args `locate 50local.policy`
:rewind
Устанавливает список аргументов для файлов, возвращаемых командой shell между галочками; : перемотка переходит к первому файлу из этого списка.
Если вы редактировали несколько совпадений, попробуйте это:
:w|next
Эта последовательность команд (разделенных |) записывает текущий буфер в файл, а затем переходит к следующему файлу в списке аргументов.