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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top