Come posso salvare un file di sola lettura in Vim per Windows?


8

L'ho già cercato molto e ogni risposta riguarda Vim in Linux. C'è un modo per salvare un file di sola lettura direttamente da Vim in Windows?

Risposte:


11

Come su altre versioni vi / vim, è possibile utilizzare :w!per forzare la scrittura, purché si disponga delle autorizzazioni per sovrascrivere la proprietà di sola lettura.

Ad esempio, se il file è stato impostato in sola lettura, quanto sopra funzionerà. Se Windows stesso o un amministratore lo hanno impostato in sola lettura, avrai bisogno di un'altra opzione.

Come ha commentato @ dash-tom-bang, un buon esempio è in Programmi, in cui i file sono protetti per impostazione predefinita. Questo articolo della Microsoft Knowledge Base spiega come funziona in pratica.


Il mio account è impostato come amministratore ma :w!non funziona. Dice che non è possibile aprire il file per la lettura. Anche se posso fare esattamente la stessa cosa al di fuori di Vim.
Durga Swaroop,

1
@DurgaSwaroop: hai provato ad aprire gvimcome Run as Administrator? Forse risolverebbe il tuo scopo ... o altrimenti potrebbe essere possibile che il file sia bloccato da un'altra applicazione ...
Cylian,

1
@DurgaSwaroop: il processo principale deve essere run as administratorquello di completare il suo processo secondario che comporta compiti amministrativi da svolgere ... Dai un'occhiata a windows.microsoft.com/en-in/windows/… .... altrimenti disabilita le UACimpostazioni ... .
Cylian

1
La modifica dei file all'interno della gerarchia dei file di programma, ad esempio, :w!non vola ed è necessario eseguire gVim come amministratore o eseguire Vim in un prompt dei comandi che è stato eseguito come amministratore.
dash-tom-bang,

1
Grazie @ dash-tom-bang, ho aggiunto riferimento a quel buon esempio nella mia risposta.
rolinger,

2

Puoi usare il mio plugin SudoEdit .


Funziona correttamente su Windows? Nel file Leggimi dice che probabilmente non lo farà.
Durga Swaroop,

Dai miei test dovrebbe. Tuttavia, non uso Windows spesso e non ho mai ricevuto feedback per questo. Questa è la ragione del readme. Dipende anche dal metodo utilizzato.
Christian Brabandt,

2

C'è un'altra possibilità che non è stata affrontata nelle altre risposte: vim rifiuterà di salvare un file se è aperto e bloccato da un'altra applicazione Windows. Molte normali app di Windows (ad esempio Office) bloccano i file che aprono. Se questo è il problema, nessuna quantità di messaggi con autorizzazioni o: w! ti aiuterò. Devi semplicemente chiudere il file nell'altra app, e quindi sarai in grado di salvarlo da VIM. È un peccato che vim non segnali chiaramente questa situazione all'utente.


0

Per win7: Start> Esegui> Cmd (come Admin) ed esegui questi comandi per rendere scrivibile l'albero dir dall'amministratore:

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 

0

Esegui gVim come amministratore, ad esempio facendo clic con il pulsante destro del mouse o utilizzando la scorciatoia da tastiera Shift+ F10su, il collegamento gVim nel menu Start e selezionando Esegui come amministratore .

Apri il file che desideri modificare e salva le modifiche usando :wnormalmente.


0

Uso gvim per modificare C:\Windows\System32\drivers\etc\hostsdopo aver impostato le sue autorizzazioni su "pieno controllo", il trucco ha comportato prima l'impostazione "eredita autorizzazioni" su "no". Quindi ha iniziato a funzionare senza mai il "!". Avevo anche corso attribma non era efficace.


Doest :sudoeditfunziona su Windows? Scusa, non posso controllare.
Biggybi

-1

Digitare :f "newfilename"in modalità comando quindi quando si lascia :wper salvare con il nuovo nome di file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.