mieki256's diary



2022/06/05() [n年前の日記]

#2 [linux][windows] pecoの代わりにfzyを使ってみた

Windows10 x64 21H2 + MSYS2上で peco を使おうとしたけれど動いてくれなかった。ググってみたら MSYS2上で(というか mintty上で?) peco は動かないらしい。ただ、peco の代わりに fzy というツールが使えるという話を見かけたので導入してみた。

余談。pecoについては以下でメモしてあった。

_mieki256's diary - pecoを導入してみた

使い方。 :

  • pcd add . : カレントディレクトリを登録リストに追加。
  • pcd edit : 登録リストファイルを編集。
  • pcd : 登録リストからインクリメンタルサーチで絞り込んでディレクトリ移動。
  • cdp : カレントディレクトリ内からインクリメンタルサーチで絞り込んでディレクトリ移動。

インストール。 :

pacman -S fzy
$ fzy --version
fzy 1.0 (C) 2014-2018 John Hawthorn

pcdをインストール。 :

pcd を使えば、自分で登録したディレクトリリストをインクリメンタルサーチで絞り込んでディレクトリ移動ができる。

登録リストファイル、~/.peco/.peco-cd ファイルを作成。
mkdir ~/.peco
touch ~/.peco/.peco-cd

~/.bash_pcd を作成。以下を記述。
  • peco を呼び出している場所で fzy を呼ぶように変更。
  • pcd edit と打った際は nanoエディタを呼び出すように変更。

function pcd() {
  local PCD_FILE=$HOME/.peco/.peco-cd
  local PCD_RETURN
  if [ $1 ] && [ $1 = "add" ]; then
    if [ $2 ]; then
      ADD_DIR=$2
      if [ $2 = "." ]; then
        ADD_DIR=$(pwd)
      fi
      echo "add $ADD_DIR to $PCD_FILE"
      echo $ADD_DIR >> $PCD_FILE
    fi
  elif [ $1 ] && [ $1 = "edit" ]; then
    if [ $EDITOR ]; then
       $EDITOR $PCD_FILE
    else
       # editor $PCD_FILE
       nano $PCD_FILE
    fi
  elif [ $1 ] && [ $1 = "." ]; then
    PCD_RETURN=$(/bin/ls -F | grep /$ | fzy -l 20)
  else
    PCD_RETURN=$(cat $PCD_FILE | fzy -l 20)
  fi
  if [ $PCD_RETURN ]; then
    cd $PCD_RETURN
  fi
}

function cdp {
  local dir="$( find . -maxdepth 1 -type d | sed -e  's;\./;;' | sort | fzy -l 20 )"
  if [ ! -z "$dir" ] ; then
    cd "$dir"
  fi
}

~/.bashrc に以下を追記。~/.bash_pcd が存在していたら読み込むようにする。
if [ -f "${HOME}/.bash_pcd" ]; then
  source "${HOME}/.bash_pcd"
fi

source ~/.bashrc で反映。

参考ページ。 :


以上です。

過去ログ表示

Prev - 2022/06 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project