В Vim, когда я записываю копию текущего буфера в новый файл, используя :w [filename]
, кажется, что Vim использует права доступа к файлу по умолчанию (т.е. устанавливаемые с помощью umask или чего-либо еще) для нового файла. Если текущий буфер был загружен из существующего файла, то не должно ли «правильное» поведение дублировать разрешения из этого файла? Например, если я редактирую исполняемый файл и пишу новую копию файла, почему Vim не пишет новый исполняемый файл ? Есть ли способ заставить Vim вести себя так, как я описываю, кроме как делать что-то вроде ! chmod --reference % [newfilename]
после написания нового файла?
unix
vim
file-permissions
Кайл Стрэнд
источник
источник
chmod
за вас. AFAIK, vim не имеет этого встроенного.Ответы:
Вы могли бы сделать что-то вроде этого. Во-первых, запишите имя исходного файла.
Затем при сохранении нового файла измените его разрешения так же, как и у исходного файла.
Просто поместите обе эти автокоманды в ваш ~ / .vimrc.
источник
echo system(
т.silent echo system(
Д. На т. Д. Это позволяет избежать зависания «нажмите ENTER для продолжения».call system(...
ничего не печатать на дисплей, но я пытался избежать проблемы с тем, что команда молча не работает. Если вы не думаете, что он когда-нибудь потерпит неудачу или скорее будет жить со случайной неудачей, чем с досадойPress ENTER...
, то я согласен с вашим предложением. Тем не менее, я думаю, что лучшим решением было бы написать функцию, которая фиксирует выходные данные system () и отображает их только в том случае, если она не пустая. Я сделал это в плагинах, и это работает довольно хорошо.Press ENTER,
, поэтому я думаю, что я буду либо придерживаться,silent
либо использоватьcall
. Еще раз спасибо за предложения!Убедитесь, что в файле нет несохраненных изменений, а затем используйте его
cp
для создания копии. Это приведет к копии с теми же разрешениями, что и оригинал.источник