vim 편집기에서 alias 명령을 실행하는 방법은 무엇입니까? [폐쇄]

vim 편집기에서 alias 명령을 실행하는 방법은 무엇입니까? [폐쇄]

.bashrc 파일에 별칭 설정

alias l='ls -l'

Vim 내부:

:! l
[No write since last change]
/bin/bash: l: command not found

shell returned 127

답변1

별칭은 상속되지 않으므로 Vim이 시작한 셸은 편집기를 시작한 셸에서 사용 가능한 별칭을 상속하지 않습니다.

~/.bashrc파일은 대화형 셸 세션에서만 읽을 수 있으며 Vim에서 실행되는 셸은 대화형이 아닙니다. 또한 bash기본적으로 쉘은 비대화형 쉘의 별칭을 확장하지 않습니다.

Vim 내에서 호출된 명령을 실행하려면 l해당 명령을 외부 명령(예: 파일 어딘가에 있는 스크립트 $PATH)으로 사용할 수 있어야 합니다.또는$BASH_ENV별도의 파일(비대화형 셸에서 실행하기 전에 읽는 파일)을 사용하여 수행하려는 작업에 적합한 셸 환경을 설정할 수 있습니다 .

"트릭"을 사용하려면 파일(또는 이에 상응하는 항목)이 이 환경 변수를 필요한 설치 코드가 포함된 파일의 경로 이름으로 설정하는지 $BASH_ENV확인하세요 .~/.vimrc

let $BASH_ENV = "~/.vim_bash_env"

~/.vim_bash_env그런 다음 말을 만들어

shopt -s expand_aliases
source ~/.bashrc

쉘 세션이 비대화형이더라도 별칭 확장이 가능하고 ~/.bashrc별칭이 정의될 수 있는 파일을 읽습니다.

그런 다음 Vim 명령을 통해 별칭을 사용할 수 있습니다 !.

가리키는 파일을 $BASH_ENV읽고 실행한다는 점에 유의하세요.어느이는 파일이 다른 작업(예: 시작 또는 기타 서비스)을 수행 !하는 경우 Vim에서 실행하는 모든 명령에서도 발생합니다 . 따라서 별칭 및/또는 셸 함수 정의를 소스로 사용하는 새 파일 로 분리하는 것이 현명합니다.~/.bashrctmux~/.bash_aliases둘 다 ~/.vim_bash_env그리고 ~/.bashrc.

관련 정보