Действительно ли плагин netrw Vim отображает содержимое файла каталога?

Этот вопрос кажется заброшенным, так как он больше не обновлялся, но я все равно попробую: Я видел довольно много где происходили чрезмерные прерывания, замедляющие работу машины. Это можно проверить с помощью grep. -r / sys / firmware / acpi / interrupts / .

По теме: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/887793 https://bugzilla.kernel.org/show_bug.cgi ? id = 53071 https://forum.ubuntuusers.de/topic/kworker-cpu-load/ (немецкий)

1
06.08.2016, 14:48
1 ответ

Чтение каталога делает на самом деле не бывает в виде файла. Это происходит с системным вызовом readdr . См. man 2 readdir для старой реализации как чистого системного вызова и man 3 readdir для оболочки (пожалуйста, не используйте старую реализацию).

Однако netrw Vim ничего подобного не выполняет. Он просто вызывает ls или выполняет подстановку (прочтите ниже, чтобы понять, когда он выполняет одно, а когда другое) и анализирует вывод этого.

При настройке netrw у вас есть параметры для вызова ls в удаленных системах . Вы можете установить команду листинга в вашем vimrc для SSH и FTP-соединений следующим образом (это значения по умолчанию):

let g:netrw_list_cmd = 'ssh HOSTNAME ls -Fa'
let g:netrw_ftp_list_cmd = 'ls -lF'

(Вы даже можете установить это значение, отличное от ls для FTP-системы, в которых нет ls , да, есть некоторые, редкие, у которых его нет.)

Для локальных списков netrw выполняет подстановку, а затем вызывает getftype () для украшения файла ( / для каталогов, @ для ссылок и т. д.). В autoload / netrw.vim в процедуре s: LocalListing () выполняется следующее:

let dirname    = b:netrw_curdir
let dirnamelen = strlen(b:netrw_curdir)
let filelist   = s:NetrwGlob(dirname,"*",0)  " here is the globbing of `*`
let filelist   = filelist + s:NetrwGlob(dirname,".*",0)  " and here `.*`

И затем getftype () вызывается для каждого файла в filelist .

В общем, netrw полагается на тот факт, что Vim имеет функцию glob () , а Vim, в свою очередь, выполняет вызов glob ( человек 3 шара ).

1
27.01.2020, 23:47

Теги

Похожие вопросы