하루에 약 5 번, "cd"를 의미 할 때 "vi"를 입력하고 vi에서 디렉토리를 엽니 다. 그것은 나를 너트로 만들고 있습니다. "vi + directory"를 입력하고 자동으로 "cd + directory"로 변경하면 감지하는 방법이 있어야합니다. 생각?
하루에 약 5 번, "cd"를 의미 할 때 "vi"를 입력하고 vi에서 디렉토리를 엽니 다. 그것은 나를 너트로 만들고 있습니다. "vi + directory"를 입력하고 자동으로 "cd + directory"로 변경하면 감지하는 방법이 있어야합니다. 생각?
답변:
vi
디렉토리를 마지막 인수로 호출한다고 가정합니다 .
vi() {
if [[ -d ${!#} ]]; then
cd "$@"
else
command vi "$@"
fi
}
rm
에 rm -i
많은 배포판의 기본 인. 나는 일반적으로 문제를 해결하는 가장 좋은 방법은 문제를 해결하기보다는 사용자를 해결하는 것이라고 생각합니다.
rm
합니다 rm -i
... 미래에 훨씬 더 많은 문제에서 당신을 얻을 (것이다 아마와) 당신에게 과거하지만 힘에서 몇 가지 문제를 저장 한 수
vi
질문에 말했다 ...
${!#}
최종 인수를 간접적으로 참조 하며이 command
경우 함수 재귀를 피하기 위해서만 필요합니다.
@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를 입력해야한다는 것을 기억하십시오 ^^
인수 목록을 변경하기 위해 "호환 가능한"방법을 사용하여 여러 플랫폼에 이식 가능했습니다.
command something
: "something"이라는 별칭 또는 함수 대신 "something"명령 (예 : $ PATH를 사용하여 처음 발견 된 "something")을 시작합니다. \something
별명 만 우회하지만, 존재하는 경우 여전히 기능을 수행합니다 (여기서 "vi"는 자체적으로 호출하고 반복 함을 의미합니다).
한 가지 해결책은 cd
모두 사용을 중지하는 것 입니다. shopt -s autocd
에 .bashrc
또는 setopt autocd
에 넣으 십시오 .zshrc
. 그런 다음 다른 디렉토리로 변경하려면 명령없이 디렉토리 이름을 입력하십시오.
vi
파일을 편집하려면 반드시 입력 해야합니다.
단일 명령으로 디렉토리를 변경하거나 파일을 편집하려는 경우 기능을 수행 할 수 있습니다.
vi () {
if [ $# -eq 1 ] && [ -d "$1" ]; then
cd -- "$1"
else
command vi "$@"
fi
}
Unix에서 별칭 기능을 사용하십시오. cd를 vi로 별명 지정하면 문제점이 해결됩니다.
vi
별칭을 수동으로 재정의하지 않고 는 사용할 수 없다는 것을 의미합니다 .
vim
대신 적절한 것을 사용하도록 가르쳐 줍니다.
vim
. 사용할 수없는 경우 vi
더 제한된 기능 세트를 사용하십시오.