.zshrc를 ~/.zshrc로 수정

.zshrc를 ~/.zshrc로 수정

내가 할 때 다음과 같은 종류의 별칭을 설정하는 방법이 있습니까?

cd some/directory
vim .zshrc

그렇습니다 vim ~/.zshrc?

답변1

대답은 생각보다 훨씬 간단합니다. 잘못된 질문을 하고 있기 때문입니다.

실제로 의미하는 것이 " ~/.zshrc현재 작업 디렉터리에 관계없이 편집할 수 있는 별칭을 어떻게 만들 수 있습니까?" 입니다. 그러면 대답은 간단합니다.

alias zshconfig="vim ~/.zshrc" 

이 예는 제가 직접 만든 ~/.zshrc것이며 자주 사용합니다.

더 나은 옵션이 제안되었습니다.@mateen-ulhaq아래 의견은 다음과 같습니다.

alias zshrc="vim ~/.zshrc" 

즉, 파일 이름이나 파일 이름 경로에 별칭을 지정하지 마십시오. 이 두 가지 모두 가능하지만 나중에 문제를 일으키는 예측할 수 없는 부작용이 발생할 수 있습니다.@마이클-호머지적했습니다.

$EDITOR그러나 선호하는 것이 이라는 것을 알고 있으므로 해당 특정 파일의 호출 vim에 별칭을 지정하면 vim작업을 수행할 수 있습니다. (문맥에서 벗어나 사용될 가능성이 적은 특이한 문자열에 대한 특정 명령 및 인수 조합의 별칭을 지정하는 것이 훨씬 안전합니다.)

그러나 더 일반적으로 말하면, 두 문자 시퀀스를 최적화하는 것에 대해 걱정하지 말고 ~/대신 입력하는 데 익숙해져야 한다는 것이 내 조언입니다. 계속하세요... Eddie Van Halen이 저울을 연습하는 것처럼 왼쪽 새끼손가락을 펴세요. (아마도 새끼손가락으로 건반을 치는 데 익숙해져야 하기 때문에 이것은 당신 vim이 하는 동안 숙달하는 데 도움이 될 것입니다!)Esc

타이핑 기술이 향상됨에 따라 ~/시퀀스에 대한 근육 기억력이 확보되어 홈 디렉토리에 있는 파일을 참조할 때 해당 문자 시퀀스를 안정적으로 입력하는 데 도움이 됩니다. 일부러 빨리 입력하게 될 것이고, 실수로 입력하는 일은 없을 것입니다.

별칭에 의존하는 것의 단점은 가정용 컴퓨터에서 속도를 아무리 높이더라도 ssh클라이언트의 개인 서브넷에 있는 일부 원격 Docker 컨테이너에 들어가야 하고 모든 별칭이 사라진 것을 발견하면 속도가 느려진다는 것입니다.

답변2

나는 실제로 요점을 알지 못하지만 그렇습니다. 수행 중인 작업은 명령에 다른 이름이나 일부 기본 인수를 지정하는 것보다 더 복잡하므로 별칭이 아닌 함수가 필요합니다.

function vim {
  if [[ $# -eq 1 && $1 == .zshrc && ! -e .zshrc ]]; then
    set -- ~/.zshrc
  fi
  command vim "$@"
}

설명: 을 실행하면 vim함수가 호출됩니다. 마지막 줄에서는 command vim …외부 명령을 호출하고 "$@"함수에 전달된 인수를 전달합니다. 그 사이에 정확히 하나의 인수가 있고 해당 인수가 정확한 문자열이고 현재 디렉터리에 .zshrc호출된 파일이 없는 경우 .zshrc명령줄은 으로 대체됩니다 ~/.zshrc. 원하는 조건이 아닌 경우 이러한 조건을 조정하세요.

답변3

아마도 zsh를 쉘로 사용하고 있을 것입니다."전역 별칭" 기능이 있습니다.이를 통해 다음을 수행할 수 있습니다.

% alias -g .zshrc='~/.zshrc'
% echo .zshrc
/home/mwh/.zshrc

그건,어딘가에해당 단어가 .zshrc명령줄에 나타나면 로 바뀌고 ~/.zshrc평소와 같이 물결표 확장이 적용됩니다. 이는 자체 쉘 "단어"여야 하므로 더 긴 이름의 하위 문자열일 경우에는 확장되지 않습니다. 이는 모든 명령에서 작동합니다.

전역 별칭은 실제로 어디에서나 자동으로 확장되므로 예를 들어 rm .zshrc다른 디렉터리에서 실행하면 자신의 도트 파일을 목표로 하기 때문에 문제가 많기로 악명이 높습니다. 또한 이미 정의된 함수에도 쉘 함수 내부에 적용됩니다. 이 경우 문제가 발생할 확률은 상대적으로 낮지만, 문제가 발생할 가능성이 있다는 점을 염두에 두시기 바랍니다. 를 사용하여 현재 디렉터리에 있는 파일의 이름을 구체적으로 지정 하거나, 따옴표로 묶어서 ./.zshrc리터럴 문자열을 가져올 수 있습니다 .\.zshrc

관련 정보