不喜歡 IDE?試試看 grepgitvi

2020-02-26 11:49:00

一個簡單又原始的指令碼來用 Vim 開啟你選擇的檔案。

像大多數開發者一樣,我整天都在搜尋和閱讀原始碼。就我個人而言,我從來沒有習慣過整合式開發環境 (IDE),多年來,我主要使用 grep (找到檔案),並複製/貼上檔名來開啟 Vi(m)。

最終,我寫了這個指令碼,並根據需要緩慢地對其進行了完善。

它依賴 Vimrlwrap,並使用 Apache 2.0 許可證開源。要使用該指令碼,請將它放到 PATH 中,然後在文字目錄下執行:

grepgitvi <grep options> <grep/vim search pattern>

它將返回搜尋結果的編號列表,並提示你輸入結果編號並開啟 Vim。退出 Vim 後,它將再次顯示列表,直到你輸入除結果編號以外的任何內容。你也可以使用向上和向下箭頭鍵選擇一個檔案。(這對我來說)更容易找到我已經看過的結果。

與現代 IDE 甚至與 Vim 的更複雜的用法相比,它簡單而原始,但它對我有用。

指令碼

#!/bin/bash# grepgitvi - grep source files, interactively open vim on results# Doesnt really have to do much with git, other than ignoring .git## Copyright Yedidyah Bar David 2019## SPDX-License-Identifier: Apache-2.0## Requires vim and rlwrap## Usage: grepgitvi <grep options> <grep/vim pattern>#TMPD=$(mktemp -d /tmp/grepgitvi.XXXXXX)UNCOLORED=${TMPD}/uncoloredCOLORED=${TMPD}/coloredRLHIST=${TMPD}/readline-history[ -z "${DIRS}" ] && DIRS=.cleanup() {        rm -rf "${TMPD}"}trap cleanup 0find ${DIRS} -iname .git -prune -o \! -iname "*.min.css*" -type f -print0 > ${TMPD}/allfilescat ${TMPD}/allfiles | xargs -0 grep --color=always -n -H "$@" > $COLOREDcat ${TMPD}/allfiles | xargs -0 grep -n -H "$@" > $UNCOLOREDmax=`cat $UNCOLORED | wc -l`pat="${@: -1}"inp=''while true; do        echo "============================ grep results ==============================="        cat $COLORED | nl        echo "============================ grep results ==============================="        prompt="Enter a number between 1 and $max or anything else to quit: "        inp=$(rlwrap -H $RLHIST bash -c "read -p \"$prompt\" inp; echo \$inp")        if ! echo "$inp" | grep -q '^[0-9][0-9]*$' || [ "$inp" -gt "$max" ]; then                break        fi        filename=$(cat $UNCOLORED | awk -F: "NR==$inp"' {print $1}')        linenum=$(cat $UNCOLORED | awk -F: "NR==$inp"' {print $2-1}')        vim +:"$linenum" +"norm zz" +/"${pat}" "$filename"done