Vim 편집기를 종료하려면 어떻게합니까?


3762

갇혀 탈출 할 수 없습니다. 그것은 말한다 :

"type :quit<Enter> to quit VIM"

그러나 내가 입력하면 단순히 객체 본문에 나타납니다.


131
당신은 단지 VIM을 종료하려고합니까? 이 경우 "탈출"을 누르고 ': q'를 입력하십시오.
Pop

47
콜론을 잊지 마세요 ! 입력 :quit한 다음 [ENTER]키 를 누르십시오 .
Farahmand

88
vim의 기본 사항을 배우는 것은 정말 쉽고 시스템에 바로 내장되어 있습니다. 터미널 유형은 "vimtutor"입니다. 25 분 후에 일반적인 텍스트 편집기보다 더 빠르게 진행됩니다!
Mark Robson

4
더 많은 명령을 확인 하십시오 .
Toni

78
git commit앞으로 당신을 vim으로 보내지 못하게하려면 : git config --global core.editor="nano"
Tom Kelly

답변:


4897

히트 Esc"일반 모드"를 입력 키를. 그런 다음 :"명령 줄 모드"를 입력하기 위해 입력 할 수 있습니다 . :화면 하단에 콜론 ( )이 나타나고 다음 명령 중 하나를 입력 할 수 있습니다. 명령을 실행하려면 Enter키를 누르십시오 .

  • :q 종료 ( :quit)
  • :q!(대한 짧은 저장하지 않고 종료합니다 :quit!)
  • :wq 쓰고 끝내다
  • :wq! 파일에 읽기 권한 만있는 경우에도 쓰기 및 종료 (파일에 쓰기 권한이없는 경우 : 강제 쓰기)
  • :x 쓰기 및 종료 (와 유사 :wq하지만 변경 사항이있는 경우에만 쓰기)
  • :exit쓰고 끝내기 (와 동일 :x)
  • :qa모두 종료하려면 (의 줄임말 :quitall)
  • :cq 저장하지 않고 종료하고 Vim이 0이 아닌 오류를 반환하도록 (즉 오류와 함께 종료)

또한 "정상 모드"에서 Vim을 직접 ZZ종료하여 저장 및 종료 (와 동일 :x) 또는 ZQ종료 (와 동일 :q!)를 입력 할 수도 있습니다. (주는 경우가 여기에 중요하다. 것을 ZZzz같은 일을 의미하지 않는다.)

Vim은 :help모든 질문에 대한 답변과 초보자를위한 튜토리얼을 찾을 수 있는 명령으로 액세스 할 수있는 광범위한 도움말 을 제공합니다.


15
esc를 재 매핑하거나 .vimrc에 이상한 매핑이없는 한, 반드시 그래야합니다. Linux에서 xev를 입력하고 escape를 눌렀을 때 얻을 수있는 키 유형인지 확인하십시오.
dirvine

17
Esc를 사용할 수 없으면 ctrl + c를 사용할 수 있습니다 (내 쉘이 TotalTerminal에 있기 때문에 나와 같습니다). vim.wikia.com/wiki/Avoid_the_escape_key
dotnetCarpenter

25
:x== ZZ그러나 :x! = :wq. :x파일 쓰기 iff 파일이 변경되었습니다. :wq항상 파일을 쓰십시오 (즉,를 사용할 때 중요 inotify).
Hauleth

36
솔직히 말해서, 나는 vim 자체를 사용하는 것보다 vim의 도움말 시스템을 사용하는 데 어려움을 겪고 있으며 빠른 참조 카드와 온라인 문서에 의존합니다.
bgvaughan

18
파일에 대한 권한은 없지만 sudo 권한이있는 경우:w ! sudo tee %
tvlooy

189

그림은 수천 가지 유닉스 명령과 옵션의 가치가 있습니다.

여기에 이미지 설명을 입력하십시오

나는 매 학기마다 학생들에게 이것을 그리고 그들은 나중에 vi를 파악하는 것 같습니다.

vi는 상태가 3 개인 유한 상태 머신 입니다.

vi가 시작되면 명령 모드로 들어가서 짧고 적은 문자 명령을 맹목적으로 입력 할 수 있습니다 . 당신은 무엇을하고 있는지 알고 있습니다. 이것은 아마추어를위한 것이 아닙니다.

실제로 텍스트를 편집하려면 한 문자 명령으로 INSERT 모드로 이동해야합니다.

  • i : 커서 대신 INSERT로 이동
  • I : 줄의 시작 부분에 INSERT 모드로 이동
  • A : APPEND 커서
  • A : 줄 끝에 추가
  • o : 현재 줄 아래에 새 줄을 엽니 다
  • O : 현재 줄 대신 새 줄을 엽니 다

이제 질문에 대답 : 종료.

EX 모드에서 vi를 종료 할 수 있습니다 :

  • q : 수정하지 않았거나 미리 저장 한 경우
  • q !: 모든 수정을 무시하고 종료
  • wq : 저장하고 종료
  • x : 이것은 wq와 같습니다

wx파일 이름 매개 변수를 받아들입니다. 파일 이름으로 vi를 시작한 경우 여기에 다시 지정할 필요가 없습니다.

마지막으로 가장 중요한 것은 어떻게 EX 모드에 도달 할 수 있습니까?

EX 모드는 화면의 맨 아래 줄에 입력하는 것을 볼 수있는 긴 명령입니다. 명령 모드에서 콜론 ()을 누르면 콜론 :이 맨 아래 줄에 나타나고 위 명령을 입력 할 수 있습니다.

INSERT 모드에서 ESC (예 : Esc 버튼)를 눌러 COMMAND 모드로 이동 한 다음 :를 눌러 EX 모드로 이동해야합니다.

확실하지 않으면 ESC 키를 누르면 명령 모드로 이동합니다.

따라서 강력한 방법은 파일을 저장하고 종료하는 ESC-:-x-Enter입니다.


5
감사합니다. 이미지가 매우 유용합니다. 그러나 나를 위해 wEx에서 Command 모드로 변경하지는 않지만 변경 Esc합니다. 내가 무엇을 잘못하고 있지?
Nick Volynkin

2
w-Enter를 쓰면 파일이 저장되고 명령 모드로 돌아갑니다. 저장 및 종료 명령의 전체 그림을 갖도록 작성했습니다.
Gergely

3
아, 그래서 당신은 의미 :w. 그렇다면 완벽하게 이해됩니다. 그건 그렇고, 디스크에서 다시로드하는 명령이 있습니까 (즉, 변경 사항을 되돌 리지만 파일을 닫지 않는)? 그렇다면 w다이어그램 옆에있을 수 있습니다 .
Nick Volynkin

2
@Gergely 나는 단지 혼란을 알아 냈습니다! 문서에서 일반 모드는 명령 모드 라고도 합니다 ! 따라서 명령 모드! = 명령 줄 모드입니다. 와!
jpaugh

2
디스크에서 다시로드는 명령을 @NickVolynkin :e(또는 가능성 :e!그것은없이 저장되지 않은 변경 사항에 대해 경고하기 때문에 !)
JDS

177

당신이 명령을 입력하기 전에 히트 Esc키를 . 입력 한 후 Return를 눌러 확인하십시오.

Esc현재 명령을 마치고 Vim을 일반 모드로 전환합니다 . 이제 누르면 :의는 :상기 나타납니다 아래 화면. 이것은 실제로 명령을 입력하고 파일을 편집하지 않음을 확인합니다.

대부분의 명령에는 약어가 있으며 선택적 부분은 대괄호로 묶습니다 c[ommand].

'*'로 표시된 명령은 Vim 전용입니다 (Vi에서는 구현되지 않음).

안전 종료 (저장되지 않은 변경 사항이있는 경우 실패) :

  • :q[uit] 현재 창을 종료합니다 . 이것이 마지막 창인 경우 Vim을 종료하십시오. 현재 버퍼 에서 변경 한 경우 실패합니다 .
  • :qa[ll]* 일부 버퍼가 변경되지 않은 경우 모든 창과 Vim을 종료하십시오.

프롬프트 종료 (저장되지 않은 변경 사항이있는 경우 프롬프트)

  • :conf[irm] q[uit]* 종료되었지만 일부 버퍼가 변경되면 프롬프트를 표시하십시오.
  • :conf[irm] xa[ll]* 변경된 모든 버퍼를 작성하고 Vim을 종료하십시오. 일부 버퍼를 쓸 수 없을 때 프롬프트를 표시하십시오.

변경 사항 쓰기 (저장) 및 종료 :

  • :wq변경되지 않은 경우에도 현재 파일을 작성하고 종료하십시오. 파일이 읽기 전용이거나 버퍼에 이름이 없으면 쓰기에 실패합니다. :wqa[ll]* 모든 창에 적용됩니다.
  • :wq!동일하지만 읽기 전용 파일도 작성합니다. :wqa[ll]!* 모든 창에 적용됩니다.
  • :x[it], ZZ( 세부 사항 포함 ). 파일 이 변경된 경우 에만 작성하고 :xa[ll]모든 창 에서 *를 종료하십시오 .

변경 사항을 취소하고 종료하십시오.

  • :q[uit]! ZQ* 보이는 버퍼가 변경 될 때에도 쓰지 않고 종료합니다. 숨겨진 버퍼가 변경된 경우 종료되지 않습니다.
  • :qa[ll]!*, :quita[ll][!]* Vim 종료, 버퍼에 대한 모든 변경 사항 (숨김 포함)이 손실됩니다.

Return명령을 확인하려면 누릅니다 .

이 답변은 모든 Vim 쓰기 및 종료 명령과 인수를 참조하지는 않습니다. 실제로 이들은 Vim documentation 에서 참조됩니다 .

Vim에는 광범위한 내장 도움말이 있으며, 입력 Esc:helpReturn하여 엽니 다.

이 답변은 원래 @dirvine이 작성하고 다른 SO 사용자가 편집 한 다른 하나 에서 영감을 얻었습니다 . Vim 참조, SO 의견 및 기타 출처에서 더 많은 정보를 제공했습니다. Vi와 Vim의 차이점도 반영됩니다.


81

당신이 빔에 저장하지 않고 종료하려면 빔이 0이 아닌 종료 코드를 반환해야, 당신은 사용할 수 있습니다 :cq.

에 대한 새끼 손가락 이동에 귀찮게 할 수 없기 때문에 나는 이것을 항상 사용합니다 !. 나는 종종 파일로 저장할 필요가없는 것들을 Vim으로 파이프합니다. 또한 체크인을 중단하기 위해 0이 아닌 값으로 종료 해야하는 홀수 SVN 래퍼가 있습니다.


19
또한 커밋 자식, 또는 visudo를, 또는 crontab을 ... 중단하려면이 옵션을 사용
조쉬 리

:q!git이 0이 아닌 종료 코드가 아닌 비어 있지 않은 메시지를 검사하기 때문에 git commit을 중단하면 정상적으로 작동합니다.
moopet

나는 그것이 작동한다는 것을 알고 있습니다. :-)
Sue Spence

47

Vim을 종료하는 최악의 시나리오입니다. 원하는 경우, 수행 한 작업에 대해 전혀 모르고, 열린 파일에서 어떤 일이 발생할지 신경 쓰지 않아도됩니다.

Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter

이것은 대부분의 시간을 보내 게 될 것입니다.

다음과 같은 것이 필요한 흥미로운 경우 :

  • iCtrl-ovg (삽입 모드에 들어간 다음 시각 모드와 운영자 보류 모드로 들어갑니다)

  • QappendEnter

  • iCtrl-ogQCtrl-r=Ctrl-k (이 경우에는 죽에 감사합니다)

  • :set insertmode(이것은 Ctrl-\Ctrl-n일반 모드로 돌아갈 때입니다 )


편집 :이 답변은 위의 경우로 수정되었습니다. 예전에는

EscEscEsc:qa!Enter

그러나 Ex 모드로 들어가면 작동하지 않습니다. 이 경우 다음을 수행해야합니다.

viEnter:qa!Enter

"내가 한 일을 알고 싶지 않고 아무것도 저장하고 싶지 않다." 될 것이다

viEnterEscEscEsc:qa!시작하다


6
@cavalcade 에디터가 정상 모드에 있고 안전하게 종료되도록하는 매우 일반적인 방법입니다. 정상적인 사용에 필요한 모든이다 :q:wq
댄 Passaro

6
충분하지 않습니다! 내가 (초보자) 타이핑하면 i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>어떨까요?
porges

테스트 케이스에 감사합니다. 원래 방법이 비참했음을 증명하는 다른 테스트 사례도 있습니다. 나는 더 일반적인 답변을 편집했다.
Heikki Naski

@HeikkiNaski 적어도 나를 위해 Ctrl-C 후에도 입력해야합니다 (표현 레지스터를 피하기 위해)
porges

40

easy 모드 ( -y옵션 을 사용하는 동안) 에서 Vim을 종료해야하는 경우 Ctrl+를 눌러 일반 Vim 모드로 들어갈 수 L있으며 정상적인 종료 옵션이 작동합니다.


7
또 다른 옵션 : Ctrl+OINSERT 모드를 일시적으로 종료하고을 입력 하는 데 사용할 수 있습니다 :q. 이 조합의 트릭은 단일 명령을 실행하고 INSERT 모드로 돌아 가기 위해 일반 vim에서 유용합니다.
Andrey Starodubtsev

28

Vim에는 입력 모드, 명령 모드 및 Ex 모드의 세 가지 작동 모드가 있습니다.

입력 모드 - 입력 한 모든 내용, 모든 키 입력이 화면에 표시됩니다.

명령 모드 또는 이스케이프 모드 -이 모드에서 입력하는 모든 것이 명령으로 해석됩니다.

Ex 모드 -다른 편집기입니다 (예 : 라인 편집기입니다. 그것은 라인 당 또는 라인 범위에 따라 작동합니다. 이 모드에서는 :화면 하단에가 나타납니다. 전 편집자입니다.

Vim을 종료하려면 ex 모드 또는 명령 모드에있는 동안 종료 할 수 있습니다. 입력 모드에있을 때는 Vim을 종료 할 수 없습니다.

전 모드에서 나가기

  1. 명령 모드에 있는지 확인해야합니다. 그렇게하려면 간단히 Esc키 를 누르십시오 .

  2. :키 를 눌러 전 모드로 이동

  3. ex 모드에서 다음 조합 중 하나를 사용하여 종료하십시오.

    :q-종료 :q!- :wq저장 하지 않고 종료 -저장 및 종료 또는 쓰기 및 종료 :wq!-wq와 동일하지만 파일 권한이 읽기 전용 인 경우 강제 쓰기 :x-쓰기 및 종료 :qa-모두 종료 다음과 같이 여러 파일을 열 때 유용합니다.vim abc.txt xyz.txt

명령 모드에서 나가기

  1. 이스케이프 키를 누릅니다. 명령 모드에있는 경우이 작업을 이미 수행했을 수 있습니다.

  2. 프레스 자본 ZZ ( shift zz)-저장 후 종료

  3. 자본 ZQ ( shift zq)를 누릅니다 . 저장하지 않고 종료합니다.


3
"ex mode"라고 부르는 것을 실제로는 명령 행 모드 라고 합니다 . ex 명령을 입력 할 수 있지만 몇 가지 중요한 차이점이 있습니다.
jpaugh

1
흠 시각 모드를 잊고 있습니다.
Pryftan

26

타격 후 ESC(또는 cmd+ C내 컴퓨터)를 명중해야한다 :나타날 프롬프트 명령. 그런 다음을 입력해도 quit됩니다.

정보가 저장되지 않았기 때문에 컴퓨터가 종료되지 않을 수 있습니다. 어쨌든 !종료하려면 종료 후 바로 입력하십시오 (예 :) :quit!.


19

Windows에 Git 클라이언트를 설치하여 Vim을 얻었습니다. :q나를 위해 Vim을 종료하지 않습니다. :exit그러나 ...


1
vim이 매킨토시에서 git을 수행하는 경우에도 마찬가지입니다.
Joel

1
@Joel은 방금 내 Mac에서 이것을 확인했으며 두 명령 모두 합법적입니다 ( vim -version7.3).
Nick Volynkin

2
들어 Git Bash창에,에서 Vim가끔 ESC작동하지 않습니다. 사용 CTRL+ [대신.
Val

@Val 이상하게 생겼습니다. Iirc는 두 사람이 같은 일을하기 때문입니다. 에서 ^[와 동일합니다 ESC. Windows가 더 복잡해진다는 점이 흥미 롭습니다. 그리고 재미있는.
Pryftan

10

여기에 질문이 있습니다 .

q번호와 명령은 해당 위치에서 소정의 분할을 닫는다.

:q<split position>또는 :<split position>q해당 위치에서 스플릿을 닫습니다.

Vim 창 레이아웃이 다음과 같다고 가정 해 봅시다.

-------------------------------------------------
|               |               |               |
-------------------------------------------------
|               |               |               |
|               |               |               |
|    Split 1    |    Split 2    |     Split 3   |
|               |               |               |
-------------------------------------------------

q1명령 을 실행 하면 첫 번째 분할이 닫힙니다.q2두 번째 분할을 닫고 그 반대도 마찬가지입니다.

quit 명령에서 분할 위치의 순서는 중요하지 않습니다. :2q또는 :q2두 번째 분할을 닫습니다.

명령에 전달하는 스플릿 위치가 현재 스플릿 수보다 크면 마지막 스플릿이 닫힙니다.

예를 들어, q100세 개의 분할이있는 위의 창 설정에서 를 실행 하면 마지막 분할이 닫힙니다 (Split 3).

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