No Vim, quando escrevo uma cópia do buffer atual em um novo arquivo usando :w [filename]
, parece que o Vim usa as permissões de arquivo padrão (isto é, definidas por umask ou qualquer outra coisa) para o novo arquivo. Se o buffer atual foi carregado de um arquivo existente, o comportamento "certo" não deveria ser duplicar as permissões desse arquivo? Por exemplo, se estou editando um arquivo executável e escrevendo uma nova cópia do arquivo, por que o Vim não grava um novo executável ? Existe alguma maneira de forçar o Vim a se comportar da maneira que estou descrevendo, além de fazer algo como ! chmod --reference % [newfilename]
depois de escrever o novo arquivo?
unix
vim
file-permissions
Kyle Strand
fonte
fonte
chmod
por você. AFAIK, vim não têm esta embutido.Respostas:
Você poderia fazer algo assim. Primeiro, capture o nome do arquivo original.
Em seguida, quando você salvar o novo arquivo, altere suas permissões para serem as mesmas do arquivo original.
Basta colocar os dois comandos automáticos no seu ~ / .vimrc.
fonte
echo system(
etc parasilent echo system(
etc. Isso evita que o "pressione ENTER para continuar" seja interrompido.call system(...
evitado imprimir qualquer coisa na tela, mas estava tentando evitar o problema do comando falhar silenciosamente. Se você acha que isso nunca vai falhar, ou prefere conviver com uma falha ocasional do que com um incômodoPress ENTER...
, então concordo com a sua sugestão. Eu acho que uma solução melhor, no entanto, seria escrever uma função que captura a saída de system () e a repete apenas se não estiver vazia. Eu fiz isso em plugins e funciona muito bem.Press ENTER,
, então acho que vou ficar comsilent
ou usarcall
. Mais uma vez obrigado pelas sugestões!Verifique se não há alterações não salvas no arquivo e use
cp
para fazer uma cópia. Isso resultará em uma cópia com as mesmas permissões que o original.fonte