使用vim编辑文件而不键入路径(类似于autojump)

时间:2017-12-12 01:59:14

标签: linux command-line-interface

几个月前,我在我的mac上安装了一个实用程序,这样就不用输入这样的东西了:

vim /type/path/to/the/file

我可以输入:

v file

10次中有9次会根据过去的历史记录猜出正确的文件,类似于autojump的工作方式。而不是输入vim我只需输入字母v即可。

我无法记住我是如何设置它的。它仍然可以在我的Mac上运行,但我在.bash_profile中看不到任何显示我是如何做到的。

我试图在我的linux机箱上运行它。

2 个答案:

答案 0 :(得分:1)

这可以在这里找到

https://github.com/rupa/v/blob/master/v

它也应该在Linux中运行。它是一个使用viminfo的bash脚本 历史文件填写部分字符串。

答案 1 :(得分:0)

啊!我找到了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}"