(1) I want to compare two or three files (compare-windows) but I dont
want to save them in files,
Then you want to compare not files but buffers, no?
only as scratch buffers.
Do you mean buffer `*scratch*' or just throw-away buffers?
You can open any buffers you want, using `C-x b'. The buffer need not exist
first.
C-x 2 replicates the same buffer in two different windows.
Then you are not comparing buffers or files, but the contents of windows
(`compare-windows', as you mentioned).
Consider using different, throw-away buffers, and using `ediff-compare-buffers'.
Suppose the above is solved, then how to have a nice key binding if
there is no pre-existing one as I dont want to deviate from the normal
defaults, but only on these few occasions.
Personally, I use these bindings:
C-= b ediff-buffers
C-= d diff
C-= e ediff-files
C-= f ediff-files
C-= w compare-windows
http://www.emacswiki.org/emacs/setup-keys.el