How to make Vim like Sublime Text
disadvantages:
- synchronous
- no graphics support
- no HTML rendering support (like Javadoc in Eclipse)
- vim "on-boarding" needs a lot of work:
- vim.org is ugly and disorganized
- vim.wikia.com is ugly and spammy (yet helpful)
- not at all obvious where to find a recent windows build
- needs a new icon
bright spots:
- http://vimeo.com/4456458
- vimcasts.org
- usevim.org
- the brain damage is forwards- and backwards- compatible:
- besides vim being on every OS, vim key bindings are available in every major environment:
- gmail, calendar, finance (!)
- github
- man; tmux
- emacs (evil mode)
- sublime
- eclipse (vrapper, now a very active project)
- visual studio (vsvim)
- even bash, chrome, and firefox, if you're into that
- non-standard key bindings come with you, too: "find all references", "go to definition", "toggle breakpoint"
- snippets/templates
I became familiar with Vim very gradually. By the time I found out about pico, I had long been editing X86Config with i
and :wq
. I was thankful for the syntax highlighting and remote availability writing C and Java on a Solaris ssh account. I embraced visual-block-mode during late nights at the CMOS lab after editing hspice input vectors manually became intolerable. I internalized [hjkl] by using Gmail shortcuts. And on OS X, actively-developed open source editors are few.
So, Vim does not repulse me.
On the contrary, ctrlp is actually the first time I’ve been excited by Vim.
unite.vim is a clever and thoughtful project. The unix approach of “everything is a file” has numerous advantages that have been extolled well enough; similarly, unite.vim harmonizes Vim’s “everything is a buffer” approach with the idea of “sources”–basically, lists of things. In unite.vim, you can search for files, then query the set of unite.vim actions available on the selected files! That’s awesome. You can query the set of vim commands, then query the output of the vim command. It removes the friction of :redir and registers. It replaces pulldown (GUI) menus, yankring, minibufexpl, :ls, …
ctrl-o
starts to get out of control.]h
all the time now (move to the next "hunk" of changes). (vim-signify is a high-quality alternative that works with more than just git.)]}
and ]m
are great; I wish there were a plugin that extended it for languages that don't use curly braces (def, end).%
of course.zz zt zb
are wonderful and I abuse them all the time.:CtrlPBufTagAll
)
Sublime Text has clear attention to detail. Emphasis on text-file configuration files is notable and signals that version control and portability is a priority. The multi-platform support is an achievement that is under-rated and remarkable in its consistency.
But before buying it, I decided I would donate $50 to each Vim and Notepad++. And then I started to wonder if maybe the features I liked in ST2 actually existed in the editors I had been unconsciously using for all of my non-IDE editing.
After pondering vim for a few months, I now realize that vim could be regarded as a starter kit for building your own custom text editor.
Vintage mode is something that puzzles me. If you want Vim behavior, use Vim.
When a system is made of things that are all the “same”–that is, of the same (derived) type, or having the same interface, or having some shared subset of predictable characteristics–something exciting happens: you can combine the things into really interesting things.
- reddit “thing” table
- tmux
- i3wm
- unix file descriptor
- unix pipe
- powershell object
- monad
- vim buffer
- unite.vim source
- modes / modal editing
- composition of: commands; buffers; sources/lists;
You can’t combine a vector with scalar, a milligram with a tesseract, or a Word document with a puppy.
on the idea of persistent REPL state:
one of smalltalk's language characteristics is the idea of images, something which has to be mandated within the language itself to exist.
A smalltalk image essentially captures the program's state exactly, much like a virtual machine image in VMWare/Parallels/Virtual Box.
This happens to turn every development session into a deliverable product, and more ambitiously every delivered product's error state can be captured exactly, making debugging end user problems be much easier than what having a coredump or error report of the situation available.
Stock vim sucks. Install sensible.vim. There, now you have an editor with sane defaults.
If you have added preferences to your .vimrc, then you’ve written a plugin. That’s it. There is nothing vain about adding plugins to vim: composition isn’t much of an advantage if you want everything baked in. On the other hand, it doesn’t make sense to Frankenstein vim out of its scope.
Go further: you can approximate some of the compelling features of acme:
- interact with shell commands using :r!cmd
- interact with editor functions and state using ctrl-r=