vim에서 실행 된 명령이 bash 명령 별칭을 인식하지 못합니다.
Mac에서 bash를 사용하고 별칭 중 하나는 다음과 같습니다.
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
그러나 내가 할 때
:! gitlog
나는 얻다
/bin/bash: gitlog: command not found
.gitconfig에 이와 같은 별칭을 추가 할 수 있다는 것을 알고 있습니다.
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
그러나 모든 bash 별칭을 .gitconfig에 추가하고 싶지 않습니다. 그것은 DRY가 아닙니다.
더 나은 해결책이 있습니까?
Bash는 대화 형이 아닌 한 .bashrc를로드하지 않습니다. 사용하다
:set shellcmdflag=-ic
Vim의 :!
셸이 명령 프롬프트처럼 작동하도록합니다.
이 질문이 이미 "답변"되었다는 것을 알고 있지만 답변에 문제가 있습니다. 셸은 Vim에서 대화 형으로 설정할 필요 가 없습니다 . 대화 형 셸을 종료하지 않고도 대체 답변을 보려면이 스레드를 참조하십시오.
비대화 형 셸 (기본값)을 원하지만 bash 별칭을 확장하려면 별칭 정의를 파일 (예 : .bash_aliases)에 넣고이 파일에서 별칭 확장을 명시 적으로 활성화합니다.
shopt -s expand_aliases alias la='ls -la'
그런 다음 이것을 .vimrc에 추가하여 vim 내에서 쉘 명령을 실행할 때마다 aliases 파일을 실제로 읽도록합니다.
let $BASH_ENV = "~/.bash_aliases"
이 솔루션은 "Jakob"에서 제안했습니다. 원본은 아래 링크를 참조하십시오. 나는 이것을 Mac OS X 10.9에서 테스트했고 완벽하게 작동했습니다!
bash dotfiles 구성 방법에 따라 -i 옵션 대신 -l을 사용할 수 있습니다. 그러면 셸이 로그인 셸로 시작됩니다.
나는 그것이 오래된 질문 일 수 있음을 알고 있지만 위의 답변 중 어느 것도 원하는대로 작동하지 않았습니다. 따라서 인터넷 검색에서 여기로 온 사람들과 (oh-my-) zsh 사용자를 위해 :
이에 대한 내 해결책은 http://zsh.sourceforge.net/Intro/intro_3.html에 따라 .zshrc를 .zshenv에 복사하는 것만 큼 간단했습니다 .
`.zshenv '는 -f 옵션이 설정되지 않은 경우 모든 쉘 호출에서 소스입니다. 명령 검색 경로를 설정하는 명령과 기타 중요한 환경 변수가 포함되어야합니다. `.zshenv '는 출력을 생성하거나 쉘이 tty에 연결되어 있다고 가정하는 명령을 포함하지 않아야합니다.
그래서 $ cp ~/.zshrc ~/.zshenv
일을 할 것입니다.
나는 -i 옵션을 설정하는 것이 너무 편하지 않다. 그것은 상당한 영향을 미치고 vim에서 자주 쉘을 사용하고 있기 때문이다. 대신 내가 할 일은 다음과 같습니다.:!bash -c ". ~/.alias; gitlog"
'Programing' 카테고리의 다른 글
사이트의 IIS Express 포트를 어떻게 변경할 수 있습니까? (0) | 2020.09.01 |
---|---|
신속한 "전제 조건"과 "어설 션"의 차이점은 무엇입니까? (0) | 2020.09.01 |
Python Pandas를 사용하여 날짜 및 시간 열 결합 (0) | 2020.09.01 |
런타임에 변수 유형을 얻고 싶습니다. (0) | 2020.09.01 |
React redux에서 가져 오기 오류를 처리하는 가장 좋은 방법은 무엇입니까? (0) | 2020.09.01 |