Como mudar de permissão de arquivo de dentro vi
Pergunta
Às vezes eu abrir um arquivo somente leitura no vi, esquecendo de fazer chmod +w
antes de abrir. Existe uma maneira de alterar o arquivo de dentro vi?
Algo como !r chmod +w [filename]
?
Existe um atalho para se referir ao arquivo atualmente aberto sem ortografia é longa nome?
Solução
Apenas uso
:!chmod +w %
no modo de comando. % Será substituído pelo nome do arquivo atual.
Outras dicas
Se você tem os direitos de gravação para o arquivo, então você pode simplesmente usar o ponto de exclamação para forçá-lo:
:w!
Se você não tem os direitos e necessidade de alterar utilizador, mas ainda quero escrever para o arquivo, às vezes você pode ir para algo como
:w !sudo tee %
Eu sei que este é um post antigo, mas com Vim Version8 uma função foi incluída com o qual você pode alterar as permissões de arquivo.
De acordo com o arquivo version8.txt:
setfperm () definir as permissões de um arquivo
Esta função pode ser chamado através do comando "chamada" no Vim.
Isso é feito da seguinte forma:
:call setfperm("file name","permissions")
A estrutura do "permissões" string tem a mesma forma como descrito na documentação do Vim:
getfperm ({fname}) getfperm () O resultado é uma String, que é a ler, escrever e executar permissões do arquivo dado {fname}. Se {fname} não existe ou seu diretório não pode ser lido, um string vazia é retornada. O resultado é da forma "rwxrwxrwx", onde cada grupo de "Rwx" bandeiras representam, por sua vez, as permissões do proprietário do arquivo, o grupo do arquivo pertence, e outros usuários. Se um usuário não tiver um dado permissão a bandeira para este é substituído pela cadeia "-". Exemplo: : Eco getfperm ( "/ etc / passwd") Esperamos que possa (do ponto de vista da segurança) de visualização a string "rw-r - r--" ou mesmo "rw -------"
.
Um exemplo mínimo:
:call setfperm("foo.txt","rwxrwxrwx")
Isso adiciona ler, escrever e executar permissões para o arquivo "foo.txt" no diretório atual.
Você tentou
!chmod +w %
O% representa o nome do arquivo atual.
Você também pode mapear uma chave para isso como Ctrl-W.
:map <C-w> :!chmod +w %<CR>
Note que você digite Ctrl-V Ctrl-M para obter o <CR>
Depois de editar o arquivo com o vim, pressione "ESC" e depois ":". Em seguida, digite o seguinte comando:
w !sudo tee %
Em seguida, pressione "Enter". Em seguida, digite
:q!
para sair com êxito a partir do editor.
:!chmod <perms> <file>
e se vi ainda não quer escrevê-lo,
:se cpo-=W