1

Есть ли какой-либо параметр для vimrc, который изменяет разрешения, которые он устанавливает для файла, если он создает файл? Например, если я создаю файл сейчас, это 664, но я бы хотел, чтобы по умолчанию было 755. Кто-нибудь знает настройки, которые я могу установить в vimrc для этого?

5 ответов5

4

Вы не можете сделать это в вашем .vimrc, но если вы правильно настроите umask в среде, где запускается Vim, вы можете (в основном) выполнить то, что вы хотите. См. Статью о Википедии.

Umask не будет по умолчанию исполняемым для файлов (если только программа, создающая файл, не запрашивает разрешения на выполнение при создании), но будет работать с каталогами. Однако, даже если вы могли бы, jjlin правильно, вы никогда не должны по умолчанию использовать исполняемые файлы; изменить его только по мере необходимости. Это легко сделать, выполнив что-то вроде " :!chmod a+x % "изнутри Vim.

2

По умолчанию файлы не должны быть исполняемыми, поэтому даже если в vim есть такая функция, ее не следует использовать. Установите исполняемый бит на индивидуальной основе.

1

Как уже указывалось, вы никогда не должны создавать файлы с исполняемым битом, установленным по умолчанию. Стандартный механизм установки так называемых масок создания файлов контролируется umask . Команда umask может использоваться для просмотра и установки этих значений для текущей среды. Однако вам нужно будет устанавливать исполняемый бит в ваших файлах только тогда, когда это действительно необходимо - при написании сценариев и тому подобного. Так что вам лучше создать, например, функцию bash wrappy, чтобы делать именно то, что вы хотите:

vimx() { vim "$@" && chmod +x "$@"; };

Вставьте это в файл ~/.bashrc и запустите source ~/.bashrc . Теперь при каждом запуске vimx файл будет сохранен с установленным исполняемым битом.

Если вы просто хотите выполнить тестовый запуск открытого файла (без +x разрешений), вы можете просто запустить следующую команду изнутри vim чтобы протестировать ваш скрипт (здесь скрипт bash ):

:!bash %
0

Если вы заинтересованы в создании недавно созданного Unix-стиля #! Файлы сценариев исполняются при первом их сохранении, а затем может оказаться полезным плагин Тима Поупа vim-eunuch . Он включает некоторые (недокументированные ) «автокоманды», которые будут выполнять chmod +x для нового файла, первая строка которого начинается с #! (например, #!/bin/sh) сразу после сохранения в первый раз.

Недокументированные в том смысле, что они не упомянуты в файле README.

0

Как написали другие, вы не должны просто устанавливать разрешение на выполнение для каждого файла, который вы пишете. С другой стороны, если вы создаете новый файл на каком-либо языке сценариев, вы, вероятно, захотите его выполнить, так почему бы не сэкономить несколько нажатий клавиш.

Чтобы автоматически сделать новые сценарии оболочки исполняемыми вами, поместите следующее в файл ~/.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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .