The Ultimate Vim Distribution
vim.spf13.com
vim.spf13.com
Switching to using this does not appeal to me, an existing Vim user, and I think I am not an exception. If this does something new that I like I'll gladly throw that part into my setup, but there really isn't any reason at all that I can see for wanting to use this.
I don't think this is good for new Vim users either. If you are new to Vim there already is no shortage of things to learn (I think GVim steps up in this role nicely). Throwing more things into the mix isn't going to help a thing. And as you (slowly) pick up more and more of stock Vim, you are going to naturally build up your own setup. Before you know it you'll be at the same point that I think existing users are generally at.
This all said, I'm also a zsh user who cannot fathom why oh-my-zsh is popular...
However I think these should be made defaults in Vim itself, not in some grabbag of stuff we hand new users on their way in. I think it is important that every Vim user knows exactly what ways their setup differs from the default, and this is only feasible if every difference from the default (the real default) is made by the user.
Not really. I often use (incremental) search just to move around, and I don't want the highlight to distract me, especially with a really common pattern. I would consider using it if the highlight disappeared immediately after the search is over, but as far as I know there is no such setting, so I only enable it from time to time.
This just proves that it's really hard to agree on defaults.
nmap <C-h> :noh<CR>
Maybe there is a way to make it automatically do that after searching with some sort of timeout. Not sure.I'd agree with you on hidden but... the Vim defaults are (generally) the most vi-like settings, which makes some amount of sense. At the very least it keeps people from squabbling about what should be the default.
OTOH, the default vimrc has a bunch of stuff turned on and tweaked depending on your platform. So that could be a good venue for turning on some of these new, Vim-only features. That may sound like splitting hairs, but I think there's at least a bit of difference between "on by default" and "set to on in the config mkvimrc creates".
Some of the defaults are just plain harmful to people trying to get started. 'nohidden' is awful if you try to use buffers without knowing about it, and I don't think I've ever met anyone who wasn't infuriated by 'backspace' defaulting to "".
I'm not so much a fan of the platform tweaks, since you can't expect each platform to make the same ones. If you learn on one and just assume those settings will be the same everywhere, it can be very annoying when you switch to another system only to discover that your .vimrc isn't getting you the same behavior. 'backspace' is a particularly egregious setting this happens for often I find. It would be better if all systems left backspace="", so that everyone knew to add it to their .vimrc's.
Interesting you mention oh-my-zsh. I DO use that, but that distribution I think encourages you to turn on and learn the plugins as you actually need them - they are not turned on by default. So I've gone through a very similar process with them.
That said, it wasn't much work, and I've been using it for the past couple hours and I really like it!
These tools are designed to be complex so as to not limit the user. If you throw everything at them at once there's no way to understand how everything fits together.
I see the same problem in suggesting that people start learning zsh by installing oh-my-zsh.
Vim is vim is popular because it is a highly configurable tool that each user can tweak to be just right.
But,
1) things like this will get new people using vim. Without usage, code rots.
2) things like this teach me all sorts of vim I did not know.
In re 2: I really want to see their vimrc file without having to install this.
I don't have much intention of going back, but it's still useful to have an editor I can run in a terminal, so I installed UVD. We'll see how it goes, but I like the idea of a curated setup where I just drop in my custom crap from my old vimrc and call it good.
That said, I agree with the larger point that it's hard to see whether it will take off. But if it's easy for them to maintain it and they're scratching their own itch, it seems like a net win.
Maybe it's particular to Emacs, but I've found that the defaults are often terrible, and half of all tutorials I see for _anything_ are about changing the default case.
This one: https://github.com/technomancy/emacs-starter-kit
or this one: https://github.com/eschulte/emacs24-starter-kit
I've been using and configuring emacs for a few weeks now. Is it worth starting again with one of these or will it move too much cheese?
I'm stunned that anyone would pipe from internet to shell. No SSL and redirecting just make it easier for the bad guy.
It makes me angry that people are promoting this as an install method. Like suggesting your first name as a good password.
SSL is a good idea. I should absolutely switch over to that.
Post the manual installer methods.
Post checksums.
Sign your checksums.
For me to trust an installer, implicitly, it's best for it to be part of my software distribution's package management system.
This means that the package is signed and checksummed, it's included in the distro's bugtracking system, and is being downloaded from a known set of mirrors.
Your next best option is to provide a download, checksums, and signatures, with a well-signed PGP/GPG key. At this point I can at least verify that the content is what you claim it is (whether or not that's something I plan on running is quite another matter).
Even a git repo provides a SHA1 checksum of a given commit that I can reference.
By recommending I curl-pipe-bash something, you're sending me a FLAGRANT signal that your security practices are somewhere well north of batshit crazy.
I ran into this while evaluating RVM (Ruby enVironment Manager), which itself turned out to be a requirement (or at least facilitator) for properly using Ruby for, of all things, supporting a Chef (configuration management tool) infrastructure. So ... in order to get a better handle on our server infrastructure ... the recommended and default practice is to install crap via curl-pipe-bash.
That cost us about six weeks of going through the damned installer and its effects (documentation is really poor) with a very fine-toothed comb. And I'm still not happy using it.
Second, the question was not whether piping to shell is a good way of doing installations. The question was whether it's actually worse than the common method of offering up an untrusted downloadable executable.
Many (or most) consumer software downloads that you'll find for Mac or Windows don't meet any of the criteria you specified (which I agree are good criteria). But that wasn't the question: Is it actually worse than offering an untrusted executable? People don't seem to complain about those as much, but to me they seem equivalently bad.
With a downloadable executable or installer, I'm left with a file that I can save, checksum, scan for vulnerabilities, and/or refer to at a later date should I find that there are concerns I didn't discover initially.
curl-pipe-bash, especially in the absence of SSL/TLS, leaves me vulnerable to injection attacks, as well as invisible changes to the installer (so I don't know whether or not things have changed if I'm trying the same process later).
It's a very, very, very bad idea.
My prediction: this will all end in tears sooner or later. I'm actually hoping for sooner just so we can put an end to this foolishness.
As for Windows: I don't play there often, but my understanding is that most executables are now signed, so that the "download random binary from arbitrary website, run as Administrator" practice is at least very slightly less batshit insane than in the past.
There's a pretty scary amount of iffy public code that ends up on mission-critical servers. I could outline some chains of connection, but briefly: it's very easy for someone's cheesy little website to become a significant player in another organization's processing.
That "website" you're going to likely runs not only on multiple servers, but in multiple datacenters across multiple organizational borders: core site, sales, support, order fulfillment, marketing analytics, web analytics, email, messaging, social integration ....
The best way not to get into bad habits on your production, mission-critical systems is to not allow them anywhere else.
Granted, this is a Vim suite, but I'm seeing similar brain death in far too many corners.
Just some food for thought concerning package ecosystems.
http://seclists.org/fulldisclosure/2006/Mar/132
Please supply the package name, version and the output of "apt-cache policy <pkgname>". That should list where the trojaned package came from (presuming no changes to sources.list, etc., etc.).
Packaging systems leave audit trails. Even if you get hosed, you can often figure out where and how, and take steps to both correct the upstream issue and identify and mitigate any locally affected systems (generally through a wipe/reinstall if you've got to this stage).
It is basically the difference between telling your users to do:
wget example.com/some_script.sh ; chmod +x some_script.sh ; ./some_script.sh
and: wget example.com/some_script.sh
chmod +x some_script.sh
./some_script.sh
A good engineer will tell you that those two things are exactly the same. The reality however is that they really are not. The first is a single cohesive unit of work, from the perspective of the user. It is "easier", even though you could copy/paste the second example just as easily. The second is clearly three units of work. The story is the same, but the runon sentences have been removed. The user is almost forced to, subconsciously, ponder each step: First we download this, then we run it. Why the separation?It is about reenforcing deliberate actions. Discrete options give the user time to interject their own thoughts.
If that isn't something that we value, then we should stop half-assing it and just give wget or curl an 'execute' flag.
wget example.com/some_script.sh
chmod +x some_script.sh
./some_script.sh
is missing one very important step... wget example.com/some_script.sh
chmod +x some_script.sh
$EDITOR some_script.sh
Only if it all looks sane/safe/sensible would I consider doing:- ./some_script.shIt actually made Vim worse, sometimes by just slowing things down, other times because of the lack of quality control in the bundled plugins. One plugin actually caused data loss many times – it completely froze the editor when a certain syntax pattern was typed. All with just the default Janus settings.
To that effect, I hope quality control in spf13 is really, really good.
The corporate development environment I'm in means it's a huge amount of work to get anything installed on a wide range of platforms (6 different OSes not including Windows) and on a large number of machines. For various security reasons, my home directory is not shared amongst all of the machines, which could have made it easier.
However, the main reason is that I often go to customers to solve problems and I have to use what they have installed. I can't go asking someone to install vim and a bunch of extensions on their production servers just to make me feel comfy; I have to rely on the lowest common denominator set of basic tools that are usually installed; vi (even ed), sed, awk, sh (can't even rely on bash being installed).
Don't get me wrong, I've nothing against people using vim with a whole bunch of extensions, it's just not for me.
But not being proficient in the basics can be a bad thing, especially when it's usually a tricky/pressured situation where you're left without your favourite dev environment.
Where it differs is spf13-vim is focused on cross platform dependency, keeping with vanilla vim feel and having no external dependencies (with the exception of git).
My understanding on Janus is that it focuses on Ruby (spf13-vim supports Ruby well, but Python, JavaScript, PHP, Shell, Scala and a bunch more as well). Janus includes many plugins that depend on Vim Ruby support and is definitely focused on the MacVim platform.
My goal was a Vim configuration you could run anywhere whether Linux, Mac or Windows to efficiently develop in any language.
Hopefully you will find the quality control is good, general feedback is very positive. If you find issues please submit a issue on github or even better a pull request. You can see that I'm very responsive to pull requests.
I do have one persistent, annoying problem with it, though, since I've got you here -- inserting close braces/parens OFTEN doesn't work with whatever plugin you use for the auto-closing. How do I turn it off? I remember trying to get rid of it, and failing miserably.
Most of the stuff bundled in it isn't really necessary, and just makes it harder to understand the clean environment if you're new to it.
Even though it's more work, it's nice to know exactly how you're configuring your own environment, and you get to learn more about it as you do configure it.
To that extent I'm not even a fan of emacs' new package manager.
People should think about what they say.
They serve difference purposes for me. I use NERDtree to create/rename/move files and quickly change my CWD (looks like you use rooter for CWD). I use Ctrl-P to switch buffers and quickly open files.
On the note of neocomplcache, supertab + clang_complete doesn't provide as good support for languages outside of C++. Working with python a lot, neocomplcache works better for me than supertab. The actual functionality of it isn't quite the same either.
Saying vundle isn't as good as pathogen is silly, because vundle is a layer on top of pathogen-like package management. Everyone I know who uses pathogen has to use some system on top of pathogen to actually install their list of vim plugins whenever they switch machines (bash script, ruby script, another vim plugin...).
They're both great, but pathogen requires that you setup the plugin directories yourself which makes keeping the plugins updated a pain since you either set them up as their own git repos (which you have to remember to update) or git submodules if you're trying to maintain a repo of your entire configuration.
Vundle just requires a few lines in your config and is already git/github aware and just does the right thing. It's also trivial to see at a glance what I've installed.
Uninstalling a plugin from vundle is as easy as removing the line in the config and telling vundle to update.
This article helped me with my 2nd attempt to learn Vim: "Your first vimrc should be nearly empty" http://vimuniversity.com/samples/your-first-vimrc-should-be-...
It only requires git and vim to install. The bundles have some similarities, but again key differences here are that none of these bundles require vim being compiled with +python or +ruby support.
Lastly it's focused working well for editing any language in any OS.
No criticisms of Janus, it's a good project, just took a different approach to the same problem.
I can't understand why anybody would want to use that kind of "distribution". All the vimrc tweaking and plugin dance is actually very beneficial in the first few months because it forces beginners to learn a lot of basics and, above all, how to use the help. And, well… experienced users already have a vimrc tweaked to hell and their own set of plugins.
I love it, thanks to the autor/s
> E117: Unknown function: fugitive#statusline
> E15: Invalid expression: fugitive#statusline()
learn to use default vim first. then start adding aliases and macros as need to speed up things.
most of the plugins mentioned are useless to me. default vim is super powerful as it is.
why try to fix problems that aren't there? the beauty of vim is the unique way each user approaches it. every time i sit next to a vimmer i'm like 'how the hell did you do that!" same thing that happens when vimmers watch me code. ive been using vim for 6+ years now, i still haven't even got close to using 10% of it, and i daily use around 50 or so key commands.
Anyone else might just need a 'standard' vim because they work on remote terminals into servers on which custom packages cannot be installed, or perhaps they are used to the 'old ways'.
$ vimtutor and how to use the documentation, that's what I'd recommend to beginners.
Right now, fisa is slightly ahead because it is a bit faster.
I must admit that this distro will help my workflow.
Vundle has proved a significantly better system for keeping things managed and uses the exact same approach and code as pathogen. It's hard to criticize vundle and support pathogen since they are so similar.
vim +BundleInstall! +qall
Vim still opens but could be useful if you're trying to automate vim somehow.
2. Vundle is too heavily Git/Github-centered for my taste.