Respostas:
Você não pode fazer isso no seu .vimrc, mas se você configurar o umask corretamente no ambiente em que o Vim é iniciado, poderá (principalmente) realizar o que deseja. Veja o artigo umask da Wikipedia .
O Umask não assumirá o padrão executável nos arquivos (a menos que o programa que cria o arquivo solicite permissão de execução na criação), mas o fará nos diretórios. No entanto, mesmo se você puder, jjlin está correto, você nunca deve usar o executável em arquivos; altere-o apenas conforme necessário. Isso é facilmente alcançado fazendo algo como " :!chmod a+x %
" a partir do Vim.
Como já apontado, você nunca deve criar arquivos com o bit executável definido por padrão. O mecanismo padrão para definir as chamadas máscaras de criação de arquivo é controlado por umask
. O umask
comando pode ser usado para visualizar e definir esses valores para o ambiente atual. No entanto, você só precisará definir o bit executável em seus arquivos sempre que isso for realmente necessário - ao escrever scripts e tal. Então, seria melhor criar uma bash
função de empacotamento para fazer exatamente o que você deseja:
vimx() { vim "$@" && chmod +x "$@"; };
Coloque isso no seu ~/.bashrc
arquivo e execute source ~/.bashrc
. Agora, sempre que você executar vimx
o arquivo será salvo com o conjunto de bits executável.
Se você deseja apenas executar um teste em um arquivo aberto (sem +x
permissões), basta executar o seguinte comando de dentro vim
para testar seu script (aqui bash
script):
:!bash %
vimx() { echo '#!/' >> "$1" ; chmod +x "$1" ; vim "$1" ; }
Como outros escreveram, você não deve apenas definir a permissão de execução em todos os arquivos que escreve. Por outro lado, se você estiver criando um novo arquivo em alguma linguagem de script, presumivelmente deseja executá-lo; portanto, por que não salvar algumas teclas.
Para tornar automaticamente novos scripts de shell executáveis por você, coloque o seguinte no seu arquivo ~ / .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
Se você estiver interessado em tornar #!
arquivos de scripts recém-criados no estilo Unix executáveis quando você os salvar pela primeira vez, poderá achar útil o plugin vim-eunuch de Tim Pope . Ele inclui alguns (não documentado † “autocomandos”) que irá fazer um chmod +x
em um novo arquivo cuja primeira linha começa com #!
(por exemplo #!/bin/sh
) imediatamente após salvá-lo pela primeira vez.
† Não documentado no sentido de que eles não são mencionados no arquivo LEIA-ME.
vimx() { touch "$@" ; chmod +x "$@" ; vim "$@" ; }