programing

vim shell 명령 내에서 .bashrc 별칭을 사용하려면 어떻게 해야 합니까? (:!...)

cafebook 2023. 4. 19. 00:20
반응형

vim shell 명령 내에서 .bashrc 별칭을 사용하려면 어떻게 해야 합니까? (:!...)

저는 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에 추가하고 싶지는 않습니다.그건 드라이가 아니에요.

더 좋은 해결책이 있을까요?

Bash가 로드하지 않음.bashrc인터랙티브하지 않으면요

달려.:set shellcmdflag=-ic현재 세션에서 인터랙티브로 설정합니다.

설정을 영속적으로 하려면 , 세트를 추가합니다.set shellcmdflag=-ic끝까지.vimrc파일.

뱅을 사용하다(!명령어를 셸로 전송하기 전에)을 클릭합니다.예를 들어 다음과 같습니다.:! cd folder/.

이 질문에 대해 이미 "답변"한 것은 알지만, 답변에 문제가 있습니다.Vim에서는 셸을 인터랙티브하게 설정할 필요가 없습니다.인터랙티브 셸을 종료하지 않고 대체 답변을 보려면 이 스레드를 참조하십시오.

인터랙티브하지 않은 셸(기본값)에서 bash 에일리어스를 확장하는 경우 에일리어스 정의를 .bash_aliases 등의 파일에 저장하고 이 파일에서 에일리어스 확장을 명시적으로 이니블로 합니다.

shopt -s expand_aliases  
alias la='ls -la'

그런 다음 vimrc에 이 항목을 추가하여 vim 내에서 셸 명령을 실행할 때마다 별칭 파일을 실제로 읽습니다.

let $BASH_ENV = "~/.bash_aliases"

이 솔루션은 "Jakob"에 의해 제안되었습니다.원본은 아래 링크를 참조하십시오.Mac OS X 10.9에서 테스트했는데 완벽하게 작동했어요!

vim -- 대화형 모드에서 별칭을 인식하지 못합니다.

오래된 질문인 것은 알지만, 위의 답변 중 원하는 것이 하나도 없습니다.구글에서 오신 분들과 (어머나)zsh 사용자분들께는

이에 대한 저의 솔루션은 http://zsh.sourceforge.net/Intro/intro_3.html에 따라 .zshrc를 .zhenv로 복사하는 것만으로 충분했습니다.

.zhenv'는 -f 옵션이 설정되어 있지 않은 한 셸의 모든 호출에서 발신됩니다.명령어 검색 경로를 설정하는 명령어와 기타 중요한 환경변수가 포함되어 있어야 합니다..zhenv'는 출력을 생성하는 명령어를 포함하거나 셸이 tty에 연결되어 있다고 가정해서는 안 됩니다.

그렇게$ cp ~/.zshrc ~/.zshenv할 수 있을 거야

bash 닷 파일의 설정 방법에 따라서는, -i 옵션이 아닌 -l 를 사용하는 경우가 있습니다.그러면 셸이 로그인 셸로 실행됩니다.

옵션은 꽤하기 때문에 -i 옵션을 하는 것은 스럽지 않습니다.-i는 vim에서 을 사용하고 . 제가 할 은 '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아...:!bash -c ". ~/.alias; gitlog"

언급URL : https://stackoverflow.com/questions/4642822/how-to-make-bashrc-aliases-available-within-a-vim-shell-command

반응형