web-dev-qa-db-ja.com

Vimで読み取り専用モードを終了するにはどうすればよいですか?

読み取り専用モードでファイルを開きました。読み取り専用モードを終了する方法はありますか?

43
wrongusername

あなたはこれを行うことができます:

:set noro

これは読み取り専用フラグの設定を解除しますが、基礎となるファイルがまだ書き込み可能でない場合は、vimはそのファイルに書き込むことができません。

49
Philip Kearns

Vim内からchmodを実行できます。

:!chmod +w %

!は、シェルコマンドを実行することを意味し、%は現在のファイル名です。ファイルを強制的に書き込むこともできます。

:w!
9
Michael Mrozek

Michael Mrozek's answer に加えて、.vimrcに行を追加して、昇格されたアクセス許可で開いていないファイルに書き込むことができます。

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

ファイルが読み取り専用の場合は、入力するだけです :w!!、パスワードの入力を求められ、ファイルが正常に書き込まれます。

3
jasonwryan

:set noroはジョブを実行します。ファイルが別のvimインスタンスによって開かれているかどうかはチェックせず、外部で変更された場合はファイルを更新しません。

編集可能にしてスワップファイル(vimでファイルを開くデフォルト)を確認するには、編集コマンド(:help edit)を使用します。

:e

それ以降(vimの外でも)ファイルが操作されている場合は、現在のバッファーの変更が更新されることに注意してください(通常は望ましいと思います)。

2

少し遅れましたが、おそらくあなたはすでにあなたの疑念を解決したかもしれません;)私はvimで知っている方法でコメントの中に見たことがないので、追加しますそれ:

ファイルを編集したら、:wまたは:wqを押すと、迷惑なメッセージ「E45 'readonly'オプションが設定されています(上書きするには!を追加)

E45 readonly option is set (add ! to override)

入力できます

:w !Sudo tee %

w !Sudo tee %

  • wはバッファを書き込み、
  • !SudoはSudoでシェルを呼び出し、
  • teeは、vim :wの出力をtee付きの出力にリダイレクトし、
  • %は現在のファイル名です

これでうまくいくはずです。これは、Lキーを押す必要があるものについて、vimでファイルを再ロードするように要求することに注意してください。

enter image description here

1
xCovelus