fish에서도 "git "라고 치는 귀찮은 ...!

2747 단어 fishGit
지난번 fish 명령을 git 부속 명령으로 호출 할 수있는 래퍼를 작성했습니다.

그래서, 실은 이 래퍼, git- 라는 이름의 함수를 만들면 「무인수로 git 를 실행했을 경우의 거동」을 덧쓰기할 수 있습니다.

이 특성은 잘 사용할 수 없다고 생각했습니다.

"git" 라고 치는 귀찮은…!

라는 기사를 참고로, 다음의 함수를 써 보았습니다.

git-.fish
function git-
    if functions -q __git_mode
        functions -e __git_mode
    else
        function __git_mode -e fish_postexec
            commandline "git "
        end
    end
end

이것을 정의하면 git를 한 번 실행하면 다음에 명령 줄에 git가 삽입 된 상태가됩니다. 빈 인수로 git를 다시 실행하면 git의 자동 삽입이 취소됩니다. 편리!


여담



덧붙여서, 전 재료의 "git" 라고 치는 귀찮은…!에서 소개되고 있는 subsh 커멘드를 fish로 쓰면 다음과 같이 됩니다.

subsh.fish
function subsh
# 指定した文字列を毎回コマンドライン先頭に挿入するようにする関数

    set -l sub "$argv"

    # --inherit-variable でフック定義時の値をキャプチャ
    function __subsh_hook -e fish_postexec --inherit-variable sub
        if test -n "$sub" -a -n "$argv"
            commandline "$sub "
        else
            # 空エンターあるいは引数なしの`subsh`で終了
            functions -e __subsh_hook 
        end
    end
end

fish 버전의 흥미로운 점은 후크 함수 __subsh_hook가 호출되는 타이밍에 변수 sub가 없지만 함수 내부에서 sub를 사용할 수 있다는 것입니다. 즉, 옵션 --inherit-variable으로 전달 된 변수는 함수가 정의 될 때 값이 결정됩니다.

좋은 웹페이지 즐겨찾기