
Vim for Humans - 0x54MUR41
https://vimebook.com/en
======
gbrown_
I've only skimmed this but there seems to be a focus on customizing and
plugins from the get go. I think it's worth getting to know Vim "as is" before
doing such things. Indeed there certainly some things that aren't the most
useful or obvious but it's good to understand their original intent.

Not to crap on the author of this but I'd recommend Drew Neil's Practical Vim
over this (and pretty much every other Vim book).

[https://pragprog.com/book/dnvim/practical-
vim](https://pragprog.com/book/dnvim/practical-vim)

~~~
exDM69
I kind of agree but vim's defaults are awful. Tim Pope has put together a good
set of non-opinionated defaults which don't change key bindings or customize
it otherwise [0]. I have a very similar vanilla setup with no plugins apart
from syntax highlighting for some languages not included by default.

[0] [https://github.com/tpope/vim-sensible](https://github.com/tpope/vim-
sensible)

~~~
allengeorge
That may be, but it's tough to use a customized vim on your local machine, and
then switch to a stock install on a server somewhere, no?

~~~
yodsanklai
I agree. Personally, I prefer getting used to the defaults than going through
the pain of customization. I tried it, but it meant additional syncing between
my machines, fighting with plugins, and it's not always possible to customize
vi mode in some environments (like Eclipse or Sublime).

Overall, I think vim is great for simple and fast editing, but as soon as I
need to work on a multiple files projects, I switch to something else,
possibly using vi mode if there's one (and even there, I wonder if I shouldn't
embrace mac os shortcuts once for all).

~~~
Lio
Well considering things like visual mode and line numbering are not defaults
that seems to be leaving an aweful lot of functionality switched off.

------
Philipp__
It took me a while to realize what really vim is for. What led me to
realization was switching to Emacs. I read this post, and second checkbox says
"modern customizable IDE". And I stopped there. Why you may ask? Well, I used
Vim for 3 years before trying Emacs this spring. And I loaded it with all the
heavy plugins(YCM), but Emacs led me to realization that Vim is more of an
editor than IDE. Even with plugins I think it just doesn't even come close to
Emacs, which has really nice ecosystem and plugins that are spot-on IDE
feeling (ENSIME, CIDER, Alchemist etc). When I configured Vim again few days
ago I realized how I misused Vim. My init.vim had about 150 lines of code,
with few plugins, and now it felt right. Just like it felt right to customize
the living hell out of Emacs. Again, this might be just my perception of
things, some other people like it the other way, different flavors for
different people, but it is how it _felt_ right for me personally, after
trying to understand philosophies and surroundings in which these wonderful
pieces of software were made.

~~~
gepoch
I will add some of my own opinions:

My feeling is that real value of Vim is its novel approach to modal text
manipulation, and you shouldn't let the fact that it has a standalone
lightweight reference implementation usefully installed on almost every
machine that you use confuse you.

Vim script is not a great plugin language, and the vim runtime itself is not
fantastic at doing things beyond the text editing. I think the activity around
NeoVim is good evidence for this. The community recognizes the constraints of
Vim, and seeks better plugin and runtime tooling to meet their needs.

My issue is: there are loads of great text editors that support the Vim
interface. Emacs, Atom, Sublime, whatever, all have very good Vim interfaces
and far superior languages and platforms for doing complex plugin work that
you need to support IDE-ish environments. NeoVim seems like a bit of a waste
to me, because I think it misses the point. Vim is not a platform. It's a
unique modal editing paradigm. Why make yet another Vim-binding-having
platform?

I guess what I mean is that vim should be left as vim. There are superior
platforms that implement the same interface, should you feel the need to
expand your tools. Vim does best as a portable minimal editor that you can use
everywhere. If you need something with more power, pick a better platform, and
run the Vim editing paradigm as an interface.

~~~
justinmk
> NeoVim seems like a bit of a waste to me, because I think it misses the
> point. Vim is not a platform.

Neovim is designed to be hosted (embedded). Embedding Neovim in a IDE
(platform) allows Neovim to be the editor while exposing the IDE as "the
platform".

It's also a guiding principle of Neovim to _not_ dictate what applications are
built with it, so yes, you _can_ leverage its API as a platform. But that's
not the singular purpose.

> I guess what I mean is that vim should be left as vim. There are superior
> platforms that implement the same interface,

There are no applications that implement Vim (except Neovim, which passes
Vim's test suite).

~~~
weaksauce
What's the process of embedding neovim into something like xcode? the thing
that always got me confused is how the IDE would handle the text changing on
an open file like that. What's the flow expected to be?

~~~
hderms
I'm guessing some kind of event system out of band that the IDE can hook into.
Using the OS for that is probably too low level to provide the experience
people expect.
[https://neovim.io/doc/user/msgpack_rpc.html](https://neovim.io/doc/user/msgpack_rpc.html)

------
gravypod
I wish I could use vim or emacs. I don't know if I'm stupid or something but
all of the key bindings, everything you have to remember, it just doesn't make
sense to me.

I wish there was something like nano + plugins. If I had that I could
implement most of what I need (other then auto-completion for a crap load of
languages).

~~~
ifoundthetao
Vim is very easy, I think it's just simple to get overwhelmed with it.

There are a couple of tools which gamify Vim. I personally haven't used them.
But some say they're pretty good.

For me, what worked was just jumping in and going whole hog. I tried disabling
the arrow keys in Normal Mode, so I would have to use hjkl for navigation. But
my keyboard puts the arrow keys in easy reach (Kinesis Advantage), so it
turned out not to be much of a need.

What you may like is turning on relative line numbers. That way you can
visually see what line you're at, and how many lines away your target is that
want to jump to. Then you can practice going 5k to go up five lines, or d2j,
to from where you are to two lines down.

This article was actually eye-opening for me: [https://yanpritzker.com/learn-
to-speak-vim-verbs-nouns-and-m...](https://yanpritzker.com/learn-to-speak-vim-
verbs-nouns-and-modifiers-d7bfed1f6b2d#.n1xc3qjkg)

Maybe it'll help you too.

:wq

~~~
jon_richards
Why do people not like :x ?

~~~
travv0
:wq is a natural extension of :w, and half the time I haven't even decided to
quit Vim until I've already typed the :w.

------
no_protocol
> 3.5 Our first plugin: the file explorer
    
    
      it would be cool to be able to open
      files without having to do File -> Open
      using the menu bar
    

How about using the :edit command?

> 3.5.1 Plugin manager: Pathogen

> 3.5.2 The NERD Tree: a file explorer
    
    
      The NERD Tree is a plugin that will
      allow you to display your directory
      and file tree directly in Vim
    

> 4.1 Learning how to move

Most distributions of vim include the netrw plugin for remote and local
directory browsing. Do we really need to learn how to install plugins before
even learning how to navigate within a file?

This book seems to focus on the basics of vim. Unfortunately, it falls into
the common trap of piling on many layers of unnecessary extras before
explaining the basic details. I would not recommend this resource to a
beginner.

~~~
cschmidt
Your opinion is quite common with old vim hands, but I would have to
respectfully disagree.

Someone learning vim is probably coming from Atom or Sublime. The defaults in
vim are so egregiously awful, that I don't think you can expect these folks to
stick with learning. Their productivity drops to zero - there isn't even
syntax highlighting - so they give up and go back to what they were using.

You have to get vim to a point where they can be sort of productive, if you
want them to stick with it. I think some customization is necessary for
beginners.

An alternate idea would be to use neovim, which fixes many of the defaults.

~~~
tragic
Seconded.

I switched to Vim as my primary editor about two months ago. I remembered how
much easier Emacs Live[0] had made my life when I was giving Emacs a serious
go a little whole ago, and found a sorta-equivalent for Vim[1] which smoothed
over a lot of the rough edges and put in some of the modern convenience an ST
die-hard like me would expect (autocompletion, package management and what
have you).

That left one remaining barrier, which is the weirdness of modal editing;
which is the important barrier, because the only reason you'd use vim is to
sign up to the pre-eminent modal editor.

Maybe, two new laptops from now, or one lonely weekend, I'll take a hacksaw to
spf13 and strip out the bits I don't need. But for a shallow onramp
experience, it's been a godsend.

[0] [https://github.com/overtone/emacs-
live](https://github.com/overtone/emacs-live)

[1] [https://github.com/spf13/spf13-vim](https://github.com/spf13/spf13-vim)

------
anondon
A little background. I am familiar with vi and use it only when I ssh into a
server.

But I never really felt it was more convenient or an improvement over a GUI
based text editor or IDE on my development machine. Eg- gedit for simple text
editing, Android Studio for android development, Atom for python coding.
Everything works out of the box with minimal tweaking required.

Genuine questions:

-At what point on the learning curve do you feel using vim is an advantage for speed of development, if at all?

-The common argument of only keyboard, no mouse when using vim... I don't get. Is using a mouse such a major factor that slows you down or affects you negatively?

~~~
clifanatic
Well, it depends on what you're doing. For example, if I want to duplicate a
line in vi, I can type 'yyp' and _bam_: duplicate line. With a keyboard and a
mouse, I have to reach over, select the whole line (being careful not to over
or under select), hit Ctrl+C, move the cursor down to the beginning of the
next line, and hit Ctrl+V. If I want to change the contents of a quoted
string, I can type 'f"lct"' and start typing. Again, with a mouse, I have to
select what I want to change: if I select too much, I can back up the mouse,
but if I accidentally started the selection on the second rather than the
first character, I have to abort the whole selection and start over again. If
I want to change each line from the current line to the next blank line to a
continuous quoted string, I can type ':.,/^$/s/\\(.*\\)/"\1" +/'. With a
mouse, I have to click the beginning of each line and cut+paste the quotes
into place, probably undoing at least a couple of times because I clicked the
wrong place, etc. etc.

I know, I'm talking about milliseconds (or nanoseconds) here, but when I use
vi, it's just, sort of "constant", like playing the piano. I never break my
rhythm.

~~~
munificent
> With a keyboard and a mouse, I have to reach over, select the whole line
> (being careful not to over or under select), hit Ctrl+C, move the cursor
> down to the beginning of the next line, and hit Ctrl+V.

Sure, but who does that?

In any text editor on the Mac its:

    
    
        - Command-Left to move to the beginning of the line
        - Shift-Command-Right to select to the end of the line
        - Command-C to copy
        - Command-V to paste
    

One annoying thing about that, though, is that it doesn't copy the newline
itself, so if you want to paste the line and the line terminator multiple
times, you need to do something more like:

    
    
        - Command-Left to move to the beginning of the line
        - Shift-Command-Right to select to the end of the line
        - Shift-Right to select the newline
        - Command-C to copy
        - Command-V to paste
    

But, of course, most full-featured text editors make that easier. In Sublime
and Atom, it's:

    
    
        - Command-L to select the current line
        - Command-C to copy
        - Command-V to paste

~~~
GrinningFool

            - [2] Command-Left to move to the beginning of the line
            - [3] Shift-Command-Right to select to the end of the line
            - [2] Command-C to copy
            - [2] Command-V to paste
    

Total keypresses: 9

Total keypresses for yyp: 3 (4 if you have to esc to normal mode first)

My point being that even the simple and straightforward actions you provided
are more complex than they seem.

~~~
aninhumer
Firstly, that's 6 keypresses, because you don't need to lift your finger off
Command.

Secondly, that's just using the minimal set of shortcuts that work _anywhere_.
If you're in an actual editor, it almost certainly has a shortcut like Ctrl-
Shift-D for duplicate line.

And I think a lot of vim users might be surprised how simple and
straightforward things can be in a modern editor.

~~~
GrinningFool
Absolutely right on the six, my bad.

------
em500
The thing that helped me most with vi(m) was this change of mindset: don't
treat Insert as an alternative mode. Instead, threat the append and insert
commands as any other command, just ones that happen to (often) take long
arguments, and make it a habit to always terminate those arguments with <esc>.

------
barcher
Setting up vim as an IDE is cool, but it certainly not a "first step." Better
to learn foundational vim concepts, and then make this decision.

[http://learnvimscriptthehardway.stevelosh.com/](http://learnvimscriptthehardway.stevelosh.com/)

------
BurningFrog
I continue to be baffled that software written 40+ years ago, to deal with
constraints and realities that are long long gone keep being used by people on
the cutting edge of technology change.

~~~
ancarda
I don't use Vim because I have to due to limitations, I use it because it's a
joy to use.

What would you suggest people use instead?

~~~
BurningFrog
I've been very happy with the IntelliJ, RubyMine, WebStorm family of IDEs.

They have similar UIs to all the other modern software I use, doesn't require
a learning curve to start typing, and have tons of features the vi/emacs
people don't miss because they don't know they exist.

I understand that it's hard for old timer to learn a new tool. I do _not_
understand why they're still taught to beginner programmers.

~~~
Lio
What features do you think we're missing from WebStorm?

I've used WebStorm quite a bit in an old job where it's use was mandated by
management.

What I found was that lots the headline features didn't work for the hairy old
JavaScript codebase and certainly didn't work as well as Tern + ctags.

E.g. navigating to method definitions fell back to a simple search when
dealing with react.js modules. As did refactorings such as rename (provided by
Tern).

Gulp/webpack/grunt do a better job at workflow tasks IMHO too.

I guess there was the debugger but it's not a patch on Chrome's debugger so
why use it?

------
Animats
What Vim, and a lot of other programs, really need is a single plastic-covered
card which tells you how to use the program. You can squeeze a summary of
calculus on one such card. Is it too much to ask for software?

(I really, really want that for Blender. The Blender hotkey document is 9
pages and years out of date.)

~~~
syrrim
You could try this:

[https://duckduckgo.com/?q=vim+cheatsheet&t=ffab&ia=cheatshee...](https://duckduckgo.com/?q=vim+cheatsheet&t=ffab&ia=cheatsheet&iax=1)

There are similar pages for various programs, including blender it seems:
[https://duckduckgo.com/?q=blender+cheatsheet&t=ffab&ia=cheat...](https://duckduckgo.com/?q=blender+cheatsheet&t=ffab&ia=cheatsheet&iax=1)

------
coleifer
Oh, "for humans"... It was cool when requests came out and it made sense to
the audience (Python people familiar with the standard library). But it gets
applied to so many things these days that it's just corny. I suppose most
people using it intend to convey a folksy, whimsical, self-conscious style.
It's supposed to make the content seem approachable.

The folks behind the "Head First!" series seem to understand the appeal of
making content approachable. So did the creators of the "For Dummies" series.
Hell, Reagan used jelly beans.

It feels dishonest, somehow. Just call it a vim book, or whatever.

------
fasteo
I am old enough to know vim pretty well and I guess I do not need the e-book,
but I just wanted to congratulate you for the landing page: clear design and
better content. I just love the pitch "How do I quit this @#!?"

------
holmberd
Good alternative: A byte of Vim -
[http://www.swaroopch.com/notes/vim/](http://www.swaroopch.com/notes/vim/)

Sidenote: The navbar & images break on smaller screens.

------
atemerev
Just paid 3.5 euros and haven't got the book, site said page doesn't work :(

My e-mail is sorhed at gmail

~~~
atemerev
OK, downloaded it for free, as I have already paid for it. :)

------
AdmiralAsshat
_2.1 For who?_

If the author is reading this, proper English would be "For whom?" The intro
says he's not a native speaker, so it's a common mistake. Easily fixed.

~~~
dsr_
In my experience, most native English speakers are easily confused about who
vs whom, and avoid whom by rephrasing:

Who is this book for?

~~~
triangleman
Which would also be incorrect.

~~~
malnourish
Incorrect according to whom?

If you can understand it, it's not incorrect. You might not like the style,
but that doesn't make it wrong.

~~~
alphapapa
> If you can understand it, it's not incorrect.

acn yuo stunderand htis? i no oyu cna so acocrding ot yuo its nto rwong. oaky.

~~~
malnourish
That's clearly not what I meant. Grammatical prescriptivism is considered
incorrect by pretty much any linguist.

------
anotheryou
Anyone using vim-mode plugins for other IDEs? Most vim critic in the comments
seems to be against it as an IDE, while the biggest benefit is obviously the
keyboard control. So why not use the combination of both (I installed plugins
for Visual Studio and Atom a few days ago and I'm quite happy so far, but it's
my first steps in to vim, so maybe I'll find things that won't work later)?

------
Hydraulix989
vim for humans is nano -- you shouldn't have to read a book to learn how to
use a text editor.

------
rublev
Wow this site doesn't work at all. I clicked on the "download the ebook" and
nothing happened. Scrolled down, entered $0 and I get a blank page. Anything
above $0, credit card form works fine.

~~~
cyber_dude
Try disabling adblock/ghostery

~~~
rublev
That worked.

------
doh
Seems to be down. Here is the source [https://github.com/vjousse/vim-for-
humans-book](https://github.com/vjousse/vim-for-humans-book)

------
Rainymood
The very first thing I do on any default Vim config is

    
    
        :imap kj <Esc>
    

And then Vim kinda makes sense to me. Pressing <Esc> each time is such an
anti-pattern imho.

~~~
mikegerwitz
C-[ is equivalent to <Esc>, and is much more natural.

I also bind caps lock to ctrl (setxkbmap -option ctrl:nocaps on a GNU/Linux
system), which makes this all the more natural.

~~~
eikenberry
Why not just change caps-lock to esc.

setxkbmap -option caps:escape

~~~
mikegerwitz
Personally, because it offers me no benefit: [ is on the other hand, so it's
the same speed as hitting a single key, and I use Ctrl for many other things;
Esc is specialized. I'm also an Emacs (and vim) user (Evil mode, of course).

------
creamy
A wiseman once told me: "If you have to hold a key to reach your goal, there
is probably a better (i.e. shorter) way to do it."

------
jtth
I'm assuming this page doesn't resolve because vim is not for humans.

------
libso
Working link where I can download the book? Link in OP isn't doing it.

~~~
mdrzn
[https://vimebook.com/en/download/e0e346cb-9ce6-4070-b1fc-9dd...](https://vimebook.com/en/download/e0e346cb-9ce6-4070-b1fc-9dd2ddd09ed3/vim-
for-humans.pdf)

------
Dowwie
I not only use vim but I use vim mode in Atom and within tmux.

Vim mode all the things.

------
danm07
Hmm. Is anyone else getting NET::ERR_CERT_AUTHORITY_INVALID error?

------
wmichelin
Your SSL is jacked up

------
hollander
I can't download the PDF, and the EPUB neither.

------
wwho
learn incredibly unintuitive fucked up shortcuts to perform basic tasks that a
basic bullshit gui text editor can perform

cool

~~~
deathanatos
Your comment comes across as one who has their head stuck in the sand,
frankly. Yes — the basics are a bit odd and initially off putting to novice
users. I don't think many vim users are promoting vim for its learning curve,
we're promoting it for its productivity in the more intricate editing. I still
feel a little joy inside any time I use da' or ci( (delete around single
quotes — i.e., remove this string, and cut inside parens, i.e., remove the arg
list an start ending a replacement). Those commands in particular I find
incredibly common, and the arcane shortcuts — while arcane — save me a lot of
tedious Shift+Ctrl+arrow,arrow,arrow,arrow… in your more run of the mill
editor.

And for the truly complex edits, :normal makes a boring, monotonous task
faster … and more fun.

(MSVS has it's own issues: the last time I used Visual Studio, granted, it was
~7 years ago, it lacked ? in its regex syntax, and grouping was with {}, I
think. Tell me that editing with a different regex syntax than what your .Net
code uses is intuitive? The auto-complete was really good, though. (Though vim
comes with out of the box heuristical completion that gets most of the way
there.)

------
pheo
I think this site got slashdotted.

------
ryanbertrand
Hmm getting a 404 here :(

------
gshakir
The site seems down.

------
xutopia
The SSL certificate for the site is marked as invalid in Google Chrome on the
latest macOS.

~~~
danielhlockard
Looks like the CA bundle isn't included

~~~
0xmohit
That's correct. "The certificate chain is complete", says
[https://www.ssllabs.com/ssltest/analyze.html?d=vimebook.com](https://www.ssllabs.com/ssltest/analyze.html?d=vimebook.com)

