在我的.subversion/config
文件中,我设置diff-cmd
了一个调用vimdiff
查看更改的脚本.
以下是我的问题:我正在查看两个svn URL之间的差异,其中有10个文件被修改.该svn diff url1 url2
命令将打开第一个文件的差异.发布:vim中的qa会显示第二个文件的差异.现在,有没有办法完全退出vim,中止进一步查看差异(除了运行:qa剩余8次)?
更新:以下是我的脚本:
#!/bin/sh
# use vimdiff to view diffs
DIFF="/usr/bin/vimdiff -o"
NUM=$# # number of arguments
LEFT=${6} # old file
RIGHT=${7} # new file
L_TITLE=${3} # actual name and revision of old file
R_TITLE=${5} # actual name and revision of new file
ST="${L_TITLE}"
# get the file name
NAME=`echo $ST | tr -s ' ' '\n' | head -1`
L_BRANCH=`echo $L_TITLE | tr -s ' ' '\n' | head -2 | tail -1`
R_BRANCH=`echo $R_TITLE | tr -s ' ' '\n' | head -2 | tail -1`
# get the old and new revision numbers
L_REV=`echo $L_TITLE | tr -s '(' '\n' | cut -d ')' -f1 | tail -1 | tr -s ' ' '_' `
R_REV=`echo $R_TITLE | tr -s '(' '\n' | cut -d ')' -f1 | tail -1 | tr -s ' ' '_' `
L_REV=`echo "${L_BRANCH}__${L_REV}"`
R_REV=`echo "${R_BRANCH}__${R_REV}"`
# invoke vim
$DIFF $LEFT $RIGHT -c "setl stl=$NAME%20{'$L_REV'} | wincmd W | setl stl=$NAME%20{'$R_REV'}"
Run Code Online (Sandbox Code Playgroud)
由于 Vim(diff) 是通过文件对顺序调用的(通过 Subversion),因此 Vim 的退出状态可以很好地表明整个过程将被中止。该:cquit
命令退出并显示错误代码。如果周围的可执行文件已经因错误而中止循环,那么您就完成了。否则,就必须修改。由于您似乎有一个额外的包装脚本vimdiff
,因此该脚本不得吞咽 Vim 的退出状态(看起来确实如此)。