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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top