
Square open-sources its Vim repo, Maximum Awesome - JackDanger
http://corner.squareup.com/2013/08/fly-vim-first-class.html
======
mpk
Not to rain on anybody's parade here, but for first-time vim users I recommend
not using any plugins and only selectively adding them one at a time after the
basics (buffers, navigation, some ex mode, etc) are at least somewhat
familiar.

Getting started with plugins enabled makes it hard to understand where vim
stops and plugins begin and make switching to a different (someone else's) vim
setup confusing at best.

It also tends to feed the 'make it work like the last editor I used' syndrome,
which is completely counter-productive.

Otherwise, nice work and good job open-sourcing it!

~~~
adamesque
Completely respect where you're coming from, but totally disagree. I made a
few abortive switches to Vim that didn't last a week because my productivity
was too hampered and the environment too extreme & foreign.

To a newcomer like me, Vim's built-in help was less than worthless, since you
pretty much need to know the Vim term for what you're looking up to find it.
Googling around wasn't much more effective (there's a lot of garbage in the
Wikia for Vim that comes up at the top of many searches).

In the end, I needed to read these two "gentle" introductions to Vim to even
understand what it was all about:

[http://stevelosh.com/blog/2010/09/coming-home-to-
vim/](http://stevelosh.com/blog/2010/09/coming-home-to-vim/)

[http://yehudakatz.com/2010/07/29/everyone-who-tried-to-
convi...](http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me-
to-use-vim-was-wrong/)

…and then I needed a mostly-well-documented distro like Janus
([https://github.com/carlhuda/janus](https://github.com/carlhuda/janus)) to
ensure that my productivity wouldn't take a huge hit those first few weeks.

Some folks can probably go all-in cold turkey, but I needed the training
wheels.

~~~
johncoltrane
The problem wasn't the "extreme & foreign environment", the problem was that
you thought wrongly that you could learn Vim as if it were a regular editor.

Learning Vim is a side project: something you do casually, slowly, until and
if you are able to do the actual switch.

Those braindead distributions are just smoke mirrors for lazy and pressed
people: they provide training wheels but they actively prevent you from
actually learning core Vim. They make people $distribution_name users instead
of Vim users.

~~~
Legion
> Learning Vim is a side project: something you do casually, slowly, until and
> if you are able to do the actual switch.

No one appointed you the director of how one learns Vim.

This is one of the most obnoxious parts of Vim threads: that guy that responds
to people talking about how they learned Vim (past tense, as in already
happened) and tells them that they learned it "wrong".

------
nilkn
Great to see some love for tmux. Terminal vim + tmux is a lot more powerful
than Gvim or MacVim.

That said, I started using vim with Janus and while it convinced me that vim
could be a great modern editor, it left me too confused when I tried to make
my own customizations. I ended up ditching it and hand-picking my own plugins.
I suspect a completely new vim user would likely experience the same process
with Maximum Awesome. Still, that doesn't mean these curated sets of plugins
are a bad idea--if anything they can serve as a proof of concept for people
who aren't yet convinced on the value of the editor.

~~~
jh3
The only thing I really like about MacVim as opposed to Terminal vim + tmux is
how fast the cursor moves can move around.

~~~
barclay
This. I still do not understand why the OSX terminal is so damned slow.

~~~
jh3
Me either. It's really the only thing stopping me from deleting MacVim.

------
Spiritus
Am I missing something? What makes this "maximum-awesome"? This is your
average vimrc with the regular plugins you seen in every vimrc over at GitHub.

~~~
dreamdu5t
Because it's Square and they're hip. Whenever they open the lids of their
macbooks its you know... just awesome.

Not to mention it's not maximum awesome: CtrlP > Command-T and Vundle >
Pathogen.

~~~
beaugunderson
I like unite + vimproc more than CtrlP:

[http://www.codeography.com/2013/06/17/replacing-all-the-
thin...](http://www.codeography.com/2013/06/17/replacing-all-the-things-with-
unite-vim.html)
[https://github.com/Shougo/unite.vim](https://github.com/Shougo/unite.vim)

~~~
diego898
I second this. I was hesitant at first but after trying it for a couple of
minutes after getting the tricky config right (thanks to some helpful
bloggers) I was very happy. And shuogo was very responsive to new issues,
providing fixes within hours sometimes.

------
barakm
As another commenter already pointed out, a common pattern is for people to
try such a configuration, and end up starting again from scratch because,
frankly, it doesn't work for them.

Emphasis on "for them".

I'm not saying you shouldn't share your setup. I wouldn't have learned vim (or
screen back in the day, or pine, or many others) if I didn't crib from the
dotfiles of those before me.

But at some point, your setup becomes so customized to you that you're the
only one it works for. And that's why vim and emacs, ancient editors, still
exist -- they're stable and can be modernized and tailored to the user over
time.

This writeup (not mine) I completely agree with:
[http://mislav.uniqpath.com/2011/12/vim-
revisited/](http://mislav.uniqpath.com/2011/12/vim-revisited/)

~~~
joelhooks
Here's a similar post from me [http://joelhooks.com/blog/2013/04/09/getting-
to-know-vim/](http://joelhooks.com/blog/2013/04/09/getting-to-know-vim/)

Starting from blank and building my own dotfiles is what did the trick for me.
Using a big ass template actually made it more difficult.

------
robinhood
I would love to know why they have chosen Pathogen instead of Vundle to manage
plugins. As hard as I try, I can't see any reasons why Pathogen is greater
than Vundle. Can someone enlighten me?

~~~
SkyMarshal
Chalk it up to different preferences. I prefer Vundle too, never could get
Pathogen to work, but Vundle just does for me. But others were using Pathogen
before Vundle appeared and have no reason to switch.

~~~
VeejayRampay
What do you mean you could "never get it to work"?

[https://github.com/tpope/vim-
pathogen#installation](https://github.com/tpope/vim-pathogen#installation)

It's literally copy and paste. I understand preferences and taste, but you
make it sound like you need a degree in particle physics to make the thing
work...

~~~
SkyMarshal
I know, and back when I tried it, which was probably years ago, the problem
was .vimrc line _execute pathogen#infect()_ always errored out. Couldn't
figure out why at the time, then found Vundle, it worked perfectly, been using
it since.

------
colinbartlett
Cool, so everything from tpope and a bunch of other garbage. Nothing new here,
move along.

------
overshard
This is cool but it seems silly to have the default install method to be using
"rake", I love vim but keep Ruby off most of my systems, what happened to good
ol' fashion shell scripts.

~~~
slig
Why is it silly? It's specific for OS X and OS X users already have ruby
installed.

~~~
akkartik
Because everybody has at some point tried to run rake on a new project and
found some version incompatibility along the depth of the abyss^Wstack.

~~~
steveklabnik
Hasn't bundler solved that particular problem for a few years?

~~~
akkartik
Bundler isn't installed by default.

In practice I've found bundler to be just another layer that can have the
wrong version: [http://xkcd.com/927](http://xkcd.com/927). But I have no
interest in bringing up old painful episodes, I'm done with the ruby eco-
system. So I'll just restrict my response to the previous paragraph.

------
jdgiese
[https://github.com/johndgiese/dotvim](https://github.com/johndgiese/dotvim)

Works on windows, linux, and mac.

I love vim.

~~~
fsqcds
Cool, I like that. Seems better than janus or spf13. Leave you some issues
though.

------
jason_slack
I seem to be getting an error: Warning: Permanently added
'github.com,204.232.175.90' (RSA) to the list of known hosts. Permission
denied (publickey). fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

~~~
wavesounds
This is a common git error, try http instead of ssh

git clone [https://github.com/square/maximum-
awesome.git](https://github.com/square/maximum-awesome.git)

~~~
jason_slack
that worked, what is the common error though?

~~~
wavesounds
[https://help.github.com/articles/generating-ssh-
keys](https://help.github.com/articles/generating-ssh-keys)

------
Timothee
I started using vim about a year ago, by using the janus vim distribution,
which was great to get me started. However, I since started again from scratch
to know what's there and why. So I won't be using this at all besides for the
implicit recommendations of existing plugins (like the_silver_searcher, which
is really crazy fast).

Overall, this seems like a great way to get started with vim because it
doesn't have too many plugins but it still has the minimum features expected
from someone who used Sublime or Textmate.

edit: looking at their .vimrc, there's _a lot_ of stuff that I'll use right
away. Definitely useful, just not as a straight download/install for me.

------
kippersnacks
Surprised that people are actually trying this. IMO there are far better
configurations out there if you want to try a pre-tailored one. Google for
them, i'll add my personal favorite here since people are actually up-voting
and installing this less than impressive config.

If you use ruby/rails try yadr
[https://github.com/skwp/dotfiles](https://github.com/skwp/dotfiles). If you
don't use ruby, it (imo) still has one of the best key maps/configs for
beginners just delete the ruby plugins.

Make it yours: :help every plugin and every setting if you don't know what it
does. Change any key mappings you don't like. It will take about 40 hours to
familiarize yourself with everything, that is if you go plugin hunting
yourself. I'm not a believer that starting from scratch is the way to go.

Remove vim-snipmate, neocomplicache, vim-snippets, vim-colors-solarized.
Remove nerdtree nerdtree, vim-nerdtree-tabs, use :e/CtrlP instead.

Add YouCompleteMe, vim-detailed, vim-notes, vim-slime, vim-numbertoggle, vim-
abolish, vim-startify, vim-textobj-rubyblock, switch.vim, ultisnips, vim-
airline, unite (check out unite plugins), vim-expand-region, vim-jsbeatify,
extradite, vim-diffchanges, vim-speeddating, goldenview or golden-ratio.

This config probably won't run well on machines that are older than 2012, in
total there are about 90 plugins. Remove any plugins you don't need. Look up
how to profile your plugins, if one of them is causing things to be slow
remove it. Don't install anything without reading the help file immediately
afterwards.

Learning enough vim to match your current productivity is not as difficult as
everyone makes it out to be. I was instantly more productive with this setup
switching from RubyMine and I still have barely scratched the surface of those
help files. Disclaimer: I had picked up the most basic motion / visual
selection keys previously working over SSH. And I was familiar with
window/buffer management from using tmux daily.

To everyone I highly recommend YouCompleteMe, vim-detailed, vim-notes, and
[https://github.com/rking/vim-detailed](https://github.com/rking/vim-
detailed).

~~~
codygman
Why remove vim-colors-solarized?

------
callmeed
Ok, got this cloned and installed. If I'm moving from Sublime to vim, where do
I go now?

I know a few basic vim commands (switch modes, edit, write, quit) but have
never used it to work on a complete project in a directory.

~~~
wavesounds
Type vimtutor at the command line to get started. Theres also a game:
[http://vim-adventures.com](http://vim-adventures.com) I thought was fun

~~~
semiel
I'm sure that most people, like I at first did, are wondering how useful a
game could really be. Answer: Very, very useful. I think Vim Adventures was a
way better headstart for me to learn the Vim style of thinking than pretty
much anything else could be.

------
dfbrown
One minor nitpick is they use snipmate, but Ultisnips[1] is much better and
actively maintained

1: [https://github.com/SirVer/ultisnips](https://github.com/SirVer/ultisnips)

------
mmgutz
Looks pretty much like my setup except Command-T. Command-T is awesome on Mac
but it's a pain to make work on Linux and not sure about Windows. Moved on to
ctrlp plugin.

~~~
jaredmcateer
Why is it a pain on Linux? Are you just referring to having a version of linux
with +ruby or did you run into other difficulties?

------
saidajigumi
Wonderful, looks like someone (@mislav and @christoomey) has already shaved
this yak for me:

[https://github.com/christoomey/vim-tmux-
navigator](https://github.com/christoomey/vim-tmux-navigator)

"Seamless navigation between tmux panes and vim splits"

So great. Off to check another random side-project off the list...

------
wging
Unfortunate that they don't mention licensing at all. (EDIT: Whoops, I'm
completely wrong. Sorry. Move along, nothing to see here.) Since they use Git
submodules, some licensing is inherited from packages like Command-T and vim-
fugitive... but they wrote code themselves as well, so there's also that.

~~~
cocoflunchy
It seems to be licensed under Apache 2.0, from the Git repo.

------
ollysb
[https://github.com/carlhuda/janus](https://github.com/carlhuda/janus) is a
slightly more plugintastic distribution. There's a lot of plugins included and
they've all been configured to work well with each other.

~~~
saidajigumi
Um, what? There's a suite of 35 plugins used in Maximum Awesome. It's using
Tim Pope's pathogen plugin[1], so they're all listed in .gitmodules instead of
directly in the .vimrc or in an included bundle file as with Vundle[2].

[1] [https://github.com/tpope/vim-pathogen](https://github.com/tpope/vim-
pathogen) [2]
[https://github.com/gmarik/vundle](https://github.com/gmarik/vundle)

------
rodly
Is there a way to uninstall this? Kill the symlinks and remove the appended
.bak from old config?

~~~
strongriley
Yep, just remove the symlinks and rename the .bak files. Opened an issue to
cover this. Thanks! [https://github.com/square/maximum-
awesome/issues/37](https://github.com/square/maximum-awesome/issues/37)

~~~
rodly
Thank you for opening the issue. I should of thought of that.

------
capkutay
These are all the features I wanted when I quit Vim for sublime text 2 about a
year ago...

------
wavesounds
Do lots of people use let mapleader = ',' instead of Ctrl?

Also does anyone see where they are setting the /// to comment? Commentary
uses gcc and I don't see it in their vimrc.

~~~
robinhood
"," is kinda becoming the "default" key for leader. After multiple years of
using it, it has become very natural.

~~~
jaredmcateer
After doing anything for multiple years of anything I'm sure it would feel
natural.

------
caiob
I find it fascinating that my set-up looks nearly the same already. :)

~~~
RamiK
Nothing here is fascinating to me. Many devs confuse Vim for an IDE. Not sure
why... Don't get me wrong though, first thing in every Debian install I do is
to replace vim-tiny and nano with vim as the default editor. I like to think I
appreciate vim for what it is, not for what it can be forced into.

------
snarfy
I've been using vim for 19 years and still don't know how to use it properly.
I try, then I always find some guru that does it better then I would.

------
misiti3780
I got it installed, I have installed multiple versions of XCode 5 betas and
needed to run:

sudo xcode-select -switch /Applications/Xcode5-DP6.app

To get the command=T to compile

~~~
jason_slack
How? I executed: git clone git@github.com:square/maximum-awesome.git && cd
maximum-awesome && rake

and I get:

$ git clone git@github.com:square/maximum-awesome.git && cd maximum-awesome &&
rake

Cloning into 'maximum-awesome'...

Permission denied (publickey).

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

~~~
jason_slack
wavesounds answered this below.

------
Jabe
If you want to learn Vim while playing a game, try [http://vim-
adventures.com/](http://vim-adventures.com/)

------
taf2
cmd+t lookup is not a good vim thing... it's slow requires me to move my hand
to the right to navigate using arrow keys... also it's slow. changing files
takes significantly longer... it's bad enough how slow the iterm.app is on osx
and don't even get me started on the slowness of the terminal.app -- picky vim
user

update: i like the empty line space indicators little boxes look cool

~~~
pfranz
You can hold down CTRL and use j/k to move up/down (so you don't have to use
the arrow keys). It can be slow on very large directories.

I switched to CtrlP last week because I switched OSes at work and didn't want
to recompile vim and Cmd+t. In the past CtrlP was significantly slower, but I
found a few new features that actually makes it faster than Cmd+t for me; it
automatically navigates up looking for a .git or .svn to search from instead
of cwd, and you can set up caching (persistent between sessions) and max num
of files to scan--I believe you can set a timeout, too. I also setup a filter
so my build folder and docs won't show up.

Since finding Cmd+t, it's been the fastest way to navigate to files in a
project (especially when they're not in the same directory).

------
lamnk
What makes this difference from this vim distribution
[http://vim.spf13.com/](http://vim.spf13.com/) ?

~~~
spf13
spf13-vim is pure vim script. No ruby required. spf13-vim is cross platform
and works well on windows. spf13-vim uses a bundle system to make easy
maintenance. Git submodules lock you into a specific hash of each plugin and
maintenance in keeping these up to date only increases your commit count with
empty commits.

spf13-vim is built to be a base and completely customizable. This is built to
be your vim config.

Lastly spf13-vim has dozens of contributors supporting a variety of plugins
and languages. This seems focused on squares stack, ruby & coffeescript.

Disclaimer... I'm spf13, so a bit partial, but if you look at spf13-vim from 2
or 3 years ago it looked a lot like this... and we've learned a lot from
making some mistakes present here.

------
tambourine_man
Does NERDTree work over ssh/sftp?

I remember having tried it once and abandoning because it lacked this feature
(or didn't work out of the box).

~~~
johncoltrane
No it doesn't and it only has a subset of the features already available in
netrw which comes by default.

~~~
sobering
Really? I've always used it over SSH without issues.

~~~
johncoltrane
NERDTree is totally devoid of any network-related feature.

If you are using it with something like fuse or expandrive you are not using
it over SSH but on local files.

If you are using it in a remote Vim via SSH, you are not using it over SSH
either.

If you did something like :e scp://foo//bar/ and see a directory listing you
are not using NERDTree.

~~~
sobering
Gotcha.

------
gshakir
What's up with the name "Maximum Awesome"? Sounds teenagish. Anyway, I am a
VIM lover and good to see this work.

------
drtse4
Shared Clipboard: Just add "set clipboard=unnamed" to your .vimrc and you are
done.

------
oron
not a cool question but ... I wonder if it will install on windows without
problems

~~~
overshard
It won't, it's mac os x only from the looks of it, which is kinda silly.

~~~
HunterWare
Not really, since it's developed by them and for them (a mac house). He seems
pretty welcoming of your additions to make this Linux/Windows if you desire...
but why on earth one would expect that THEY would have taken the time to make
this multi-platform when they don't use it that way is honestly beyond me
(i.e. silly).

~~~
overshard
Yes but VIM runs on everything, why make it Mac OS X specific when it's
simplistic to make it "just use these vim files and it'll work on every
computer"

~~~
billnguyen
luckily its open sourced and someone can create a Windows distro if they are
so inclined.

------
tryingvim
How do you launch this after running rake?

~~~
jason_slack
`vim` from a terminal or use the MacVim.app in /Applications

------
dominotw
meh..

~~~
Spiritus
Honestly, I agree. How is any of this news for any Vim user? It's the same old
plugin everyone's been using for a long time now.

