我刚刚在 .vimrc 中创建了一个新映射,以便在新窗口中快速打开我正在使用的存储库的差异。
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Quickly see diff
" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Open /tmp/tmp.diff in a new split
" delete the entire content
" read in the diff
nnoremap <leader>d :vsp /tmp/tmp.diff<CR>ggdG<bar>:r !hg diff<CR>
" Automatically write the diff when exiting the buffer so we're not asked to
" save it
autocmd! BufUnload /tmp/tmp.diff :w<CR>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我在退出缓冲区时使用 BufUnload autocmd 来保存文件,因为我不想每次查看差异时都手动写入文件。但我宁愿 Vim 不要警告我。
那么有没有一种方法可以在 Vim 中打开一个缓冲区,并且在有未保存的内容时不关心它是否关闭?如果我不必打开特定文件,而不是匿名缓冲区,我也希望它。
我宁愿不使用自动写入。
(我只是 Vim/Vimscript 的初学者,所以如果我应该为此编写一个函数,请告诉我)
我正在尝试编写一个循环,但这不起作用:
for t in `ls $TESTS_PATH1/cmd*.in` ; do
diff $t.out <($parser_test `cat $t`)
# Print result
if [[ $? -eq 0 ]] ; then
printf "$t ** TEST PASSED **"
else
printf "$t ** TEST FAILED **"
fi
done
Run Code Online (Sandbox Code Playgroud)
这也没有帮助:
$parser_test `cat $t` | $DIFF $t.out -
Run Code Online (Sandbox Code Playgroud)
Diff 显示输出不同(很奇怪,我看到所需错误行的输出,因为它被打印到 stdout,并且没有被 diff 捕获),但是当使用临时文件运行时,一切正常:
for t in `ls $TESTS_PATH1/cmd*.in` ; do
# Compare output with template
$parser_test `cat $t` 1> $TMP_FILE 2> $TMP_FILE
diff $TMP_FILE $t.out
# Print result
if [[ $? …Run Code Online (Sandbox Code Playgroud) 标题并不具体,但我很难识别正确的关键词,因为我不确定这里发生了什么。出于同样的原因,我的问题可能有重复,如 。如果是这样的话:对不起!
我有一个通过平面文件接收数据的 Linux 应用程序。我不知道这些文件是如何生成的,但我可以毫无问题地读取它们。这些都是短文件,每个文件只有一行。
出于测试目的,我尝试修改其中一个文件并将其重新注入到应用程序中。但是当我这样做时,我可以在日志中看到它在消息末尾添加了一个神秘的分页符(导致应用程序无法识别该消息)...
举例来说,假设我收到一个名为original的平面文件,其中包含以下内容:
ABCDEF
Run Code Online (Sandbox Code Playgroud)
我复制了该文件并将其命名为copy。
diff original copy
1c1
< ABCDEF
\ No newline at end of file
---
.> ABCDEF
And if I compare the size of my two files, I can see that original …
我尝试使用 git 存储库中的 diff 以及上次提交和 HEAD 检查代码行,但出现错误,
$ cloc -- diff 182712379cae1b953c5976854e735134530e8241 头
错误:
0 个文本文件。
0 个文本文件。
0 个文件被忽略。
2个错误:无法读取:182712379cae1b953c5976854e735134530e8241
无法读取:HEAD
没什么可算的。
我正在与VS2005中的另一位C#同事合作,这是一个非常复杂的项目.但是,我们没有版本控制系统,我们互相发送最新版本并将更改复制到我们自己的文件中.
我们现在必须将两个文件(大多数项目是单个表单文件)合并到项目的最后一个版本中.
有什么建议?也许尝试差异工具?它必须快速完成,并且可能学习如何使用复杂的修订控制程序是不可行的.
我有一位不太了解源控制的教授.他要求我们使用注释来确定谁编写了每行代码.大多数类使用电子邮件作为版本控制,Visual C++作为语言导致一堆评论,插入符号和生成的代码.我的小组正在使用subversion和C#,我更愿意从存储库中获取历史记录,而不是在每行上都添加注释来混淆代码.
我需要一种方法来生成所有签入的可查看历史记录,其中显示每个用户修改的源数量.
像这样的格式会很好
Andy
/trunk/doc/file.txt (57%)
/trunk/project/app.h (100%)
Brian
/trunk/doc/file.txt (43%)
/trunk/project/app.cpp (60%)
Jeff
/trunk/project/app.cpp (40%)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?BASH有足够的力量做到这一点还是应该使用python?(我会在linux系统上生成diff)
我正在阅读其他人的Python代码,并看到这些符号出现在文件的顶部:
<<<<<< .mine
Run Code Online (Sandbox Code Playgroud)
还有
>>>>>>
Run Code Online (Sandbox Code Playgroud)
和
=======
Run Code Online (Sandbox Code Playgroud)
我不确定那是什么.编译时,解释器会在该行引发语法错误.
有谁知道这条线的含义?