emacsの現在のバッファの書き込み許可を変更するにはどうすればよいですか?


16

バッファーを強制終了/再オープンせずに、emacs内からファイルの書き込み許可を変更することは可能ですか?

ファイルを開く前に、ファイルのアクセス許可を変更するのを忘れることがあります。emacs(M-! chmod u+w filename)内からアクセス許可を変更できますが、これは書き込み保護されたままでファイルの変更を拒否するバッファーを更新しません。

バッファ内のアクセス許可を更新する方法はありますか?これをショートカットに割り当てることができればボーナスポイントです!

回答:


15

ファイルモードを変更した後、編集を行う前に、実行M-x revert-bufferしてファイルをリロードします。ファイルが書き込み可能になった場合、バッファーは読み取り専用ではなくなります。

または、C-x C-qread-only-mode)と入力します。これにより、バッファーは読み取り専用ではなくなります。編集して保存することもできますが、読み取り専用ファイルを上書きするかどうかを確認する確認プロンプトが表示されます。


Cx Cqはまだ動作しますが、emacs 24.3の時点では、トグル読み取り専用ではなく読み取り専用モードを呼び出し、トグル読み取り専用は無効になっています。
ポールルーベル

9

バッファの読み取り専用ステータスを変更するには、C-xC-q(toggle read-only-mode)を使用します。変更ファイルのアクセス権には、次のように実行することができますdired(ファイルのディレクトリにC-xd)、でファイルを検索C-sし、使用Mそのモードを変更します。


3
どうやら、見逃しているようですdired-jump(通常にバインドされていますC-x C-j)。実行さdiredれ、編集中のファイルの行にジャンプします。
cjm

2
@cjm:をロードしないと機能しませんdired-x
チョロバ

申し訳ありませんが、dired-jump約20年前にオートロードを設定していたことを忘れていました。私はそれをお勧めします。
cjm

迷惑なことtoggle-read-onlyにに置き換えられましたread-only-modeが、バインディングは同じです。
チャーリーマーティン

2

ワークフローでバッファのファイル許可を繰り返し変更する必要がある場合、カスタム関数を使用すると次のようになります。

これはUNIXマシンでのみ機能します(システムコマンド「chmod」を実行します

(defun chmod-plus-w ()
  (interactive)
  (shell-command-to-string (concat "chmod +w " (buffer-file-name (current-buffer))))
  (revert-buffer))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.