如何在查看文件之间中止vimdiff?

m.d*_*han 6 svn vim diff

在我的.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)

Ing*_*kat 2

由于 Vim(diff) 是通过文件对顺序调用的(通过 Subversion),因此 Vim 的退出状态可以很好地表明整个过程将被中止。该:cquit命令退出并显示错误代码。如果周围的可执行文件已经因错误而中止循环,那么您就完成了。否则,就必须修改。由于您似乎有一个额外的包装脚本vimdiff,因此该脚本不得吞咽 Vim 的退出状态(看起来确实如此)。