美好的一天,
我正在BASHRC文件中编写一个简单的脚本,以容纳我在上一个问题中无法解决的问题:
Side-by-side view in Vim of svn-diff for entire directory
我基本上生成了一个具有“修改”SVN状态的所有文件的列表.对于这些文件中的每一个,我想创建一个并排的可视差异,将其转换为HTML,然后将其附加到正在运行的HTML文件.
例如:
MODIFIED_FILES="$(svn status | grep "^M" | cut -c9-)" for i in ${MODIFIED_FILES}; do # Generate a side-by-side diff in vim via VIMDIFF # Convert via ToHTML # Append the HTML file to a file called "overall_diff.html" done
通过创建文件的干净副本,并拥有修改后的文件的副本,我可以轻松地完成vimdiff.
vimdiff最初有一个问题,即:
2 files to edit Error detected while processing /Users/Owner/.vimrc: line 45: E474: Invalid argument: listchars=tab:>-,trail:.,extends:>,precedes:« Press ENTER or type command to continue
所以,我试图通过这个,所以我不必为列表中的每个文件按ENTER键.
接下来,我需要让vimdiff调用ToHTML命令,然后发出命令将HTML缓冲区附加到正在运行的文件:
:'<,'>w! >>overall_diff.html
简而言之,我该怎么做:
>调用vimdiff时,使用listchars解决此问题.当我运行vim时,这个问题不会发生,所以当我运行vimdiff时,我不知道它为什么会出现.
>将冒号命令列表传递给VIM,让它在启动时运行它们,而不需要更改我的.vimrc文件.
解决方法
最后,我创建了一个单独的VIMRC文件,该文件在运行时传递给vim命令,通过:
`vim -d file1 fil2 -u my_special_vimrc_file` function createVimDiff() { # Create some buffers TEMP_FILE="./tmp_file" VIM_TEMP="./temp.html" REVISION="" BUFFER_FILE="./overall_diff.html" # Get a list of the files that have changed MODIFIED_FILES="$(svn status | grep '^M' | cut -c9-)" # Remove buffers rm "${BUFFER_FILE}" for i in ${MODIFIED_FILES}; do # Remove intermediate buffers rm "${TEMP_FILE}" rm "${VIM_TEMP}" # Get the current SVN rev number for the current file REVISION="$(svn info ${i} | grep Revision)" # Echo the name of the file to the report echo "FILE: ${i}" >> "${BUFFER_FILE}" # Same with the revision number echo "${REVISION}" >> "${BUFFER_FILE}" echo "<br>" >> "${BUFFER_FILE}" # First print a copy of the unmodified file in a temporary buffer svn cat "${i}" > "${TEMP_FILE}" # Now print the unmodified file on the left column,and the # modified file in the right column,so they appear side-by-side vim -d "${TEMP_FILE}" "${i}" -u ~/.vimdiff_rc # Write the side-by-side diff to a file cat "${VIM_TEMP}" >> "${BUFFER_FILE}" echo "<br>" >> "${BUFFER_FILE}" done # Cleanup temporary buffers rm "${TEMP_FILE}" rm "${VIM_TEMP}" }
" Convert the diff to HTML autocmd VimEnter * silent TOhtml " Write output to temporary buffer autocmd VimEnter * w! ./temp.html " Quit VIM autocmd VimEnter * qa!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。