emacs / vi / vimを使用してコマンドラインからファイルを読み取り専用で開く方法はありますか
ファイルをview-mode
またはread-only
で表示したいことをemacs/vi/vimに(コマンド行から)伝える方法はありますか。
Emacs/vi/vimが既に実行されている場合に、ファイルを読み取り専用として開く方法を知っています。
Emacsの場合:
emacs FILE --eval '(setq buffer-read-only t)'
強制的に読み取り専用にする起動オプションはありません。
編集する
この小さな関数をシェルの起動スクリプト(たとえば、.bashrc)に入れると、ev file_to_view
と入力して読み取り専用のファイルを開くことができます。
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
vim -R filename
ファイル名を表示
基本的に読み取り専用モードでvimします。シンプル!
コメントで示唆されているように、view
が普通のvi
にリンクされている場合、まず状況を調べてそれを修正するためのbashコマンドがあります。
# non-destructive inspection
which vim
which view
ls -l $(which view)
# overwrite current view with symlink to vim, requires root
ln -sfv $(which vim) $(which view)
vim -R <file>
:w!
で書くことを許可します
vim -c ":set nomodifiable" <file>
ユーザーがバッファー内のファイルを変更できないようにします。しかし、ユーザはバッファを:set modifiable
で修正可能にすることができます
あなたが使用することができます
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
ユーザーが "nomodifiable"をオフにするのを防ぎ、q
を押してユーザーが終了できるようにします。しかし、そうするとユーザーはコマンドモードにまったく入ることができません。
Lessコマンドでファイルを開くこともできます。
less <file>
ファイルをvimに似た環境で表示しますが、ファイルを変更することはできません。
受け入れられた答えへの小フォロー:あなたはそれを単一のコマンドに減らすためにあなたのシェルでこれをエイリアスすることができます。例えばbashでは、あなたの.bashrcに以下を入れることができます。
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(これを行うためにシェルが異なればフォーマットも異なるでしょうが、あなたはアイデアを得ます)
私はこれを承認された答えに対するコメントとして追加したはずですが、コメントに複数行の "code"ブロックを含めることは不可能に思われました。 3行に分けて。
編集することなくファイルを見るためだけに:
cat <file> | less
less
では、を押すことで "ファイル編集モード"に進むことができます。 v キー。しかし、標準入力を編集することはできないので、cat <file>
の出力をlessにパイプすると、vを押したときにless
が「編集」モードに移行するのを防ぎます。
同じアプローチをvimに
cat <file> | vim -
Emacsではビューモードを使うこともできます。
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
または端末内の代替手段:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
あるいは、私の ラッパースクリプト を使うこともできます。
Emacsではできること
emacs FILE -f view-mode
構文の強調表示が適用されます。ファイルを読み取り専用バッファとして開くだけではありません。このモードでは、I検索などの一部のコマンドには、制御キーがなくてもアクセスできます。
標準出力にファイルを送信
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
私はだれにもここで答えを捨てるつもりはありません、しかし私はRead-only Mode
ファイルについてのもう少しの情報を加えたいです。 oreillyのドキュメントの通り 読み取り専用モード ファイルを見たいが、不用意なキー入力や変更からそのファイルを保護したい場合があるでしょう。 (viの動きを練習するために長いファイルを呼び出したい場合や、コマンドファイルやプログラムをスクロールしたい場合があります)。ファイルを読み取り専用モードで入力してすべてのvi移動コマンドを使用することはできますが、ファイルを変更することはできません。
ファイルを読み取り専用モードで見るには、次のいずれかを入力します。
$ vi -R file
または
$ view file
(viコマンドと同様に、viewコマンドでもファイル内の特定の場所に移動するためのコマンドラインオプションを使用できます。)ファイルを編集する場合は、読み取り専用モードを無効にすることができます。 writeコマンドに感嘆符を追加します。
:w!
or:
:wq!
ファイルの書き出しに問題がある場合.
さらに詳しくは こちら