linux – emacs/vi/vimでコマンドラインから読み込み専用のファイルを開くには?

command-line emacs linux vim

emacs/vi/vimに(コマンドラインから)ファイルをview-modeまたはread-onlyで表示するように指示する方法はありますか?

emacs/vi/vimが既に起動している場合にのみ、ファイルを読み込みとして開く方法を知っています

  82  Nifle  2010-10-28


ベストアンサー

For emacs:

emacs FILE --eval '(setq buffer-read-only t)'

強制的に読み取り専用にする起動オプションはありません

編集: この小さな関数をシェルの起動スクリプト (.bashrc など) に入れておけば、 ev file_to_view と入力することでファイルを読み取り専用で開くことができます

ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}

48  Trey Jackson  2010-10-28


vim -R ファイル名

146  RedGrittyBrick  2010-10-28


view 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)

26  mrverrall  2010-10-28


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のような環境でファイルを表示するには、ファイルを変更する機能はありません

10  Jay  2010-10-28


受け入れられた回答の小さなフォローアップ。シェル内でこれをエイリアスにして一つのコマンドにすることができます。例えば、bash の場合、.bashrc に以下のように記述することができます

emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}

(シェルによってこれを行うためのフォーマットは異なりますが、お分かりいただけると思います)

受理された回答への返信としてコメントとして追加するつもりでしたが、コメントに複数行の「コード」ブロックを持つことは不可能だと思われました

9  Chirael  2012-10-31


編集する機能を持たずにファイルを表示するだけの場合

cat <file> | less

lessでは、vキーを押すとファイル編集モードになります。しかし、標準入力を編集することはできませんので、cat <file>の出力をLOWにパイピングすると、lessがvを押しても編集モードにならなくなります

vimの場合も同様のアプローチ

cat <file> | vim -

6  nxdrvr  2014-03-21


emacsの場合は、ビューモードを使うこともできます

emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'

または端末内の代替品を使用することができます

emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'

あるいは、私のラッパースクリプトを使うこともできます

5  None  2012-09-12


emacsでは、以下のようなことができます

emacs FILE -f view-mode

シンタックスハイライトが適用されます。読み取り専用バッファとして開くだけではありません。I-search のようないくつかのコマンドは、このモードではコントロールキーなしでアクセスできます

2  jogama  2018-02-10


ファイルを標準出力に送信する場合、ファイルのサイズを考慮すると許容できるかもしれません

cat <file>  # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines

0  Nathan Feger  2010-10-28


ここでは誰の回答にも答えないつもりはありませんが、Read-only Modeファイルについてもう少し情報を追加したいと思います。oreillyのドキュメント読み取り専用モード ファイルを見たいが、不注意なキー入力や変更からファイルを保護したい場合があるでしょう。(vi の動きを練習するために長いファイルを呼び出したい場合や、コマンドファイルやプログラムをスクロールしたい場合があるかもしれません)。読み取り専用モードでファイルを入力し、すべての vi 動作コマンドを使用することはできますが、ファイルを変更することはできません

読み取り専用モードでファイルを見るには、どちらかを入力します

$ vi -R file

or:

$ view file

(view コマンドは vi コマンドと同様に、ファイル内の特定の場所に移動するためのコマンドラインオプションを使用することができます)。ファイルを編集する場合は、write コマンドに感嘆符をつけることで読み取り専用モードを上書きすることができます

:w!
or:

:wq!

書き出しに問題がある場合は

こちら

0  Md Haidar Ali Khan  2018-03-15


タイトルとURLをコピーしました