Vim criando arquivos

1

Existe alguma configuração para o vimrc que altere as permissões definidas no arquivo se ele estiver criando um arquivo? Por exemplo, se eu criar um arquivo agora, é 664, mas gostaria que o padrão fosse 755. Alguém sabe da configuração que eu posso colocar no vimrc para fazer isso?

csteifel
fonte

Respostas:

4

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.

Heptite
fonte
2

Os arquivos não devem ser executáveis ​​por padrão, portanto, mesmo se vimtivesse esse recurso, você não deveria usá-lo. Defina o bit executável caso a caso.

jjlin
fonte
1

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 umaskcomando 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 bashfunção de empacotamento para fazer exatamente o que você deseja:

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

Coloque isso no seu ~/.bashrcarquivo e execute source ~/.bashrc. Agora, sempre que você executar vimxo arquivo será salvo com o conjunto de bits executável.

Se você deseja apenas executar um teste em um arquivo aberto (sem +xpermissões), basta executar o seguinte comando de dentro vimpara testar seu script (aqui bashscript):

:!bash %

fonte
vimx() { touch "$@" ; chmod +x "$@" ; vim "$@" ; }
Loxaxs
Ouvimx() { echo '#!/' >> "$1" ; chmod +x "$1" ; vim "$1" ; }
loxaxs
0

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

garyjohn
fonte
0

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 +xem 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.

Chris Johnsen
fonte