Don't tell anyone, but I decided to try to use vim as my primary editor for a week. I have actually used both vim and emacs for years, but I usually only used vim for viewing files and emacs for editing them. This week is vim full time. I like emacs, but it has been doing something annoying that I haven't quite been able to track down. There is some keystroke that is very much like "save file" that I keep hitting that seems to just lock up my emacs window. To recover, I inevitably have to kill my entire emacs session (since I use the emacs server). Very minor, but annoying.
I already have vim set up to do everything I want, really. Its tag support
seems to be a bit better, and I typically use tags a lot. The startup time of
vim is much shorter, which is nice. The one emacs extension that I use the
most is magit (a git repository manager
in emacs), and I worried that I wouldn't be able to find a vim equivalent. How
naive. vim-fugitive fills the same
role in vim. It is not quite as polished, especially the interface for adding
only part of a change (equivalent of git add -p
). However, it gets the job
done admirably. Of course, I was missing the function I wrote for emacs to
turn a buffer of C code into LLVM assembly. Here is a vim version:
" This is a convenience function to turn a C function into LLVM bitcode,
" displaying the result in a split window.
command! LLVMIZE call LLVMToNewWindow()
function! LLVMToNewWindow()
let TempFile = tempname()
let SaveModified = &modified
exe 'w ' . TempFile
let &modified = SaveModified
exe 'split ' . TempFile
if executable('opt')
let opt = 'opt'
elseif executable('opt-3.2')
let opt = 'opt-3.2'
elseif executable('opt-3.1')
let opt = 'opt-3.1'
elseif executable('opt-3.0')
let opt = 'opt-3.0'
endif
exe 'silent %! clang -x c -emit-llvm -c -o - - | ' . opt . ' -S -mem2reg -basicaa -gvn'
setlocal nomodifiable
setlocal buftype=nofile nowrap
setlocal syntax=llvm
endfunction
I would say this is a very unpleasant language to work in, but it is about as usable as elisp at the end of the day.