web-dev-qa-db-ja.com

emacs / vi / vimを使用してコマンドラインからファイルを読み取り専用で開く方法はありますか

ファイルをview-modeまたはread-onlyで表示したいことをemacs/vi/vimに(コマンド行から)伝える方法はありますか。

Emacs/vi/vimが既に実行されている場合に、ファイルを読み取り専用として開く方法を知っています。

78
Nifle

Emacsの場合:

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

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

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

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

vim -R filename

145
RedGrittyBrick

ファイル名を表示

基本的に読み取り専用モードで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
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

受け入れられた答えへの小フォロー:あなたはそれを単一のコマンドに減らすためにあなたのシェルでこれをエイリアスすることができます。例えばbashでは、あなたの.bashrcに以下を入れることができます。

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

(これを行うためにシェルが異なればフォーマットも異なるでしょうが、あなたはアイデアを得ます)

私はこれを承認された答えに対するコメントとして追加したはずですが、コメントに複数行の "code"ブロックを含めることは不可能に思われました。 3行に分けて。

8
Chirael

編集することなくファイルを見るためだけに:

cat <file> | less

lessでは、を押すことで "ファイル編集モード"に進むことができます。 v キー。しかし、標準入力を編集することはできないので、cat <file>の出力をlessにパイプすると、vを押したときにlessが「編集」モードに移行するのを防ぎます。

同じアプローチをvimに

cat <file> | vim -
6
nxdrvr

Emacsではビューモードを使うこともできます。

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

または端末内の代替手段:

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

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

4
user86064

Emacsではできること

emacs FILE -f view-mode

構文の強調表示が適用されます。ファイルを読み取り専用バッファとして開くだけではありません。このモードでは、I検索などの一部のコマンドには、制御キーがなくてもアクセスできます。

1
jogama

標準出力にファイルを送信

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

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

ファイルを読み取り専用モードで見るには、次のいずれかを入力します。

$ vi -R file

または

$ view file

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

:w!
or:

:wq!

ファイルの書き出しに問題がある場合.

さらに詳しくは こちら

0