概要
開発をしていると、あるプロジェクト上で、ある目的のファイルをファイル名により検索して、vimで開きたいことがたびたびあります。
この記事では、そのための.zshrc
を共有します。
zshrcの設定
以下は、自分が普段使っている .zshrc
の一部です。
解説はコメントアウトで書くようにしているので細かい説明は省きます。
FZF_TREE_IGNORE=".git|.cache|.*cache|__pycache__" alias ff=find_file_and_vim # ファイル名を検索してvimで開く function find_file_and_vim() { INITIAL_QUERY="$1" # プレビューの対象は、ファイルの場合もあれば、ディレクトリの場合もあります。 # プレビュー対象が、ディレクトリの場合はlsでファイル一覧を表示し、そうでなければheadで先頭行のみ表示しています。 PREVIEW=' f() { set -- $(echo -- "$@" | grep -o "\./.*$"); if [ -d $1 ]; then ls -lh $1 else head -n 100 $1 fi }; f {}' # treeの実行結果からfzfによりファイルを絞れるようにします。 # 経験上、何かファイルを探したいときに、まずはディレクトリ構造ごと知ってからファイルを検索することが多いためです。 files=$(tree --noreport --charset=o -f -a -I ${FZF_TREE_IGNORE} | sed -e '1d') selected=$(echo $files | fzf --reverse --query "$INITIAL_QUERY" \ --preview ${PREVIEW} | grep -o "\./.*$") # ファイルが選択されていなければなにもしません。 # ファイルが選択されていたら、それをファイル、ディレクトリにかかわらずvimで開きます。 if [ "$selected" = "" ]; then return 0 fi if [ -f "$selected" ]; then vim "$selected" return 0 fi if [ -d "$selected" ]; then vim "$selected" return 0 fi }