__vi_internal_vim_alias 해결 방법: 명령을 찾을 수 없습니까?

__vi_internal_vim_alias 해결 방법: 명령을 찾을 수 없습니까?

최근에 내 컴퓨터를 Fedora 33(Linux 5.9.16-200)으로 업그레이드했습니다. 저는 vim Enhanced 버전 8.2를 실행하고 있습니다. 관리자 권한으로 파일을 편집하려고 sudo vim(심지어 ) 입력하면 sudo vi다음 오류가 발생합니다.

sudo: __vi_internal_vim_alias: command not found

이 문제의 원인이 무엇인지 잘 모르겠습니다. Vim은 sudo 없이 정상적으로 로드됩니다. 이 문제를 해결하는 방법을 알려주실 수 있나요? 감사해요.


고쳐 쓰다: 을 실행한 후 which vim다음과 같은 결과를 얻습니다.

alias vim='__vi_internal_vim_alias'
    __vi_internal_vim_alias ()
    { 
        ( test -f /usr/bin/vim && exec /usr/bin/vim "$@";
        test -f /usr/bin/vi && exec /usr/bin/vi "$@" )
    }

이게 무슨 일인지, 어디서 일어난 일인지 잘 모르겠습니다. 어쩌면 이것은 Fedora 33 문제일 수도 있습니다. 위의 정보를 고려할 때 영구 수정 사항으로 무엇을 권장하시겠습니까?

답변1

Fedora 33에서도 같은 문제가 발생했습니다. 이는 sudo내 환경에 정의된 별칭 때문인 것 같습니다 .

$ alias sudo
alias sudo='\sudo '

따라서 bash는 sudo다음 예와 같이 별칭에 인수로 전달된 별칭을 어떻게든 확인합니다.

$ alias foo='echo foo'
$ sudo foo
foo

나는 이것을 갖고 싶었습니다:

$ sudo foo
$ sudo: foo: command not found

이 별칭을 제거하면 나에게 도움이 되었습니다. 이 별칭은 /usr/local/bin/alias.sh프로젝트 synth-shell(https://github.com/andresgongora/synth-shell)

답변2

@scy가 언급했듯이 vi와 vim의 별칭을 해제하는 것은 sudo="sudo " 별칭을 유지하여 다른 별칭과 함께 사용할 수 있는 솔루션입니다.

다른 쉘에 대한 답변을 확장하면 다음과 같습니다.

ZSH 쉘:에 추가하다.zshrc파일(변경의 영향을 받을 사용자의 파일)

  • 거짓말:

Fedora 33 워크스테이션(또는 서버 또는 기타 비원자적 OS 배포판)의 경우: /home/$USER/.zshrc

Fedora CoreOS 33.x(또는 Silverblue 33 또는 기타 유사한 Atomic OS 배포판)의 경우: /var/home/$USER/.zshrc

  • 다음 코드 줄:
[ "$(type -w vi)" = 'vi: alias' ] && unalias vi
[ "$(type -w vim)" = 'vim: alias' ] && unalias vim

배시 쉘:에 추가하다.bashrc파일(변경의 영향을 받을 사용자의 파일)

  • $USER 홈 디렉터리에 해당하는 OS/Distro 특정 위치에 각각 위치합니다(Fedora Workstation에 대한 지침 확인 등...).
  • 아래 코드:
[ "$(type -t vi)" = 'alias' ] && unalias vi
[ "$(type -t vim)" = 'alias' ] && unalias vim

폴리스티렌~에 대한ZSH 쉘, 이 솔루션은 유사한 초기화 상황에서 다른 CLI 애플리케이션과 관련된 유사한 문제를 해결할 수 있습니다. 예를 들어:MC(자정 사령관). 동시에,MC그런 문제는 없을 겁니다배쉬 쉘.

관련 정보