2010-08-17 2 views
1

У меня есть каталог windows (U:\S), который содержит файлы, которые не должны быть изменен. Их бит для чтения не может быть установлен, поэтому они должны оставаться доступными для записи.Правильный шаблон для автокоманды VIM?

Как я должен немного изучить содержимое файла с VIM, я хочу убедиться, что я случайно не изменяю его.

Итак, я ставлю следующую строку в мой .vimrc conifugration файл:

autocmd InsertEnter u:/s/* call confirm("File should not be changed") 

который казалось работать нормально.

Но тогда, у меня есть также каталог с именем U:\supportTerminal, который содержит файлы , что я должны изменения. Когда я редактирую файл в этом каталоге, шаблон файла u:/s/* по какой-то причине совпадает с моим предупреждением.

Я пытался играть с какой-то шаблон, но я не нашел ничего, что соответствует только внутри и: \ s, но не в пределах и: \ supportTerminal

Итак, как же я мог идти о том, что я хочу?

+0

Я не знаю, почему шаблон соответствует второму каталогу, но вы можете использовать 'set readonly' (действие: BufRead) вместо' call confirm (...) 'в соответствии с вашим описанием. – tux21b

+0

Я не могу этого сделать, файлы должны оставаться в записи * в любое время *. Я также склонен думать, что 'set readonly' будет одинаково запущен для редактирования файлов в u: \ supportTerminal. –

+0

О, я вижу, 'set readonly' фактически не устанавливает только бит чтения файловой системы, а внутренний. Хорошо, в этом случае это сработает, если шаблон правильно сопоставлен. –

ответ

2

Это сообщение об ошибке, которую вы должны сообщить об ошибке vim-dev at vim.org. В linux у меня нет такого поведения: он хорошо сочетается.

В качестве временного решения,

:au BufRead u:/s/* set readonly 
:au! BufRead u:/supportTerminal/* 

должен сначала сделать общее правило, а затем удалить один реж как исключение. Не уверен, правильно ли это работает в Windows GVim. Если это не так, другой хак будет:

:au BufRead u:/supportTerminal/* set noreadonly 

PS: Как уже упоминалось в предыдущих комментариях, устанавливая собственные настройки VIM в readonly работает лучше, чтобы предотвратить случайные изменения. Пользователь не может :write файлов с флагом RO, но его можно обойти, установив noreadonly, если необходимо.

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