VISUAL vs. EDITOR – 차이점은 무엇입니까?


182

나는 일반적으로 환경 변수 VISUALEDITOR환경 변수를 모두 같은 것으로 설정했지만 차이점은 무엇입니까? 왜 다르게 설정해야합니까? 앱을 개발할 때 왜 VISUAL이전을 EDITOR보거나 반대를 선택해야 합니까?

답변:


145

EDITOR편집기 (이전과 같은 "고급"터미널 기능을 사용하지 않고 작업을 할 수 있어야한다 ed또는 ex모드 vi). 텔레타이프 터미널에 사용되었습니다.

VISUAL편집기는 전체 화면 편집기가 될 수 vi또는 emacs.

예를 들어 bash를 통해 편집기를 호출하면 (bash를 사용하여 C-x C-e) bash가 첫 번째 VISUAL편집기 를 시도한 다음 VISUAL실패하면 (터미널이 전체 화면 편집기를 지원하지 않기 때문에) 시도합니다 EDITOR.

요즘에는 EDITOR설정을 해제하거나로 설정할 수 있습니다 vi -e.


9
대부분의 응용 프로그램 $VISUAL은 (쉘 인용) 파일 이름을 추가하는 쉘 스 니펫으로 취급하지만 일부는 검색하거나 검색하지 않을 수있는 실행 파일의 이름으로 취급합니다 $PATH. 따라서 실행 파일의 전체 경로 VISUAL(및 EDITOR) 를 설정하는 것이 가장 좋습니다 ( 예 : 옵션을 원하는 경우 래퍼 스크립트 일 수 있음).
Gilles

4
현대에는 ed이와 비슷한 것이별로 인기가 없으므로 무시 VISUAL하고 사용하는 것이 좋습니다 EDITOR.
Pavel Šimerda

13
C-x C-ebash 에 대한 팁을 주셔서 감사합니다 . 매우 편리합니다.
mndrix

5
@ PavelŠimerda, 설정 EDITOR만으로는 충분하지 않습니다 (예 : gitUbuntu 12.04). VISUAL설정 하지 않으면 git무시 EDITOR하고 그냥 사용합니다 nano(기본적으로 컴파일 된 것 같습니다).
maxschlepzig

5
@ PavelŠimerda 이해가되지 않지만 관습입니다. EDITOR는 이전과 같은 명령어 기반 편집기에 사용되었습니다 ed. GUI가있는 편집기가 등장했을 때-GUI로 데스크탑 환경 GUI가 아닌 CLI GUI (vim, emacs 등-ncurses를 생각할 때)를 의미합니다. 편집 프로세스가 크게 바뀌 었으므로 다른 변수가 필요했습니다. 이 컨텍스트에서 CLI GUI와 데스크탑 환경 GUI 편집기는 거의 동일하므로 VISUAL을 둘 중 하나로 설정할 수 있습니다. 그러나 EDITOR는 근본적으로 다른 워크 플로우를위한 것입니다. 물론 이것은 모두 역사적입니다. 요즘 아무도 ed를 사용하지 않습니다.
Zenexer

32

받아 들여진 대답은 아마도 짧고 좋은 치료 일 것입니다. 그러나 이것은 VISUAL과 EDITOR의 구별이 여전히 중요 할 때 더 깊이 시도하려는 시도가 될 것입니다 ( Adam Katz 's answer 기반 ).

POSIX 사양은 여전히 ​​비주얼 모드 편집기와 라인 편집기를 구분합니다. 직렬 연결을 통한 커서 위치 지정이 어려웠던 시절 (특히 직렬 연결 속도로 인해)에는 실제로 문제가 발생했습니다. VI에 대한 위키 백과의 문서 VI (비주얼 모드 편집기)과 전 (라인 편집기)의 차이에 대한 몇 가지 유용한 배경을 제공합니다. 연구에 대해 충분히 깊이 파고들었다면 "ex"spec의 "RATIONALE"섹션을 찾을 수 있는데, 이는 여전히 스펙에 차이가있는 이유를 제공합니다.

vi의 일부는 불가능하지는 않지만 블록 모드 터미널 또는 커서 주소 지정 형식이없는 터미널에서 만족스럽게 구현하기가 어려울 수 있으므로 그러한 기능이 모든 터미널에서 작동해야하는 필수 요건은 아닙니다. . 그러나 vi 구현은이를 지원할 수있는 모든 터미널에서 전체 기능 세트를 제공해야합니다.

나는 300 보오 모뎀을 포기한 이후로 이것을 필요로하지 않았지만, 느린 직렬 회선을 사용하여 임베디드 시스템에 연결하는 사람들 (그리고 실제로는 촌스러운 연결을 선호하는 사람들 ) 여전히 선호하는 회선 모드를 가질 수 있다고 생각할 수 있다고 상상할 수있다 vi와 같은 "시각적"편집기와 구별되는 편집기. 손실이 많고 느리고 좁은 연결을 통한 VT100 스타일 터미널 코드는 제한된 응용 프로그램에서 "부풀어 질"수 있습니다.

우리 중 나머지 사람들에게는 "올바른"답변이 "둘 다 원하는 편집자로 설정"된 것 같습니다. 로컬 / 그래픽 편집기 (예 : Sublime 또는 gvim) 대 터미널 창 편집기 (예 : vi 또는 emacs)에 대해이 구별을 선택하는 것이 좋을 수도 있지만, 예상대로 작동하지 않는 레거시 이유가있을 수 있습니다. .


2

쉘 내장 fc 와 같은 일부 도구는 EDITOR 만 허용합니다 .

-e ENAME  select which editor to use.  Default is FCEDIT, then EDITOR, then vi

1

나는 그것이 $VISUAL그래픽이며 $EDITOR명령 줄 이라고 결론지었습니다 . 정의되지 않은 경우 다음에 시도 $VISUAL 해야합니다$EDITOR .

( 인용 필요 : 적절한 문서, 아마도 맨 페이지 또는 POSIX 사양을 얻고 싶습니까?)

지금이 순간, 나는이 같은 물건을 가지고 ~/.bashrc~/.zshrc:

EDITOR="$(command -v vim)"

# we have gvim, not in an SSH term, and the X11 display number is under 10
if command -v gvim >/dev/null 2>&1 \
&& [ "$SSH_TTY$DISPLAY" = "${DISPLAY#*:[1-9][0-9]}" ]; then
  export VISUAL="$(command -v gvim) -f"
  SUDO_EDITOR="$VISUAL"
else
  SUDO_EDITOR="$EDITOR"
fi

gvim없이는 -f편집 작업을 수행 할 프로그램에서는 작동하지 않습니다. 여기에는 sudoeditor( sudo -e) 이 포함됩니다 .

vim 경로에 공백이 있으면 작동하지 않을 수 있습니다. 문제가있는 경우 올바르게 설치하거나 다음과 같은 심볼릭 링크를 고려하십시오./usr/local/bin/gvim


사용 $VISUAL여부는 윈도우 시스템을 사용할 수 있는지 여부가 아니라 커서 위치 지정이 가능한 터미널이 있는지 여부에 따라 다릅니다.
Radon Rosborough

아, 좋아! 이에 대한 명확한 참조 링크를 제공 할 수 있습니까? 나는 또한 검사하고 있기 때문에 내 코드는 여전히 안전하다고 생각 $DISPLAY하지만 알아두면 좋습니다.
Adam Katz

걱정하지 마십시오. 이러한 언급은 robla의 답변 에 있으며 내 답변도 언급합니다.
Adam Katz

0

vi 또는 이와 유사한 환경이 실패하는 것처럼 보이지 않기 때문에 VISUAL을 X DISPLAY가 필요한 것으로 설정하고 EDITOR를 ex로 설정했습니다.

대부분의 프로그램은 VISUAL을 사용하지 않을 때 문제를 일으키는 것으로 보입니다.

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