Come posso uscire dalla modalità di sola lettura in Vim?


38

Ho aperto un file in modalità sola lettura; c'è un modo per uscire dalla modalità di sola lettura?


Quali sono le limitazioni in modalità sola lettura che ti danno fastidio? Se è solo che vuoi scrivere il file, anche se lo apri in sola lettura, aggiungere un comando !al wcomando farà il trucco, come ha affermato Michael.
Bananguin,

1
@ user1129682 è solo l'inconveniente di ricordare di mettere un punto esclamativo dopo wogni volta che voglio salvare. heh
wrongusername

Risposte:


44

Potresti farlo:

:set noro

Ciò disattiva il flag di sola lettura, ma se il file sottostante non è ancora scrivibile da te, allora Vim non sarà ancora in grado di scrivergli.


come invertire questo e tornare a leggere solo?
Louis Hong,

2
@LouisHong Molto facilmente: :set ro.
Philip Kearns,

1
Questo è perfetto se si apre un file scrivibile con viewma si decide di modificarlo.
wisbucky

9

Puoi correre chmodda dentro vim:

:!chmod +w %

!significa eseguire un comando shell ed %è il nome file corrente. Puoi anche forzare la scrittura del file:

:w!

3

Oltre alla risposta di Michael Mrozek , puoi aggiungere una riga alla tua .vimrcche ti consenta di scrivere in un file che hai trascurato di aprire con autorizzazioni elevate:

" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null

Se il file è di sola lettura, devi solo inserire :w!!, ti verrà richiesta la password e il file verrà scritto correttamente.


2

Mentre :set norofa il lavoro, non controlla se il file è aperto da un'altra istanza di vim o aggiorna il file se modificato esternamente.

Per renderlo modificabile e verificare la presenza di file di scambio (che è l'impostazione predefinita di apertura di un file con vim) basta usare il comando edit (: help edit):

:e

Nota, se il file è stato manipolato da allora (anche al di fuori di vim), aggiornerà le modifiche nel buffer corrente (che trovo normalmente desiderabile).


1

Eccomi, anche se un po 'in ritardo, forse hai già risolto il tuo dubbio;) Non ho visto in nessuno dei commenti un modo che conosco con Vim , quindi lo aggiungo:

Dopo aver modificato un file, premi :wo :wqe visualizzi il fastidioso messaggio " E45 'è impostata l'opzione" sola lettura "(aggiungi! Per sostituire) "

L'opzione di sola lettura E45 è impostata (aggiungi! Per sovrascrivere)

Puoi digitare

:w !sudo tee %

w! sudo tee%

  • w scrive il buffer,
  • !sudo chiama la shell con sudo,
  • teereindirizza l'output vim :wdell'output con tee e
  • % è il nome file corrente

E questo dovrebbe fare il trucco. Nota che questo richiederà di ricaricare il file in vim, per ciò che devi premere L

inserisci qui la descrizione dell'immagine

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.