태그 보관물: cd-command

cd-command

“vi”를 입력했지만 “cd”를 의미 할 때 자동 감지? 5 번, “cd”를 의미 할 때 “vi”를

하루에 약 5 번, “cd”를 의미 할 때 “vi”를 입력하고 vi에서 디렉토리를 엽니 다. 그것은 나를 너트로 만들고 있습니다. “vi + directory”를 입력하고 자동으로 “cd + directory”로 변경하면 감지하는 방법이 있어야합니다. 생각?



답변

vi디렉토리를 마지막 인수로 호출한다고 가정합니다 .

vi() {
    if [[ -d ${!#} ]]; then
        cd "$@"
    else
        command vi "$@"
    fi
}

답변

@ChrisDown 답변 외에도 다음과 같은 또 다른 방법이 있습니다. 바이 패스 디렉토리

이 방법으로 다음을 수행 할 수 있습니다.

vi ./*

하위 디렉토리를 포함하여 하위 디렉토리를 무시하더라도 현재 디렉토리의 모든 파일에서 vi를 시작합니다.

vi() {
  for arg do
    [ -d "$arg" ] || set -- "$@" "$arg"
    shift
  done
  [ "$#" -gt 0 ] && command vi "$@"
}

이것은 디렉토리가 아닌 모든 인수에 대해 vi를 수행하므로 “cd”에 “vi”를 사용하도록 지시하지는 않습니다.

vi 방금 수행 한 경우 vi를 호출하지 않습니다. vi somedirectory (예 : cd 대신 vi를 잘못 입력). 그러나 자동으로 CD가 나오지 않으므로 cd를 입력해야한다는 것을 기억하십시오 ^^

인수 목록을 변경하기 위해 “호환 가능한”방법을 사용하여 여러 플랫폼에 이식 가능했습니다.


답변

한 가지 해결책은 cd모두 사용을 중지하는 것 입니다. shopt -s autocd.bashrc또는 setopt autocd에 넣으 십시오 .zshrc. 그런 다음 다른 디렉토리로 변경하려면 명령없이 디렉토리 이름을 입력하십시오.

vi파일을 편집하려면 반드시 입력 해야합니다.

단일 명령으로 디렉토리를 변경하거나 파일을 편집하려는 경우 기능을 수행 할 수 있습니다.

vi () {
  if [ $# -eq 1 ] && [ -d "$1" ]; then
    cd -- "$1"
  else
    command vi "$@"
  fi
}