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

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

보통 환경변수 VISUALEDITOR환경변수를 같은 값으로 설정하는데, 차이점은 무엇인가요? 왜 다르게 설정해야 합니까? 앱을 개발할 때 왜 VISUAL이전 보기를 선택해야 하나요? 아니면 그 반대로 선택해야 하나요 EDITOR?

답변1

편집기는 이전 또는 모드와 EDITOR같은 "고급" 터미널 기능을 사용하지 않고도 작업할 수 있어야 합니다 . 텔레타이프 터미널에 사용됩니다.edexvi

편집기는 또는 VISUAL와 같은 전체 화면 편집기일 수 있습니다 .viemacs

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

이제 EDITOR설정하지 않은 상태로 두거나 로 설정할 수 있습니다 vi -e.

답변2

받아들여지는 대답은 아마도 훌륭하고 간단한 치료법일 것입니다. 그러나 이것은 VISUAL과 EDITOR의 차이가 여전히 중요한 경우에 대해 더 깊이 들어가려는 시도일 것입니다(빌딩 기반)아담 카츠의 답변).

POSIX 사양은 여전히 ​​시각적 모드 편집기와 라인 편집기를 구별합니다. 이는 직렬 연결에서 커서 위치 지정이 어려울 때(특히 직렬 연결 속도 때문에) 정말 중요합니다. 이것vi에 대한 Wikipedia 기사vi(시각적 모드 편집기)와 ex(라인 편집기) 간의 차이점에 대한 유용한 배경 지식을 제공합니다. 연구를 파헤쳐 보면 알 수 있습니다."ex" 사양의 "RATIONALE" 부분, 이는 이러한 구별이 사양에 여전히 존재하는 이유를 제공합니다.

vi의 일부 부분은 불가능하지는 않더라도 블록 모드 터미널이나 어떤 형태의 커서 주소 지정 없이는 터미널에서 만족스럽게 구현하기 어렵다는 점을 인식하고 있으므로 이러한 기능은 모든 터미널에서 작동해야 하며 필수 요구 사항은 아닙니다. 그러나 vi 구현은 이를 지원할 수 있는 모든 터미널에서 전체 기능 세트를 제공해야 합니다.

300보(baud) 모뎀을 포기한 이후로 이것이 더 이상 필요하지 않지만 사람들이 느린 직렬 회선을 사용하여 임베디드 시스템(및/또는 매우 위험한 연결)에 연결하는 것을 상상할 수 있습니다.가능한vi와 같은 "시각적" 편집기와는 다른 선호하는 라인 모드 편집기를 사용하는 것은 여전히 ​​좋습니다. 손실이 많고 지연이 많고 좁은 연결을 통한 VT100 유형 터미널 코드는 제한된 응용 프로그램에서 "비대"될 수 있습니다.

우리 중 나머지 사람들에게 "올바른" 대답은 "둘 다 선호하는 편집기로 설정"하는 것 같습니다. 그래픽 편집기(예: Sublime, gvim 또는 emacs)와 터미널 편집기(예: vi/vim 또는 -nw 옵션이 있는 emacs) 사이의 이러한 차이점은 아마도 괜찮을 것입니다. 그러나 아마도 승리할 수 있는 많은 레거시 이유가 있을 것입니다. 예상대로 작동하는 것과 같은 것이 없습니다.

답변3

$VISUAL선호하는 것보다 더 유능하고 상호작용적입니다 $EDITOR. 정의되지 않은 경우 모든 탐색$VISUAL ~해야 한다$EDITOR그런 다음 다음 단계를 시도해 보세요 .

$VISUAL일부는 그래픽 터미널과 대화형 터미널을 표현하기 위해 현대적인 규칙을 채택했습니다 $EDITOR. 역사적으로 $VISUAL(예:)는 대화형 터미널 디스플레이를 나타내며, $EDITOR(예:편집하다)는 (텍스트) 커서 이동을 처리할 수 없는 라인 편집기입니다. 바라보다 로블라의 답변더 많은 역사적 기록을 알아보세요.

현재 ~/.bashrc내 및 다음과 같은 내용이 있습니다 ~/.zshrc.

# Prefer vim or else fail over to vi
EDITOR="$(command -v vim 2>/dev/null || command -v vi)"

# 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

답변4

vi 등이 실패할 환경은 없을 것 같아서 VISUAL을 X DISPLAY, EDITOR를 ex로 요구하는 것으로 설정했습니다.

대부분 이것은 특정 프로그램이 VISUAL을 사용하지 않을 때 문제를 일으키는 것 같습니다.

관련 정보