emacs / vi / vim을 사용하여 명령 행에서 파일을 읽기 전용으로 여는 방법


79

내가에서 파일을 보려는 (명령 행에서) / VI / 정력 이맥스 말할 수있는 방법이 있나요 view-mode또는 read-only.

emacs / vi / vim이 이미 실행중인 경우에만 파일을 읽기 전용으로 여는 방법을 알고 있습니다.


참고 : 파일에 대한 쓰기 권한이 없으면 Vim은 기본적으로 파일을 읽기 전용 모드로 엽니 다. 실제로 "읽기 전용"방식을 제공하는 것보다 파일 권한을 제어하는 ​​것이 더 쉽다고 생각합니다.
Franklin Yu

답변:


45

이맥스의 경우 :

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

강제로 읽기 전용으로 시작할 수있는 시작 옵션이 없습니다.

편집 :
이 작은 기능을 쉘 시작 스크립트 (예 : .bashrc)에 넣으면 다음을 입력하여 파일을 읽기 전용으로 열 수 있습니다ev file_to_view

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

11
이맥스를 다운 보트 할 수 있으면 좋겠다.
Robert Calhoun

145

vim -R 파일 이름


4
잘 작동하지만 vim보다 emacs를 선호하기 때문에 Trey의 대답을 받아 들였습니다.
Nifle

32
그리고 모든 vim 사용자들은 "허용 된 답변"이상으로 그것을
보냄

1
참고 : 일부 상자에는 'view'명령이 'vi -R'의 별칭 일 수 있습니다.
armyofda12mnkeys

26

파일명보기

기본적으로 읽기 전용 모드에서 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)

1
구문 강조는 없습니다.
Nifle

7
@Nifle : 구문 강조에 차이가 없어야합니다. 당신이 경우 vim구문 강조를 가지고 있지만 당신은 view아마도 당신이하지 않는 view최소한의 버전에 대한 링크입니다 vim구문을 컴파일 하이라이팅하지 않습니다.의 출력 비교 :version명령을 사용합니다.
garyjohn

1
그것이 "제대로 작동하는"이유 : Vim은 실제로 argv[0]그 행동을 결정하기 위해 읽습니다 . 일반적인 트릭입니다. AFAIK는 때때로 GCC와 Bash도이를 수행합니다.
Franklin Yu

10
vim -R <file>

와 쓸 수 있습니다 :w!

vim -c ":set nomodifiable"  <file>

사용자가 버퍼의 파일을 변경하지 못하게합니다. 그러나 사용자는 다음과 같이 버퍼를 수정 가능하게 만들 수 있습니다.:set modifiable

당신은 사용할 수 있습니다

vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>

사용자가 "변경 불가능"을 끄는 것을 방지하고 사용자가을 눌러 종료 할 수 있도록합니다 q. 그러나 사용자는 명령 모드에 전혀 들어갈 수 없으므로 원하는 모드 일 수도 있고 아닐 수도 있습니다.

less 명령으로 파일을 열 수도 있습니다.

less <file>

vim과 유사한 환경에서 파일을 볼 수는 없지만 파일을 보는 것.


사용 일 less@nxdrvr가 지적한대로 누를 수 있지만, V의 키에 수정 가능한 모드로 파일을 열지vi
Sheharyar

9

허용 된 답변에 대한 작은 후속 조치 : 쉘에서 별칭을 지정하여 단일 명령으로 줄일 수 있습니다. 예를 들어 bash에서는 다음을 .bashrc에 넣을 수 있습니다.

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

(다른 쉘은이 작업을 위해 다른 형식을 갖지만 아이디어를 얻습니다)

나는 이것을 받아 들인 대답에 대한 회신으로 주석으로 추가했지만 주석에 여러 줄 "code"블록을 가질 수는 없었고 (어쨌든 bash에서는) 위의 코드는 실제로 3 개의 개별 라인에.


6

편집 할 수없는 파일 만 보려면 :

cat <file> | less

에서 less당신은 눌러 "편집 파일 모드"로 갈 수있는 v키를 누릅니다. 그러나 표준 입력을 편집 할 수 없으므로 출력 cat <file>을 적게 less줄이면 'v'를 누를 때 '편집'모드로 전환되지 않습니다.

vim의 경우 동일한 접근 방식

cat <file> | vim -

4
v제안 해 주셔서 감사합니다 . 맵시 있는.
tshepang

2
+1이지만 필요 없습니다 cat. 그냥 사용하십시오 <FILENAME less.
Sparhawk

@ Sparkhawk, <file> less오류가 발생했습니다. 의미한다고 가정 less <file>하지만 대답에서 설명한 것처럼 less직접 사용할 때 사용자는 v 키를 누르고 편집 모드로 이동할 수 있습니다. 배관 cat에하는 less일이 발생을 중지합니다.
Sheharyar

@ Sheharyar 그는 출력 리디렉션을 의미했습니다. Vless < FILENAME 를 누르면 "표준 입력을 편집 할 수 없음"을 제공하는에 익숙 할 것 입니다. Vim과 마찬가지로 : . vim - < FILENAME
Franklin Yu

4

emacs의 경우 view-mode를 사용할 수도 있습니다 .

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

또는 터미널 내부의 대안 :

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

또는 래퍼 스크립트를 사용할 수 있습니다


1

이맥스에서 할 수있는 일

emacs FILE -f view-mode

구문 강조가 적용됩니다. 파일을 읽기 전용 버퍼로 열지 않습니다. 이 모드에서는 제어 키없이 I-search와 같은 일부 명령에 액세스 할 수 있습니다.


0

파일을 표준 크기로 전송하는 것은 파일 크기가 허용 될 수 있습니다

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

0

나는 여기에 다른 사용자의 대답을 포기하지 않을 것이지만 Read-only Mode파일 에 대한 더 많은 정보를 추가하고 싶습니다 . oreilly 문서에 따라 읽기 전용 모드 파일을 보려고하지만 실수로 키를 누르거나 변경하지 않도록 파일을 보호하려는 경우가 있습니다. (가동을 연습하기 위해 긴 파일을 호출하거나 명령 파일 또는 프로그램을 스크롤 할 수 있습니다). 파일을 읽기 전용 모드로 입력하고 모든 vi 이동 명령을 사용할 수 있지만 파일을 변경할 수는 없습니다.

읽기 전용 모드에서 파일을 보려면 다음 중 하나를 입력하십시오.

$ vi -R file

또는:

$ view file

vi 명령과 같은 view 명령은 파일의 특정 위치로 이동하기 위해 명령 행 옵션을 사용할 수 있습니다. 파일을 일부 편집하기로 결정한 경우 읽기 전용 모드를 재정의 할 수 있습니다. 쓰기 명령에 느낌표 추가

:w!
or:

:wq!

파일을 쓰는 데 문제가있는 경우

더 넘기기 위해 여기

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.