Come modificare l'autorizzazione del file da vi
Domanda
A volte apro un file di sola lettura in vi, dimenticando di fare chmod + w
prima di aprirlo. C'è un modo per cambiare il file da vi?
Qualcosa come ! r chmod + w [nome file]
?
Esiste una scorciatoia per fare riferimento al file attualmente aperto senza scrivere il suo nome lungo?
Soluzione
Usa solo
:!chmod +w %
in modalità comando. % verrà sostituito dal nome del file corrente.
Altri suggerimenti
Se hai i diritti per scrivere sul file, puoi semplicemente usare il punto esclamativo per forzarlo:
:w!
Se non hai i diritti e devi cambiare utente, ma desideri comunque scrivere nel file, a volte potresti scegliere qualcosa come
:w !sudo tee %
So che questo è un vecchio post, ma con Vim Version8 è stata inclusa una funzione con la quale è possibile modificare le autorizzazioni dei file.
Secondo il file version8.txt:
setfperm () imposta le autorizzazioni di un file
Questa funzione può quindi essere richiamata tramite " call " comando in Vim.
Questo è fatto come segue:
:call setfperm("file name","permissions")
La struttura delle " autorizzazioni " stringa ha la stessa forma descritta nella documentazione di Vim:
getfperm ({fname}) getfperm () Il risultato è una stringa, ovvero lettura, scrittura ed esecuzione autorizzazioni per il file specificato {fname}. Se {fname} non esiste o la sua directory non può essere letta, un viene restituita una stringa vuota. Il risultato è nella forma "rwxrwxrwx", in cui ciascun gruppo di & Quot; rwx " le bandiere rappresentano, a loro volta, le autorizzazioni del proprietario del file, il gruppo a cui appartiene il file e altri utenti. Se un utente non dispone di un'autorizzazione specifica, il flag per questo viene sostituito con la stringa " - " ;. Esempio: : echo getfperm (" / etc / passwd ") Si spera che questo (dal punto di vista della sicurezza) venga visualizzato la stringa " rw-r - r - " o anche " rw ------- " ;.
Un esempio minimo:
:call setfperm("foo.txt","rwxrwxrwx")
Questo aggiunge permessi di lettura, scrittura ed esecuzione a " foo.txt " file nella directory corrente.
Hai provato
!chmod +w %
% rappresenta il nome file corrente.
Puoi anche mappare una chiave come Ctrl-W.
:map <C-w> :!chmod +w %<CR>
Si noti che si digita Ctrl-V Ctrl-M per ottenere il <CR>
Dopo aver modificato il file con vim, premi " esc " e quindi ": " ;. Quindi digitare il comando seguente:
w !sudo tee %
Quindi premi " Inserisci " ;. Quindi digitare
:q!
per uscire correttamente dall'editor.
:!chmod <perms> <file>
e se vi non vuole ancora scriverlo,
:se cpo-=W