vim
또는 이 포함된 지침을 자주 봅니다 nano
. 이는 원하는 텍스트 편집기에서 해당 단계의 파일을 여는 것을 의미합니다. 사용자의 기본 터미널 내 텍스트 편집기(예: vim
, nano
또는 기타 항목)에서 입력을 여는 특정 프로그램 대신 사용할 수 있는 불가지론적 명령이 있습니까?
editor
"유사한 질문" 사이드바에서 언급된 것을 봤습니다. 이것은 여전히 데비안 기반 배포판으로 제한됩니까 ? 다른 옵션이 있나요?
답변1
$EDITOR
정의된 한 을 사용할 수 있습니다 .
$EDITOR filename.txt
nano
하지만 누군가가 맹목적으로 따라한다면 사용하는 것이 안전하기 때문에 대부분의 문서에서는 이를 사용한다고 생각합니다 . 사용자가 실제로 한 편집기를 다른 편집기보다 선호한다고 결정하면 스스로 교체할 수 있을 만큼 충분히 알게 됩니다 vim
.emacs
edit
Debian 기반 시스템에서는 제대로 작동할 수 있지만 다른 시스템에서는 호출되므로 ex
권장되지 않습니다.
답변2
VISUAL
환경변수가 설정되어 있으면 이를 사용하세요.
EDITOR
그렇지 않고 환경 변수가 설정되어 있으면 이를 사용하십시오.
그렇지 않으면 Unix의 기본값은 vi
전혀 사용자 친화적이지 않습니다. vi를 사용하는 사람들은 vi를 호출하기 위해 시스템을 설정하는 방법을 알고 있으며, 이를 모르는 사용자에게 응용 프로그램은 사용자 친화적이어야 합니다. 불행하게도 괜찮은 편집자를 찾을 수 있는 좋고 이식 가능한 방법은 없습니다. 당신은 시도 할 수 있습니다xdg-mime query default
, 그러나 유틸리티를 사용할 수 있는 경우에도 항상 작동하는 것은 아닙니다. Debian 및 Debian 계열 시스템에서는 다음을 호출하세요.sensible-editor
, 이 모든 작업을 수행합니다. 하지만 다른 Unix 변형에서는 이와 유사한 것을 알지 못합니다.
그러면 다음과 유사한 코드가 생성됩니다.
#!/bin/sh
if [ -n "$VISUAL" ]; then
exec $VISUAL "$@"
elif [ -n "$EDITOR" ]; then
exec $EDITOR "$@"
elif type sensible-editor >/dev/null 2>/dev/null; then
exec sensible-editor "$@"
elif cmd=$(xdg-mime query default ) 2>/dev/null; [ -n "$cmd" ]; then
exec "$cmd" "$@"
else
editors='nano joe vi'
if [ -n "$DISPLAY" ]; then
editors="gedit kate $editors"
fi
for x in $editors; do
if type "$x" >/dev/null 2>/dev/null; then
exec "$x" "$@"
fi
done
fi
대부분의 프로그램은 $VISUAL
및 에서 공백으로 구분 되지만 $EDITOR
전부는 아닙니다.
답변3
(내가 아는 한) 모든 Linux 배포판의 기본 터미널 언어인 Bash를 사용하는 경우 환경 변수라는 것이 있습니다. 이러한 변수 중 다수는 배포판에 의해 설정되며 일부는 수동으로 설정하거나 "내보내야" 합니다. $EDITOR는 특수 문자입니다(대문자 및 달러 기호 필요). 달러 기호는 호출되는 변수를 나타내고 대문자는 환경 변수임을 나타냅니다. $HOME은 공개 환경입니다. 변수는 ~로 축약됩니다.
따라서 귀하의 질문에 간결하게 대답하려면 사용자의 기본 편집기를 사용하여 file.txt를 편집하는 명령을 실행하십시오.
$EDITOR file.txt
기본 편집기를 vim으로 설정하거나 내보내려면 다음을 사용자의 $HOME/.bashrc 파일에 넣으세요:
export EDITOR=/bin/vim
그런 다음 다음을 실행하십시오.
source $HOME/.bashrc
$EDITOR 변수가 설정되지 않은 경우 실제로 기본 편집기가 없습니다.
대안으로는 셀 수 없이 많은 별칭이 있습니다.
Alias E="$EDITOR"
.bashrc 파일을 가져온 후 다음을 통해 위의 첫 번째 명령을 실행할 수 있습니다.
E text.vim
그러나 별칭에 너무 집착하지 마십시오. 고급 bash 사용에 큰 장애가 될 수 있습니다.
또 다른 유용하고 유사한 환경 변수는 문서 보기를 위해 기본 프로그램을 여는 데 사용할 수 있는 $PAGER입니다.
$PAGER file.txt
이 환경 변수의 일반적인 기본값은 "less"입니다.
답변4
더 간단한 버전자일스의 대답다음과 같이 한 줄의 스크립트로 편집기를 시작하도록 인라인될 수 있습니다.
command ${VISUAL:-${EDITOR:-$(command -v vi)}} $file
(그러나 when과 같은 기본 편집기 매개 변수와 함께 작동하려면 조정해야 합니다 EDITOR="emacs -nw"
. exec
연결된 답변의 호출에도 이 문제가 있습니다. command
아마도 .보다 안전할 것입니다 exec
.)