vim suitable for professional software development?

165 views
Skip to first unread message

tasch...@posteo.de

unread,
Aug 23, 2015, 10:33:55 AM8/23/15
to vim...@googlegroups.com
Hey,

i'm wondering whether VIM is really suitable for professional software
development. I have no considerable experience with vim, linux, software
development or anything else mentioned in this post, i.e. i'm a beginner
=> Therefore, i hope i can ask some naive and very basic questions about
my fears of using vim. I guess, some questions are a bit far away of vim
and are caused by my lack of knowledge and experience. I hope
regardless, i can ask them here.


1) Let's assume your vim configuration is broken at work and you can't
fix the issue within 20 minutes. I assume sth like 20 minutes is the
upper limit for vim configuration things, before your colleagues or boss
gets angry. Most, if not all of your needed plugins aren't working
correctly.

* How would you react in such a situation? Would you temporarily switch
to e.g. Eclipse?
* How would you react when you have very important stuff to do?
* How often does such a situation happen?

=> I'm not very experienced with vim, so i have honestly very big fears
about such situations, standing helplessly in front of a unusable editor
and a lot of work to do.


2) I'm not familiar with frameworks like Spring, Tomcat or Maven.

* But how much do they depend on some vim plugin? I mean, is it possible
to work without a vim plugin? I assume, they make the repeated tasks of
your work very easy and fast.
* Let's assume, your company transfers to another, related framework,
which doesn't provide a vim plugin. How would you react? would you
change your IDE, work with the command line or try to write a plugin?
* At needs to happen that you'll decide to change your editor?

=> I have also very little experience with vim or shell scripting,
therefore i fear that someday i can't write a convenience plugin/script
and have to work in a (compared to e.g. eclipse) inefficient way - or
change the editor, because the support fore that language/framework is
not enough.


3) GUI development. I've learned recently that vim's intention is just
not to be a GUI builder for some language. But,

* How good/fluently do they interact with vim? example to show what i
mean: Visual Studio provides capabilities to auto generate the code for
e.g. a button (what to execute when the button is pressed).
Additionally, it "links" between the actual code and the textual GUI
implementation (=> the position of the button, the description, etc.) so
that i can directly use that button in my program. How is that handled
by VIM and a GUI Builder? => I assume, using two separate applications
for developing really breaks the programming flow.
* the textual GUI implementation i've mentioned in the question before,
is really complex(at least that's my impression), but luckily auto
generated by VS. Are there "code generation" places which aren't covered
by the regarding plugin(i mean that plugin, which generates the XML
metadata for the GUI in the VIM workflow), so you need to manually
create a snippet for it?

=> As a beginner, i don't understand the complexity of the connection
between the GUI Builder and vim, respectively what does VS in the
background for me. So I wouldn't know how i should be able to create
snippets that could handle the XML/metadata things. While programming in
VS, i've never touched the XML and rarely the auto generated C# code in
the background. I fear that that could hinder developing with vim.

Thanks a lot.

Marc Weber

unread,
Aug 23, 2015, 12:17:13 PM8/23/15
to vim_use
> 1) Let's assume your vim configuration is broken at work and you can't
How does this differ from other solutions?
Use version control system to manage your plugins.

Installing latest plugins can be done easily by plugin management
systems such as VAM/Vundle/NeoBundle.
Some details / links look here: http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html

> 2) I'm not familiar with frameworks like Spring, Tomcat or Maven.
> * But how much do they depend on some vim plugin? I mean, is it possible
> to work without a vim plugin? I assume, they make the repeated tasks of
> your work very easy and fast.

Look Vim / Eclipse are not the same. They are not exclusive either, eg
google for eclim. Also you may find yourself doing some tasks in Vim,
others in Eclipse.
(While Eclim works, I found completion to be slower).

Browsing code in Eclipse might be nicer, because you have more windows
to understand class relations and such.

Well - There is also viplugin for some vi editing features within
Eclipse.

Vim plugins will never be as complete as Eclipse (eg refactoring).

> => I have also very little experience with vim or shell scripting,
> therefore i fear that someday i can't write a convenience plugin/script
> and have to work in a (compared to e.g. eclipse) inefficient way - or
> change the editor, because the support fore that language/framework is
> not enough.
If you're worrying about 20min, then you will not even get started with
writing plugins.
Tip: HAve a look at plugins you already know, have a look at their dev
history to get an understanding how much work writing a plugin can be
(depending on the topic)

> 3) GUI development. I've learned recently that vim's intention is just
> not to be a GUI builder for some language. But,
It will never be. In fact Vim's gui is broken by design
https://groups.google.com/forum/#!searchin/vim_dev/Ruby$20abort$20vim$20marc/vim_dev/irITPpKnTP8/Osl0AHJUH60J

Neovim (a fork of Vim might fix this in the future)

A good rule of thumb (looks like you're new to Java as well) is: Use
what your colleagues use, then they'll be able to help.

If you want vi like editing features, get viplugin.

Vim does not debug java well either (maybe there are some plugins, but
you have to setup class path and whatnot).

> => As a beginner, i don't understand the complexity of the connection
> between the GUI Builder and vim,

A lot of your questions will go away if you get to know your tools
better.

Please note: There is also Emacs/Idea/Netbeans/.. Thus your question Vim
vs Eclipse is to narrow as well. Both Idea/Netbeans have Vi like plugins
as well.

Oh, by the way: You may want to look into alternatives to Java as well
such as Scala / Groovy (eg gradle is using that).

Rule of thumb: Always use the best tool for a job. If its about text
editing (and code happens to be that) Vim often is a good fit.

Marc Weber

Tim Chase

unread,
Aug 23, 2015, 2:47:57 PM8/23/15
to vim...@googlegroups.com
On 2015-08-23 16:33, tasch...@posteo.de wrote:
> i'm wondering whether VIM is really suitable for professional
> software development.

I've been using it for over a decade for professional software
development. So I'd guess the answer is "yes".

> 1) Let's assume your vim configuration is broken at work and you
> can't fix the issue within 20 minutes. I assume sth like 20 minutes
> is the upper limit for vim configuration things, before your
> colleagues or boss gets angry. Most, if not all of your needed
> plugins aren't working correctly.
>
> * How would you react in such a situation? Would you temporarily
> switch to e.g. Eclipse?
> * How would you react when you have very important stuff to do?
> * How often does such a situation happen?

I tend to run with a pretty minimal configuration, not much beyond
the resetting "vim -u NONE" so if for some reason my vimrc wasn't
working, it wouldn't be too hard to track down what's going on. And
wouldn't switch to anything else. I've occasionally used Notepad for
quick edits on Windows machines where I didn't have vi/vim installed,
and occasionally turn to /bin/ed when my $TERM settings get messed up
on *nix but vi/vim almost never gives me grief.

As for how frequently such a hypothetical situation occurs, almost
never. The only times are when I've just gone in and tweaked my
vimrc, in which case I just back out (or comment out) the settings
that I changed/added.

Once you start introducing plugins, things get a little hairier, but
if you learn to use vi/vim without plugins, then even if you have to
disable a troublesome plugin, you still have stock vim readily
available.

> => I'm not very experienced with vim, so i have honestly very big
> fears about such situations, standing helplessly in front of a
> unusable editor and a lot of work to do.

Because of the recovery-mode (the aforementioned "vim -u NONE" which
starts up without loading global/local config files) your only limit
is actually learning vim.

> 2) I'm not familiar with frameworks like Spring, Tomcat or Maven.
>
> * But how much do they depend on some vim plugin? I mean, is it
> possible to work without a vim plugin? I assume, they make the
> repeated tasks of your work very easy and fast.
> * Let's assume, your company transfers to another, related
> framework, which doesn't provide a vim plugin. How would you react?
> would you change your IDE, work with the command line or try to
> write a plugin?
> * At needs to happen that you'll decide to change your editor?

As above, I don't generally use plugins, so it doesn't impact me.
I'm a Python developer so can't speak to Sprint/Tomcat/Maven, but I
don't call myself an expert in a language/framework unless I can
develop without the hand-holding of an IDE. But the bulk of the work
simply involves editing code, so the plugin features don't impact me
greatly.

> => I have also very little experience with vim or shell scripting,
> therefore i fear that someday i can't write a convenience
> plugin/script and have to work in a (compared to e.g. eclipse)
> inefficient way - or change the editor, because the support fore
> that language/framework is not enough.

Fortunately, vi/vim doesn't lock you in or start to spurn you if you
make use of other editors. If Eclipse gives you some magic
functionality that solves a problem where vi/vim can't, feel free to
use Eclipse for that. The only time I've had to go that route with
some Embedded Visual C++ where the MS Visual Studio (MSVS) interface
created the required project layouts, build options, etc. Even then,
once I got the projects and settings configured, I did most of my
actual code-editing with vim, and just used VS to do the builds.

> 3) GUI development. I've learned recently that vim's intention is
> just not to be a GUI builder for some language. But,

Vim is a text editor. Some GUI builders allow you to edit the
underlying structure and bindings which make them more flexible and
more useful when combined with version-control. Other GUI builders
store their layout in an opaque binary format that is good neither
for editing in other editors, nor versioning (comparing opaque binary
blobs is pretty useless).

> * How good/fluently do they interact with vim?

Both gvim and MSVS recognize when a file has been edited externally
and offer to let you reload the file fresh from disk. When I have to
use both together, this functionality saves the day. I can't speak
to others like Eclipse but assume they're not brain-dead and also do
similarly.

> => As a beginner, i don't understand the complexity of the
> connection between the GUI Builder and vim, respectively what does
> VS in the background for me. So I wouldn't know how i should be
> able to create snippets that could handle the XML/metadata things.
> While programming in VS, i've never touched the XML and rarely the
> auto generated C# code in the background. I fear that that could
> hinder developing with vim.

Again, feel free to use both. Most editors notice if changes happen
externally, so you can edit in either one and have the other one
notify that the file changed to let you reload it.

The big thing to know is that vim is a *text editor*. It's not a GUI
builder. It's not version-control. It's not a build-process. It's
not a testing framework.

In the *nix world, usually these are each provided by separate tools
(git/subversion/mercurial, make/cmake/imake/ant, etc). I the
Windows/Java world, often there's a canonical IDE (Visual
Studio/Eclipse) that provides most of that--though you can swap in
your own pieces like using vi/vim as your text-editor.

There are some popular pieces written on the topic:

http://blog.sanctum.geek.nz/unix-as-ide-introduction/
https://michaelochurch.wordpress.com/2013/01/09/ide-culture-vs-unix-philosophy/
(NB: a fair bit of profanity in that 2nd article, in case that matters)

Here's hoping it's a fun adventure for you, and this list is here to
help you out the best we can.

-tim






Doug Wellington

unread,
Aug 23, 2015, 3:41:31 PM8/23/15
to vim...@googlegroups.com
Previously:

> i'm wondering whether VIM is really suitable for professional software development.

There are a lot of us professional software developers who use vim every
day.

> Let's assume your vim configuration is broken at work and you can't fix the issue within 20 minutes.

I would suggest that you learn how to use vim by itself without any
plugins. Then, if there is a problem with a plugin, you can use "vim -u
NONE -N" and you will have some productivity immediately.

I feel the same about all the tools that I use. I start out with the
basics and then use more and more features of the tools as I learn.
Plugins are great for productivity, but they don't replace the need for
knowledge. I only add a plugin when I realize that I am doing something
over and over many times and I want to do that thing faster.

vim is a text editor. It is a very good text editor. But I wouldn't
try to use it for GUI code generation. There are other tools for that.
The reason there are so many tools in the world is that they all serve
different purposes. I know it is hard to know which tool to use. You
have to use a tool to know if it does what you want it to do. Sometimes
you learn a new tool and then stop using it because it doesn't meet your
needs.

> I have also very little experience with vim or shell scripting,

This will come with time. The wonderful thing about programming is that
there are always more things to learn! (If you don't like to learn new
things, maybe you should consider a different career...)

> I assume, using two separate applications for developing really breaks the programming flow.

We all work differently. You have to find what works best for you. For
me, I am too impatient to use an IDE, especially if I'm just editing
scripts or system configuration files. I have at least two shell (text
terminal) windows open all the time. I keep vim going in one window and
a python session going in the other. I test things on the fly with
python, and then write the actual code with vim. I use the Qt GUI
framework, and I actually write GUI code right in the python
interpreter. It's great fun to show, hide, and manipulate my GUI by
typing commands directly in python. For me, Qt designer takes too long
to use, because you create the widget graphically, then save the .ui
file, then convert that ui file to code. Some people love to work with
Designer. It's all up to the individual person to decide what is the
most productive, while considering what works within their team...

Regards,
Doug

Erik Christiansen

unread,
Aug 24, 2015, 6:57:38 AM8/24/15
to vim...@googlegroups.com
On 23.08.15 16:33, tasch...@posteo.de wrote:
> i'm wondering whether VIM is really suitable for professional
> software development. I have no considerable experience with vim,
> linux, software development or anything else mentioned in this post,
> i.e. i'm a beginner
...

Over three decades in embedded systems development, the latter two in
software development, the only modern editors I used were vi, then vim.
The software was developed for very large transnationals (one with over
400,000 employees at the time), and was deployed in national
telecommunications networks. Incidentally for almost all the projects,
across a variety of targets, the toolchain used was GNU. (I.e gcc and
binutils)

The flexibility of both provided a very comfortable sense of control of
the development environment. Though superseded now, cvs was the
versioning tool of choice, and gnu make completed the quartet.

>
> 1) Let's assume your vim configuration is broken at work and you
> can't fix the issue within 20 minutes. I assume sth like 20 minutes
> is the upper limit for vim configuration things, before your
> colleagues or boss gets angry. Most, if not all of your needed
> plugins aren't working correctly.

I would not use plugins as a beginner, and retain a copy of a simple
trouble-free .vimrc for instant fall-back, before embarking on any
improvements. Then you can futz with prettiness in your lunch hour,
without risking wrath from upon high.

> * How would you react in such a situation? Would you temporarily
> switch to e.g. Eclipse?
> * How would you react when you have very important stuff to do?
> * How often does such a situation happen?

Depends how clumsy one is, and how careless in providing instant
recovery.

> => I'm not very experienced with vim, so i have honestly very big
> fears about such situations, standing helplessly in front of a
> unusable editor and a lot of work to do.

The unknown is a dark place, and therefore appears perilous.
Thus, remain in the small circle of light cast by the entry door, and
venture forth at the pace at which you can master your tools.

Remember:
Understanding "undo" is more important than any editing tricks.
Using a version control system, for calibrated fallbacks, is highly
advisable.
Tested, reliable backups are essential, because data which exists in
only one place will soon not exist at all.

Understand also, that if you use, say, the flapdoodle editor today,
and it disappears in a puff of puce smoke, then you can resume work with
any other. Plain text is served by any number of editors. The best is
the one with which you are most productive.

In my software teams, developers were free to use any editor they liked,
and I did not ask what they used. To avoid formatting clash, I simply
mandated that no tabs be used, i.e. tab should insert spaces to suit, as
Vim does with "expandtab" set.

Heck, some even used DOS-boxes and M$ editors, giving rise to the CRLF
line ending issue. I simply fixed that before committing files to the
source code repository.

...

> => I have also very little experience with Vim or shell scripting,
> therefore i fear that someday i can't write a convenience
> plugin/script and have to work in a (compared to e.g. eclipse)
> inefficient way - or change the editor, because the support fore that
> language/framework is not enough.

It's not necessary to burn your bridges before you've crossed them.
Don't use any scripts in production till you're confident they work
well. Code bashing can proceed without. If the need for a script is
great enough, either you'll learn how, or someone who can will be found
by someone with authority to hire.

> 3) GUI development.
...

Programming with a text editor is text processing.
There are code generating tools, such as for ITUT SDL (Specification and
Description Language.) They can be fun, but expensive.
They are quite different games to play, in my experience.

The human brain is not equipped to learn all this stuff in a day.
Not all that can be learnt is useful to every individual.
It is more productive to identify genuine productivity bottlenecks,
opportunities for helpful automation, e.g. cindent, and spend time
learning only that which is useful now. (I.e look at Vim's help and
other documentation in spare time, and choose what is worth learning.)

Erik

--
Emacs is a nice OS - but it lacks a good text editor.
That's why I am using Vim. - Anonymous

tasch...@posteo.de

unread,
Aug 24, 2015, 7:28:19 AM8/24/15
to vim...@googlegroups.com
Hey,

Well, it seems that the fear to break my cfg was really reasonless,
especially if i consider that i already use git for my vimrc and can
comment problematic plugins/settings.
But i think for me, its a really good idea to restart in terms of
plugins and clean them a bit.

The point i've asked about the integration of vim and GUI builders is
just i didn't want to know vim someday very good but can't use that
knowledge efficiently, because IDE's like netbeans or eclipse would have
in terms of efficiency beaten the combination of vim and the gui
builder.
But it seems that i won't come around of making my own experiences.

Thanks & regards

tasch...@posteo.de

unread,
Aug 24, 2015, 8:33:41 AM8/24/15
to vim...@googlegroups.com, Marc Weber
Hey,

i just realized that some of my fears were just for no reason. => I use
git for my vim cfg and a Plugin manager.
Therefore, i wasn't frightened about investing time in my vim cfg - i
was frightened about to be forced to do that at work, because i can't
write code in that time.

I knew of the existence of eclim and vi(m) plugins in big IDE's - i
think i was just to lazy to tinker with it. -.-
Certainly the only thing i'm missing is just knowledge about vim, git
and other stuff.

Btw. my question was meant like "can texteditors like vim and emacs be
as good enough as IDE's like Eclipse, Netbeans or whatever"

You've said " Vim plugins will never be as complete as Eclipse (eg
refactoring)." Could you elaborate that point, please?

regards

PS: Big thanks for your hint to use what my (potential) colleagues use.
> --

Stefan Klein

unread,
Aug 24, 2015, 9:00:11 AM8/24/15
to vim...@googlegroups.com
Hi,

2015-08-24 14:33 GMT+02:00 <tasch...@posteo.de>:

> You've said " Vim plugins will never be as complete as Eclipse (eg refactoring)." Could you elaborate that point, please?

Eclipse "understands" the java code you write.
That is, if you have 2 variables "i" in different context, Eclipse
know these are 2 different variables that just happend to be named the
same.
Also Eclipse knows or can find all places where "i" (but not the other
"i") is used.
So it's very easy to say 'eclipse, please rename "i" to "j"' and
eclipse will do so, it will find all places where this exact "i" (and
not the other "i") is used.

This would require to implement at least a partial java compiler as a
vim plugin, so it is not practical.
(eclipse in fact implements a java compiler)

A pure editor is limited to find all places where the text "i" is
used, so it would find the 2nd complete different "i" too.

regards,
Stefan

P.S.: +1 on "use what my (potential) colleagues use"

tasch...@posteo.de

unread,
Aug 25, 2015, 11:25:51 AM8/25/15
to vim...@googlegroups.com
Hey,

thanks a lot for the explanation.

regards
> --

tasch...@posteo.de

unread,
Sep 2, 2015, 4:47:21 AM9/2/15
to vim...@googlegroups.com
Hey,

BIG thanks for the two links. I've really considered VIM as a
constructing set for building a personalized IDE, rather than just an
specialized text editor.

you don't use any kind of code completion and only external syntax
checkers/debugging tools then?
(Spring (-> Typo)/Tomcat/Maven was meant as synonymous for every
application framework)

regards

Reid Thompson

unread,
Sep 2, 2015, 7:51:56 AM9/2/15
to vim...@googlegroups.com, Reid Thompson
On Wed, 2015-09-02 at 10:47 +0200, tasch...@posteo.de wrote:

> Hey,
>
> BIG thanks for the two links. I've really considered VIM as a
> constructing set for building a personalized IDE, rather than just an
> specialized text editor.
>
> you don't use any kind of code completion and only external syntax
> checkers/debugging tools then?
> (Spring (-> Typo)/Tomcat/Maven was meant as synonymous for every
> application framework)
>
> regards

those things are available if you want them. vim has plugins that
integrate with many of them.

see below, http://www.vim.org/scripts/index.php, and just google


[ce]tags

https://github.com/Valloric/YouCompleteMe

https://github.com/Rip-Rip/clang_complete

http://vim.wikia.com/wiki/Category:Omnicomplete

http://www.vim.org/scripts/script.php?script_id=213

https://github.com/rsense/rsense

etc

Reply all
Reply to author
Forward
0 new messages