웹사이트 검색

Vim 편집기 모드 설명


이 페이지에서

  1. 시스템 및 로컬 vimrc
  2. 우리가 말하는 호환성\n
  3. 이러한 모드를 어떻게 활성화/비활성화합니까?\n
  4. 기타 유용한 정보\n

지금까지 플러그인을 중심으로 튜토리얼을 진행했습니다. 그러나 우리 모두 알고 있듯이 Vim은 내장 기능을 많이 제공합니다. 따라서 토론을 더 진행하여 이 튜토리얼에서는 편집기를 시작할 수 있는 사용 가능한 모드에 대해 논의할 것입니다.

But before we do that, please note that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.

앞서 언급한 Vim 모드를 제대로 이해하려면 먼저 편집기 초기화 프로세스의 중요한 측면을 이해해야 합니다.

시스템 및 로컬 vimrc

문제의 측면은 Vim이 실행될 때 편집기가 시스템 수준의 vimrc 파일을 검색하여 시스템 전체의 기본 초기화를 수행한다는 것입니다.

이 파일은 일반적으로 시스템의 $VIM/vimrc 경로에 있지만 그렇지 않은 경우 Vim 내에서 :version 명령을 실행하여 정확한 위치를 찾을 수 있습니다. 예를 들어 제 경우에는 명령어가 생성한 출력의 관련 발췌문이 다음과 같습니다.

...
...
...
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
...
...
...

따라서 시스템 vimrc 파일은 실제로 $VIM/vimrc에 있지만 $VIM 환경 변수가 내 컴퓨터에 설정되어 있지 않은지 확인했습니다. 따라서 이 경우 위의 출력에서 볼 수 있듯이 $VIM에 대한 폴백 값이 있습니다. 제 경우에는 /usr/share/vim입니다. 이 경로에서 vimrc를 검색하려고 했을 때 파일이 존재하는 것을 확인했습니다. 이것이 제 시스템 vimrc입니다. 앞서 언급했듯이 Vim이 실행될 때 읽습니다.

이 시스템 vimrc가 구문 분석된 후 편집기는 사용자별(또는 로컬) vimrc 파일을 찾습니다. 로컬 vimrc의 검색 순서는 환경 변수 VIMINIT, $HOME/.vimrc, 환경 변수 EXINIT 및 exrc라는 파일입니다. 일반적으로 $HOME/.vimrc 또는 ~/.vimrc가 존재하며 로컬 vimrc로 취급됩니다.

우리는 어떤 호환성을 이야기하고 있습니까?

Vim 호환 및 비호환 모드에 대해 논의한 것처럼 이러한 모드가 어떤 종류의 호환성을 활성화 및 비활성화하는지 아는 것이 좋습니다. 이를 위해서는 먼저 Vim이 Vi IMproved의 약자이며 전체 이름에서 알 수 있듯이 편집기는 Vi 편집기의 개선된 버전이라는 점을 먼저 알아야 합니다.

개선이란 Vim이 제공하는 기능 세트가 Vi보다 크다는 것을 의미합니다. 두 편집자의 차이점을 더 잘 이해하려면 여기를 참조하세요.

따라서 Vims 호환 및 비호환 모드에 대해 논의하는 동안 Vi와 Vi의 호환성에 대해 이야기했습니다. 호환 모드에서 실행하면 Vim의 개선 사항 대부분이 비활성화됩니다. 하지만 이 모드에서 Vim은 단순히 Vi를 에뮬레이트하지 않는다는 점을 명심하세요. 이 모드는 기본적으로 Vi 편집기가 작동하는 방식으로 일부 기본 옵션을 설정합니다.

비호환 모드는 말할 것도 없이 Vim이 Vi와 호환되지 않고 작동하도록 하여 Vim의 모든 향상/개선/기능을 사용자가 사용할 수 있도록 합니다.

이 모드를 활성화/비활성화하는 방법은 무엇입니까?

Vim에서 :help compatible 명령을 실행하면 다음 구문이 표시됩니다.

'compatible' 'cp' boolean (default on, off when a |vimrc| or |gvimrc|
file is found)

따라서 호환 모드는 기본적으로 켜져 있지만 vimrc 파일이 발견되면 꺼진다고 설명되어 있습니다. 그러나 우리는 어떤 vimrc에 대해 이야기하고 있습니까? 답은 로컬 vimrc입니다. :help 호환 명령이 제공하는 세부정보를 자세히 살펴보면 다음 행을 찾을 수 있습니다. 그러면 내용이 더 명확해집니다.

Effectively, this means that when a |vimrc| or |gvimrc| file exists, Vim will use the Vim defaults,otherwise it will use the Vi defaults. (Note: This doesn't happen for the system-wide vimrc or gvimrc file, nor for a file given with the |-u| argument).

따라서 Vim이 실행될 때마다 실제로 발생하는 일은 Vim이 먼저 시스템 vimrc 파일을 파싱하는 것입니다. 이때 호환 모드는 기본적으로 켜져 있습니다. 이제 사용자(또는 로컬) vimrc가 발견될 때마다 비호환 모드가 켜집니다. :help compatible-default 명령은 다음과 같이 매우 명확합니다.

When Vim starts, the 'compatible' option is on. This will be used when Vim starts its initializations. But as soon as a user vimrc file is found, or a vimrc file in the current directory, or the "VIMINIT" environment variable is set, it will be set to 'nocompatible'.

기본 동작을 재정의하고 편집기가 시스템 vimrc 파일의 구문 분석을 시작할 때 비호환 모드를 켜려는 경우 처음에 해당 파일에 다음 명령을 추가하면 됩니다.

:set nocompatible

기타 유용한 정보

다음은 이러한 모드에 대한 유용한 정보입니다.

But there is a side effect of setting or resetting 'compatible' at the moment a .vimrc file is found: Mappings are interpreted the moment they are encountered. This makes a difference when using things like "<CR>". If the mappings depend on a certain value of 'compatible', set or reset it before
giving the mapping.

The above behavior can be overridden in these ways:
- If the "-N" command line argument is given, 'nocompatible' will be used, even when no vimrc file exists.
- If the "-C" command line argument is given, 'compatible' will be used, even when a vimrc file exists.
- If the "-u {vimrc}" argument is used, 'compatible' will be used.
- When the name of the executable ends in "ex", then this works like the "-C" argument was given: 'compatible' will be used, even when a vimrc file exists. This has been done to make Vim behave like "ex", when it is started as "ex".

동의합니다. Vim의 Vi 호환 모드를 켤 수 있는 상황에 처하지 않을 수도 있지만 그렇다고 해서 편집기 초기화 프로세스에 대해 무지해야 한다는 의미는 아닙니다. 결국 이 지식이 언제 도움이 될지 알 수 없습니다.