How to ‘diff’ two subroutines in the same file in Vim?
You cannot do this within the original file, but you can do this without using separate files, only separate buffers. This should work if you copied one subroutine in register a
(for example, with "ay
typed in Visual mode) and other subroutine in register b
:
enew | call setline(1, split(@a, "\n")) | diffthis | vnew | call setline(1, split(@b, "\n")) | diffthis
To automate:
let g:diffed_buffers = []
function DiffText(a, b, diffed_buffers)
enew
setlocal buftype=nowrite
call add(a:diffed_buffers, bufnr('%'))
call setline(1, split(a:a, "\n"))
diffthis
vnew
setlocal buftype=nowrite
call add(a:diffed_buffers, bufnr('%'))
call setline(1, split(a:b, "\n"))
diffthis
endfunction
function WipeOutDiffs(diffed_buffers)
for buffer in a:diffed_buffers
execute 'bwipeout! ' . buffer
endfor
endfunction
nnoremap <special> <F7> :call DiffText(@a, @b, g:diffed_buffers)<CR>
nnoremap <special> <F8> :call WipeOutDiffs(g:diffed_buffers) | let g:diffed_buffers=[]<CR>
Note that you may want to set hidden
option if Vim refuses to abandon changed file (see :h abandon
).
how can I diff two sections of the same file?
The linediff plugin for Vim works well for me. Visually select one section of your file and type :Linediff
. Visually select the other section and type :Linediff
. It will put vim in to vimdiff mode, showing only the two sections you highlighted previously. Type:LinediffReset
to exit vimdiff mode.
More info:
https://unix.stackexchange.com/a/52759/32477
https://superuser.com/a/414958/199800
What tool can do a visual comparison of two sections within the same file?
I use Beyond Compare (not free, but I think a shareware version is available). You can select the same file for left and right sides, then right-click the beginning of your section on each side and select "Align Manually". This would allow you to compare two sections of the same file relatively easily.
Overall, I highly recommend the product. I haven't tried version 3, which is what they currently have on their Web site, but version 2 is a fabulous tool. A+
How to diff two regions of the same file in Eclipse
Seems there was somewhat usable answers in this question, a question articulating the same need. But, again those answers focus on finding duplications, not vizualising it.
Two suggestions that works are KDiff3 and Diffuse. Both allow you to open up the same file twice or paste different sections in the panes. There seems to be no way to use them from Eclipse though.
How do I diff the same file between two different commits on the same branch?
From the git-diff
manpage:
git diff [--options] <commit> <commit> [--] [<path>...]
For instance, to see the difference for a file "main.c" between now and two commits back, here are three equivalent commands:
$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c
git diff two files on same branch, same commit
You don't need git for that, just use diff fileA.php fileB.php
(or vimdiff if you want side by side comparison)
unix diff side-to-side results?
From man diff
, you can use -y
to do side-by-side.
-y, --side-by-side
output in two columns
Hence, say:
diff -y /tmp/test1 /tmp/test2
Test
$ cat a $ cat b
hello hello
my name my name
is me is you
Let's compare them:
$ diff -y a b
hello hello
my name my name
is me | is you
Related Topics
Linux: How to Put a Load on System Memory
Open Eclipse Juno with Error "No More Handles ..." in Ubuntu 12.04
How to Compile Intel MAC Binaries on Linux
Checking for Null String in Bash
What Do I Need to Debug Pthreads
Using Socat for Raw Serial Connection
What Is The Maximum Allowed Limit on The Length of a Process Name
What Does an Asterisk at The End of a Mv Command Do
How to Store Output from Printf with Formatting in a Variable
Bash Will Not Auto-Complete (Tab) with Files
Sorting with Multiple Keys with Linux Sort Command
Why Having to Use Non-Blocking Fd in a Edge Triggered Epoll Function
Do I Need to "Enable" a Pcie Memory Region in a Linux 3.12 Driver