⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gvimdiff

📁 MSYS在windows下模拟了一个类unix的终端
💻
字号:
#!/bin/sh## gvimdiff: display highlighted differences between two files side-by-side in#           gvim## Note: This program uses the Unix trick of using its name to alter behavior.#       If this file is called gvimdiff, it brings up the differences in gvim.#       If it is called vimdiff, it brings up the differences in vim.  If it is#       called anything else, it fails with an error.  If you need vimdiff,#       create a symbolic or hard link from gvimdiff to vimdiff.## Author: Gautam H. Mudunuri (gmudunuri@informatica.com)## $Revision: 1.1.1.1 $## Get my name and verify it and determine whether to use vim/gvimprogname=`basename $0`case "$progname" in    vimdiff)        vim_exe="vim"        ;;    gvimdiff)        vim_exe="gvim"        ;;    *)        echo >&2 "This program has an invalid name \"$progname\""        exit 1        ;;esac# Display usage and exitUsage(){    # Options common to vimdiff and gvimdiff    options="[ -s ]"    options_desc="\   -s          do not display identical lines   -w width    width of diff output               (default is set for diffs of 80 column wide files)"    # Add gvimdiff specific options    [ $vim_exe = "gvim" ] && {        options="$options [ -f font ] [ -n ] [ -w width ]"        options_desc="\   -f font     font to use for display   -n          do not create a wide window               (useful if your display is not too wide)$options_desc"    }    # Display usage and exit    echo >&2 "\$progname: \display highlighted differences between two files side-by-side in $vim_exeUsage: $progname $options arg1 arg2Both the arguments must be file names OR one must be a file name and theother a directory name.  If one of the arguments is a directory name, itrefers to the file in that directory with the same name as the otherargument.Options:$options_desc"    exit 1}# Parse commandlinen_flag="n"s_flag="n"width=font=while getopts f:nsw: optiondo    case "$option" in        f)            [ $vim_exe != "gvim" ] && Usage            [ "$font" != "" ] && Usage            font="$OPTARG"            ;;        n)            [ $vim_exe != "gvim" ] && Usage            n_flag="y"            ;;        s)            s_flag="y"            ;;        w)            [ "$width" != "" ] && Usage            width="$OPTARG"            ;;        *)            Usage            ;;    esacdoneshift `expr $OPTIND - 1`[ $# -eq 2 ] || Usage# Arguments must be files or directoriesarg1="$1"[ -f $arg1 -o -d $arg1 ] || {    echo >&2 "$progname: $arg1 is not a valid file or directory"    exit 1}arg2="$2"[ -f $arg2 -o -d $arg2 ] || {    echo >&2 "$progname: $arg2 is not a valid file or directory"    exit 1}# Both arguments cannot be directories[ -d "$arg1" -a -d "$arg2" ] && {    echo >&2 "$progname: $arg1 and $arg2 are both directories"    echo >&2 "Atleast one file must be specified"    exit 1}# If one argument is a directory, convert it to a filename using the other,# otherwise use it directly[ -d "$arg1" ] && file1="$arg1/`basename $arg2`" || file1="$arg1"[ -d "$arg2" ] && file2="$arg2/`basename $arg1`" || file2="$arg2"# Both files must be readable[ -r "$file1" ] || {    echo >&2 "$progname: cannot open $file1 for reading"    exit 1}[ -r "$file2" ] || {    echo >&2 "$progname: cannot open $file2 for reading"    exit 1}# Width not specified, use default for 80-column wide files and 9 character# sdiff "gutter".  (169 = 2 * 80 +  9)[ "$width" = "" ] && width=169# Validate widthexpr "$width" + 0 > /dev/null 2>&1status="$?"[ $status -eq 0 -o $status -eq 1 ] || {    echo >&2 "$progname: invalid width \"$width\""    exit 1}[ $width -gt 0 ] || {    echo >&2 "$progname: width $width cannot be zero or negative"    exit 1}[ $width -ge 49 ] || {    echo >&2 "$progname: width $width is too small, should be atleast 29"    exit 1}[ $width -le 209 ] || {    echo >&2 "$progname: width $width is too large, should be atmost 209"    exit 1}# Compute width per file, allowing 9 characters for the sdiff "gutter"file_width=`expr '(' $width - 9 ')' / 2`# Compute the range of the number of characters we can expect before the sdiff# separators |, < and >.  This is range rather than a specific number because# the presence of tabs can shorten the lengthmin_chars=`expr $file_width - 5`max_chars=`expr $file_width + 2`# Define Vim commands for manipulating the sdiff bufferbuffercmds="    set ts=8 et noro    retab    set nomod ro nows"# Define Vim commands for sdiff syntax highlighting.  We are going to define# our custom syntax that is not loaded through the standard syntax mechanism.# But we still need the standard colors to be defined.  So turn syntax on to# get them and immediately turn it offsyncmds="    syn on    syn off    syn match sdiffRemoved \"^.\{$min_chars,$max_chars}  <\"    syn match sdiffChanged \"^.\{$min_chars,$max_chars}  |  .*$\"    syn match sdiffAdded \"^.\{$min_chars,$max_chars}  >  .*$\"    hi link sdiffRemoved  Comment    hi link sdiffChanged  PreProc    hi link sdiffAdded    Identifier    let b:current_syntax = \"vimdiff\""# Help commands (doesn't always work)helpcmd_next="\    echo 'Ctrl-N: Next Difference Line   Ctrl-P: Previous Difference Line'\"helpcmd_prev="\    echo 'Ctrl-P: Previous Difference Line   Ctrl-N: Next Difference Line'\"# Define Vim mappings to jump to next/previous differencemapcmds="    nmap <c-n> /^.\{$min_chars,$max_chars}  [<>\|]/e<nl>:$helpcmd_next<nl>    nmap <c-p> ?^.\{$min_chars,$max_chars}  [<>\|]?e<nl>:$helpcmd_prev<nl>"# Collect vim commands to be runvimcmds="    set titlestring=\\$progname\\ \\$arg1\\ \\$arg2    set noml nows nowrap go=agrb ch=2    $buffercmds    $syncmds    $mapcmds    execute \"normal gg0$max_chars|3l\"    $helpcmd_next"# Set sdiff_flags flagssdiff_flags=[ "$s_flag" = "y" ] && sdiff_flags="$flags -s"# Set vim flagsvim_flags="-R -N"[ "$font" != "" ] && vim_flags="$vim_flags -fn $font"[ $n_flag != "y" -a $vim_exe = "gvim" ] && {    vim_flags="$vim_flags -geometry $width"}# Run the diff and display the output in gvimsdiff -w$width $sdiff_flags $file1 $file2 | $vim_exe $vim_flags -c "$vimcmds" -

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -