Eu já procurei muito por isso e todas as respostas são sobre o Vim no Linux. Existe uma maneira de salvar um arquivo somente leitura diretamente do Vim no Windows?
Eu já procurei muito por isso e todas as respostas são sobre o Vim no Linux. Existe uma maneira de salvar um arquivo somente leitura diretamente do Vim no Windows?
Respostas:
Como em outras versões do vi / vim, você pode usar :w!
para forçar a gravação, desde que tenha permissões para substituir a propriedade somente leitura.
Por exemplo, se você definiu o arquivo como somente leitura, o procedimento acima funcionará. Se o próprio Windows ou um administrador o definiu como somente leitura, você precisará de outra opção.
Como o @ dash-tom-bang comentou, um bom exemplo está em Arquivos de Programas, onde os arquivos são protegidos por padrão. Este artigo da base de conhecimento da Microsoft explica como isso funciona na prática.
gvim
como Run as Administrator
? Talvez fosse resolver o seu propósito ... ou de outra forma, pode ser possível que o arquivo está sendo bloqueado por outra aplicação ...
run as administrator
para concluir seu subprocesso envolvendo tarefas administrativas a serem executadas ... Consulte windows.microsoft.com/en-in/windows/… .... caso contrário, desabilite as UAC
configurações ... .
:w!
não voa e você deve executar o gVim como administrador ou o Vim em um prompt de comando que foi executado como administrador.
Você pode usar o meu plugin SudoEdit .
Há outra possibilidade que não foi abordada nas outras respostas: o vim se recusará a salvar um arquivo se ele estiver aberto e bloqueado por outro aplicativo do Windows. Muitos aplicativos comuns do Windows (Office, por exemplo) bloqueiam os arquivos que eles abrem. Se este for o problema, não é necessário mexer nas permissões ou: w! Ajudará você. Você simplesmente precisa fechar o arquivo no outro aplicativo e poderá salvá-lo do vim. É lamentável que o vim não sinalize claramente essa situação para o usuário.
Para win7: Iniciar> Executar> Cmd (como Admin) e execute estes comandos para tornar a árvore de diretórios gravável por admin:
cd parent/folder
:: /f file, /a admin, /r recurse, /d y = nopromt
takeown /F . /A /R /D Y > nul:
:: /t /q /c .. traverse quiet continue
icacls . /t /q /c /reset
icacls . /t /q /c /grant :r Everyone:F
icacls . /t /q /c /setowner Administrators
Execute o gVim como administrador, por exemplo, clicando com o botão direito do mouse ou usando o atalho do teclado Shift+ F10no atalho do gVim no menu Iniciar e escolhendo Executar como administrador .
Abra o arquivo que você deseja editar e salve as alterações usando :w
normalmente.
Eu uso o gvim para editar C:\Windows\System32\drivers\etc\hosts
depois de definir suas permissões para "controle total", o truque envolveu definir "herdar permissões" para "não" primeiro. Então começou a trabalhar sem o "!". Eu também corri, attrib
mas isso não foi eficaz.
:sudoedit
funciona no Windows? Desculpe, não posso verificar.
Digite :f "newfilename"
no modo de comando e, ao sair, :w
salve com o novo nome de arquivo.
:w!
não está funcionando. Ele diz que não pode abrir o arquivo para leitura. Embora eu possa fazer exatamente a mesma coisa fora do vim.