Есть ли какой-либо параметр для vimrc, который изменяет разрешения, которые он устанавливает для файла, если он создает файл? Например, если я создаю файл сейчас, это 664, но я бы хотел, чтобы по умолчанию было 755. Кто-нибудь знает настройки, которые я могу установить в vimrc для этого?
5 ответов
Вы не можете сделать это в вашем .vimrc, но если вы правильно настроите umask в среде, где запускается Vim, вы можете (в основном) выполнить то, что вы хотите. См. Статью о Википедии.
Umask не будет по умолчанию исполняемым для файлов (если только программа, создающая файл, не запрашивает разрешения на выполнение при создании), но будет работать с каталогами. Однако, даже если вы могли бы, jjlin правильно, вы никогда не должны по умолчанию использовать исполняемые файлы; изменить его только по мере необходимости. Это легко сделать, выполнив что-то вроде " :!chmod a+x %
"изнутри Vim.
По умолчанию файлы не должны быть исполняемыми, поэтому даже если в vim
есть такая функция, ее не следует использовать. Установите исполняемый бит на индивидуальной основе.
Как уже указывалось, вы никогда не должны создавать файлы с исполняемым битом, установленным по умолчанию. Стандартный механизм установки так называемых масок создания файлов контролируется umask
. Команда umask
может использоваться для просмотра и установки этих значений для текущей среды. Однако вам нужно будет устанавливать исполняемый бит в ваших файлах только тогда, когда это действительно необходимо - при написании сценариев и тому подобного. Так что вам лучше создать, например, функцию bash
wrappy, чтобы делать именно то, что вы хотите:
vimx() { vim "$@" && chmod +x "$@"; };
Вставьте это в файл ~/.bashrc
и запустите source ~/.bashrc
. Теперь при каждом запуске vimx
файл будет сохранен с установленным исполняемым битом.
Если вы просто хотите выполнить тестовый запуск открытого файла (без +x
разрешений), вы можете просто запустить следующую команду изнутри vim
чтобы протестировать ваш скрипт (здесь скрипт bash
):
:!bash %
Если вы заинтересованы в создании недавно созданного Unix-стиля #!
Файлы сценариев исполняются при первом их сохранении, а затем может оказаться полезным плагин Тима Поупа vim-eunuch . Он включает некоторые (недокументированные †) «автокоманды», которые будут выполнять chmod +x
для нового файла, первая строка которого начинается с #!
(например, #!/bin/sh
) сразу после сохранения в первый раз.
† Недокументированные в том смысле, что они не упомянуты в файле README.
Как написали другие, вы не должны просто устанавливать разрешение на выполнение для каждого файла, который вы пишете. С другой стороны, если вы создаете новый файл на каком-либо языке сценариев, вы, вероятно, захотите его выполнить, так почему бы не сэкономить несколько нажатий клавиш.
Чтобы автоматически сделать новые сценарии оболочки исполняемыми вами, поместите следующее в файл ~/.vim/after/ftplugin/sh.vim.
au BufWriteCmd <buffer> call s:BufWrite(expand("<afile>"))
function s:BufWrite(file)
if v:cmdbang == 1
let bang = "!"
else
let bang = ""
endif
if glob(a:file) != ""
exe 'w'.bang a:file
else
try
exe 'w'.bang a:file
finally
exe '!chmod u+x' a:file
endtry
endif
endfunction