02.26 不喜欢 IDE?试试看 grepgitvi

不喜欢 IDE?试试看 grepgitvi

一个简单又原始的脚本来用 Vim 打开你选择的文件。-- Yedidyah Bar David(作者)


像大多数开发者一样,我整天都在搜索和阅读源码。就我个人而言,我从来没有习惯过集成开发环境 (IDE),多年来,我主要使用 grep (找到文件),并复制/粘贴文件名来打开 Vi(m)。

最终,我写了这个脚本,并根据需要缓慢地对其进行了完善。

它依赖 Vim 和 rlwrap ,并使用 Apache 2.0 许可证开源。要使用该脚本,请 将它放到 PATH 中 ,然后在文本目录下运行:

<code>grepgitvi <grep> <grep>/<grep>/<code>

它将返回搜索结果的编号列表,并提示你输入结果编号并打开 Vim。退出 Vim 后,它将再次显示列表,直到你输入除结果编号以外的任何内容。你也可以使用向上和向下箭头键选择一个文件。(这对我来说)更容易找到我已经看过的结果。

与现代 IDE 甚至与 Vim 的更复杂的用法相比,它简单而原始,但它对我有用。

脚本

<code>#!/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> <grep>#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/<grep>/<grep>/<code>

via: opensource.com

作者: Yedidyah Bar David 选题: lujun9972 译者: geekpi 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出


分享到:


相關文章: