linux 如何使用vim编辑文件而不输入路径(类似于autojump)?

xmd2e60i  于 2023-06-05  发布在  Linux
关注(0)|答案(2)|浏览(281)

几个月前,我在Mac上安装了一个实用程序,这样就不用输入这样的东西了:
vim /type/path/to/the/file
我可以直接输入:
v file
10次中有9次它会根据过去的历史来猜测正确的文件,类似于autojump的工作方式。而不是输入vim,我可以只输入字母v
我不记得我是怎么设置的了。它仍然可以在我的mac上工作,但我在我的.bash_profile中看不到任何显示我是如何做到这一点的。
我正试着在我的linux机器上运行这个。

yks3o0rb

yks3o0rb1#

这个可以在这里找到
https://github.com/rupa/v/blob/master/v
它也可以在Linux中运行。这是一个bash脚本,它使用viminfo历史文件来填充部分字符串。
它可以通过brew install v安装在macOS上

8ehkhllq

8ehkhllq2#

啊!我找到了which的命令。这是神奇的剧本。我不能确定我是从哪里得到它的。

#!/usr/bin/env bash

 [ "$vim" ] || vim=vim
 [ $viminfo ] || viminfo=~/.viminfo

 usage="$(basename $0) [-a] [-l] [-[0-9]] [--debug] [--help] [regexes]"

 [ $1 ] || list=1

 fnd=()
 for x; do case $x in
     -a) deleted=1;;
     -l) list=1;;
     -[1-9]) edit=${x:1}; shift;;
     --help) echo $usage; exit;;
     --debug) vim=echo;;
     --) shift; fnd+=("$@"); break;;
     *) fnd+=("$x");;
 esac; shift; done
 set -- "${fnd[@]}"

 [ -f "$1" ] && {
     $vim "$1"
     exit
 }

 while IFS=" " read line; do
     [ "${line:0:1}" = ">" ] || continue
     fl=${line:2}
     [ -f "${fl/\~/$HOME/}" -o "$deleted" ] || continue
     match=1
     for x; do
         [[ "$fl" =~ $x ]] || match=
     done
     [ "$match" ] || continue
     i=$((i+1))
     files[$i]="$fl"
 done < "$viminfo"

 if [ "$edit" ]; then
     resp=${files[$edit]}
 elif [ "$i" = 1 -o "$list" = "" ]; then
     resp=${files[1]}
 elif [ "$i" ]; then
     while [ $i -gt 0 ]; do
          echo -e "$i\t${files[$i]}"
          i=$((i-1))
     done
     read -p '> ' CHOICE
     resp=${files[$CHOICE]}
 fi

 [ "$resp" ] || exit
 $vim "${resp/\~/$HOME}"

相关问题