Efficient Editing With vim
jmcpherson.org
jmcpherson.org
:q
Instead of switching to the mouse and hitting the "x". Then I had to explain to the person that I wasn't sticking my tongue out at them.Also using vim will cause your escape key to be heavily hit constantly after typing anything especially if you are not sure what mode you are in, then only realizing you are not in vim period.
Oh, wait . . .
inoremap jj <Esc>Once I actually buckled down and started learning how to use it, I was surprised by how quickly and easily a natural feeling of "this is how it should be" developed while using Vimperator. Of course, there's a lot of positive transference of knowledge from my heavy use of Vim itself, but still -- I didn't expect to find it this easy.
I think part of the reason may be that every single keyboard-driven browser I have ever used before (Lynx, W3m, Links, et cetera, ad infinitum) was so awful as a Web interface that I became convinced Web browsers were a uniquely GUI-suited type of application. Vimperator is definitely changing my mind.
Thank goodness.
Put the following in ~/Library/KeyBindings/DefaultKeyBindings.dict
{ "^w" = "deleteWordBackward:"; }
GTK:
echo 'gtk-key-theme-name = "Emacs"' >>~/.gtkrc-2.0
gconftool -t string --set /desktop/gnome/interface/gtk_key_theme Emacs
Windows:
... uh ...
Ugh... I decided to edit some more.. Hm.... ughh... more....
To make this work with MacVim on a Mac:
:set editor="/Applications/MacVim.app/Contents/MacOS/Vim -g -f"Thank you.
. . . or maybe Vim of Warcraft. I guess VoW is a better acronym than WoV.
True story.
I don't care how many built-in debuggers your IDE has; if I can't navigate it like I can vim, it's infinitely less productive for me.
alias :e=vimhttp://vimperator.org/trac/wiki/Vimperator
For keyboard lovers.
For the best navigating experience, I feel Opera does really well. You keep one hand on the keyboard (nearing 1, 2 to switch tab; and z, x to move back & forth in history) and one hand on the mouse to click around & do gestures.
The thing I want to point out is how loathe I became to switch to that trackpad. Vimperator makes you despise flash even more.
Since the Web is, a lot of the time, basically a read-only medium with occasional need for limited editing -- and, when done well, it's a primarily textual medium -- the vi interface philosophy turns out to be quite appropriate. If you dislike having to switch interface contexts between keyboard and mouse because you're a touch-typist who has learned the efficiency and power of a keyboard driven interface for text editing, a browser that does the same thing is a very attractive idea.
Unfortunately, most people's experience of text user interface browsers is limited to the shite that has been available for more than a decade, such as the ubiquitous Lynx. While it's entirely keyboard driven, it's not a good TUI. It is, in fact, a crap TUI. Vimperator, however, has managed to improve on the failures of all other TUI Web browsers I've ever seen by importing vi idioms to the context of Web browsing -- improve on it so much that it blows away both TUI and GUI browsers, at least for me.
I also use a window manager with a keyboard driven interface, and I probably do more typing online than the vast majority of Web browser users. With all that in mind, keeping one hand on the keyboard and the other on the mouse would be broken up a lot by having to get my hands back to home row on the keyboard so I could do things like type in the browser, switch workspaces and do work there, and so on. At least 98% of the time, Vimperator obviates the need to keep one hand on the mouse the way you do it, which means there isn't any interface context switching going on in my brain at least 98% of the time for me, whereas without Vimperator I'd spend more like 60% of the time I'm using the Web browser also using a mouse and would have to switch back to home row every time I need to copy text to or from Vim in a terminal emulator (for instance).
Now, the only times I need a mouse in the browser is when I want to do something like click the upvote arrow here at HN or do something in a Flash object (such as start the Flash player, since I use Flashblock).
I used to believe that for the best browsing experience, a mouse was necessary for the majority of uses, because the Web is an inherently graphical medium. Even essentially pure-text pages seemed that way to me, because things like hyperlinks are location-specific. Vimperator has allowed me to learn the error of my reasoning in that regard.
set editing-mode vi set keymap vi
:-P
{edit} not to start a flame war.. to each their own {/edit}
http://sob.apotheon.org/?p=981
It's sort of a "ha ha only serious" moment.
:tabnew file
Opens up a new tab, :tabn
Goes to the next tab, and :tabp
Goes to the previous tab. Works great in both gui and non-gui mode. set guitablabel=(%N%M)\ %f :help setting-tabline " tab navigation
map <A-1> 1gt
map <A-2> 2gt
map <A-3> 3gt
map <A-4> 4gt
map <A-5> 5gt
map <A-6> 6gt
map <A-7> 7gt
map <A-8> 8gt
map <A-9> 9gt
map <A-0> 10gtMaybe that's just me, though.
set bufhidden
nmap <C-h> :bp
nmap <C-l> :bn
If you put this in your .vimrc file, you'll need to put a '^M' at the end of the nmap lines. You do this by doing <C-v><C-m> and it puts in a special character that means newline. Then you can switch between open buffers with ctrl+l and ctrl+h even if you have unsaved changes. it will end up looking like this: set bufhidden
nmap <C-h> :bp^M
nmap <C-l> :bn^M
Unfortunately if you have many files open and don't touch them all it prevents you from quitting with a message 'E173: 17 more files to edit'. I haven't worked out how to obliterate this without damaging features I want (e.g. not quitting when there's unsaved data in those other files).The default vim that ships with linux distributions is often a pile of junk that has been hacked by the distribution, is missing features like these. You want to get vim-extended under redhat-like distributions (they've significantly improved the quality if their junk vim in recent releases), and vim-nox or vim-full in debian-like distributions.
And I think you mean "set hidden".
And regarding E173: You can :qa, which won't lose any unsaved changes.
And the proper vim package for Debian or Ubuntu is "vim". "vim-full" is the old name and it just installs "vim".
Open up a file, :split a new one, and then try these:
map <C-j> <C-w>j80<C-w>+ " up one window, maximized map <C-k> <C-w>k80<C-w>+ " down one window, maximized map <C-h> 80<C-w>+ " maximize current window map <C-i> <C-w>= " all windows equal height
Open up a file, :split a new one, and then try these:
map <C-j> <C-w>j80<C-w>+ " up one window, maximized map <C-k> <C-w>k80<C-w>+ " down one window, maximized map <C-h> 80<C-w>+ " maximize current window map <C-i> <C-w>= " all windows equal height
g$ - move cursor to last displayed character of line
Tx - move cursor backward and to the right of the first occurrence of x (reverse of tx)
And get started with split views:
^ws - horizontal split view
^wv - vertical split view
^w{h,j,k,l} - move to window in respective direction
Some decent scripts to get started with:
minibufexpl.vim: http://www.vim.org/scripts/script.php?script_id=159
surround.vim: http://www.vim.org/scripts/script.php?script_id=1697
More of a full-fledge suite, a frontend to a head{ed,less} Eclipse server: http://eclim.sourceforge.net
Hmm. . . .
W - move forward a Word
B - move backward a Word
If you guys love these kind of vim related posts, a while ago I had collected some good articles with brilliant tips:
http://durdn.com/blog/2008/11/26/vim-mind-share-soaring-roun...
:tag yourMethodNameHere
Tab-completion works, so typing ":tag yourM", and pressing tab repeatedly cycles through all the tags with that prefix (you need to have created the tags file with ctags first).It's useful to note that when searching through help you type something like:
:help 'si'
To get help on a variable and: :help :si
To get help on a command. The first form would take you to the help entry for 'smartindent' and the second would take you to the entry for :simalt. If you just use: :help si
It will just find the first match for 'si', which in this case is the tag :si and not the tag 'si'.Other possible confusions with :help are:
:help tab
Will take to the help for <Tab> (the tab key/tab character), whereas the help page for all the things related to Vim tabs is: :help tabpage
(though :help tabs will take you to the :tabs command which is part of the tabpage help doc)And what's up with highlighting the most abused and misunderstood option ever? 'cindent' replaced 'smartindent', and usually you want "filetype indent on" in your .vimrc, not "set si" or "set cin".
CTL-D is a sort of intelli-suggest in context (except it's move 1/2 page down in command mode)
:help<CTL-D> gives variations of help in your installation.
:help <CTL-D> (help then space then control-D) gives more variations.
:help help<CTL-D> (ask for help on help, with a control-D immediately after the last p) gives more variations on help.
:help c_CTRL-D (literally typed just like that) is the help entry for using CTL-D on the command line.
:help CTRL-D<CTL-D> (everything up to the first D literally, then control-D) lists all the different help subjects for CTRL-D in various contexts.
:<CTL-D> (control-D immediately after typing colon) lists all the things you can do on the command line, including help.
Help.
Users who want to run Windows vim with no titlebar, create a file _vimrc in your base vim directory (on my windows desktop it's C:\Program Files\Vim). In this, put this line:
set guioptions-=T :help guioptionsBlockwise selection mode is available in almost every Windows editor I use - from the Delphi IDE, Visual Studio, even to Notepad2, Shift+Alt does block selection, or alternatively Alt + mouse selection.
E.g., in vim say I have a list like this that I wanted to append a period to on each line (a simple example, but you can see its uses):
foo
bar
baz
I would just type block-wise select it (<c-v>$jj) and then type A.<esc>I use this feature all the time.
No more feeling around folder structures with ':e'!
This works for me personally because I very rarely find myself even thinking about or noticing the true CAPS key, but if you are stuck on your CAPS bein CAPS, then this wouldn't be for you :!)
Firefox: you can do a quick search hitting '/' Skype [Mac]: you can replace text in your last sent message with the 's/<old>/<new>/' syntax
I would love to hear about other apps with Vim-ish behavior :)
VIM IS FULL OF WIN!
document.getElementById('asweetid')
and you want to grab just the id for use elsewhere. In command mode pressing f' will move your cursor to the quote, yf' will put 'asweetid' into your yank register and a p anywhere else will paste it. I also make heavy use of ctx where x is a character on a line that I want to replace up to. The best part about vim, I think, is how I think about the commands in my head and they just kind of flow out of my fingers.
"Hmm I want to change (press c) to (press t) that closing paren (press shift 0)."
Even just typing that my left hand instinctively moved toward the caps lock to go to command mode.
It's helped me polish off those last few vim commands that I never got used to. I recommend looking at it daily.
That's the tutorial that fed me that chart in easy-to-manage pieces, easing me into vim nicely.
Also highly recommended, the rant by the same guy: http://www.viemu.com/a-why-vi-vim.html
add xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape' to your ~/.xinitrc on linux
vi is the only Rogue-like where you can get real work done with it. And every time you learn a new trick it's like your XP level or attribs go up, or you've descended down to a new more evil level of the dungeon, with more powerful monsters to fight with your enhanced vi-fu.
I will never look at the king of all editors quite the same way. You have my thanks, mkramlich. May your life be long and prosperous.
(I totally didn't mean that to sound like a Vulcan blessing, I swear.)