나는 일반적으로 환경 변수 VISUAL
와 EDITOR
환경 변수를 모두 같은 것으로 설정했지만 차이점은 무엇입니까? 왜 다르게 설정해야합니까? 앱을 개발할 때 왜 VISUAL
이전을 EDITOR
보거나 반대를 선택해야 합니까?
나는 일반적으로 환경 변수 VISUAL
와 EDITOR
환경 변수를 모두 같은 것으로 설정했지만 차이점은 무엇입니까? 왜 다르게 설정해야합니까? 앱을 개발할 때 왜 VISUAL
이전을 EDITOR
보거나 반대를 선택해야 합니까?
답변:
EDITOR
편집기 (이전과 같은 "고급"터미널 기능을 사용하지 않고 작업을 할 수 있어야한다 ed
또는 ex
모드 vi
). 텔레타이프 터미널에 사용되었습니다.
VISUAL
편집기는 전체 화면 편집기가 될 수 vi
또는 emacs
.
예를 들어 bash를 통해 편집기를 호출하면 (bash를 사용하여 C-x C-e
) bash가 첫 번째 VISUAL
편집기 를 시도한 다음 VISUAL
실패하면 (터미널이 전체 화면 편집기를 지원하지 않기 때문에) 시도합니다 EDITOR
.
요즘에는 EDITOR
설정을 해제하거나로 설정할 수 있습니다 vi -e
.
ed
이와 비슷한 것이별로 인기가 없으므로 무시 VISUAL
하고 사용하는 것이 좋습니다 EDITOR
.
C-x C-e
bash 에 대한 팁을 주셔서 감사합니다 . 매우 편리합니다.
EDITOR
만으로는 충분하지 않습니다 (예 : git
Ubuntu 12.04). VISUAL
설정 하지 않으면 git
무시 EDITOR
하고 그냥 사용합니다 nano
(기본적으로 컴파일 된 것 같습니다).
ed
. GUI가있는 편집기가 등장했을 때-GUI로 데스크탑 환경 GUI가 아닌 CLI GUI (vim, emacs 등-ncurses를 생각할 때)를 의미합니다. 편집 프로세스가 크게 바뀌 었으므로 다른 변수가 필요했습니다. 이 컨텍스트에서 CLI GUI와 데스크탑 환경 GUI 편집기는 거의 동일하므로 VISUAL을 둘 중 하나로 설정할 수 있습니다. 그러나 EDITOR는 근본적으로 다른 워크 플로우를위한 것입니다. 물론 이것은 모두 역사적입니다. 요즘 아무도 ed를 사용하지 않습니다.
받아 들여진 대답은 아마도 짧고 좋은 치료 일 것입니다. 그러나 이것은 VISUAL과 EDITOR의 구별이 여전히 중요 할 때 더 깊이 시도하려는 시도가 될 것입니다 ( Adam Katz 's answer 기반 ).
POSIX 사양은 여전히 비주얼 모드 편집기와 라인 편집기를 구분합니다. 직렬 연결을 통한 커서 위치 지정이 어려웠던 시절 (특히 직렬 연결 속도로 인해)에는 실제로 문제가 발생했습니다. VI에 대한 위키 백과의 문서 VI (비주얼 모드 편집기)과 전 (라인 편집기)의 차이에 대한 몇 가지 유용한 배경을 제공합니다. 연구에 대해 충분히 깊이 파고들었다면 "ex"spec의 "RATIONALE"섹션을 찾을 수 있는데, 이는 여전히 스펙에 차이가있는 이유를 제공합니다.
vi의 일부는 불가능하지는 않지만 블록 모드 터미널 또는 커서 주소 지정 형식이없는 터미널에서 만족스럽게 구현하기가 어려울 수 있으므로 그러한 기능이 모든 터미널에서 작동해야하는 필수 요건은 아닙니다. . 그러나 vi 구현은이를 지원할 수있는 모든 터미널에서 전체 기능 세트를 제공해야합니다.
나는 300 보오 모뎀을 포기한 이후로 이것을 필요로하지 않았지만, 느린 직렬 회선을 사용하여 임베디드 시스템에 연결하는 사람들 (그리고 실제로는 촌스러운 연결을 선호하는 사람들 ) 이 여전히 선호하는 회선 모드를 가질 수 있다고 생각할 수 있다고 상상할 수있다 vi와 같은 "시각적"편집기와 구별되는 편집기. 손실이 많고 느리고 좁은 연결을 통한 VT100 스타일 터미널 코드는 제한된 응용 프로그램에서 "부풀어 질"수 있습니다.
우리 중 나머지 사람들에게는 "올바른"답변이 "둘 다 원하는 편집자로 설정"된 것 같습니다. 로컬 / 그래픽 편집기 (예 : Sublime 또는 gvim) 대 터미널 창 편집기 (예 : vi 또는 emacs)에 대해이 구별을 선택하는 것이 좋을 수도 있지만, 예상대로 작동하지 않는 레거시 이유가있을 수 있습니다. .
나는 그것이 $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
여부는 윈도우 시스템을 사용할 수 있는지 여부가 아니라 커서 위치 지정이 가능한 터미널이 있는지 여부에 따라 다릅니다.
$DISPLAY
하지만 알아두면 좋습니다.
vi 또는 이와 유사한 환경이 실패하는 것처럼 보이지 않기 때문에 VISUAL을 X DISPLAY가 필요한 것으로 설정하고 EDITOR를 ex로 설정했습니다.
대부분의 프로그램은 VISUAL을 사용하지 않을 때 문제를 일으키는 것으로 보입니다.
$VISUAL
은 (쉘 인용) 파일 이름을 추가하는 쉘 스 니펫으로 취급하지만 일부는 검색하거나 검색하지 않을 수있는 실행 파일의 이름으로 취급합니다$PATH
. 따라서 실행 파일의 전체 경로VISUAL
(및EDITOR
) 를 설정하는 것이 가장 좋습니다 ( 예 : 옵션을 원하는 경우 래퍼 스크립트 일 수 있음).