I am looking for suggestions for a setup for my particular needs. I haven't done much linux since college and want to get back into it as a hobby. I have some not-too-powerful hardware (512 MB ram, single core). I want to do everything via text-based shells and editors, such as vim. My goal is to never touch the mouse.
I need the ability to have multiple shells open at once, one running a web server, one running vim, one running my application build pipeline, another one for ad-hoc shell commands such as wget, grepping and untarring, etc. I need to be able to open new shells and switch between shells quickly with the keyboard.
But even though I want multiple shells, I do not want a graphical desktop environment. I don't ever want to be tempted to use the mouse; part of my purpose is to force myself to learn the command-line way of doing various tasks.
I also want to be able to take advantage of my large monitor, running vim with a couple hundred columns dipslayed.
Is this possible?
Best Answer
I read through your questions several times before I realized that I definitely have a recommendation for you: vim with tmux: http://tmux.sourceforge.net/
tmux is a screen 'multiplexor' that lets you have several windows and panes 'within 1'
It is a successor to the venerable 'screen' program, long a staple of many cli coders. One of its original winning features over vim was the ability to do split windows vertically as well as horizontally. However screen has moved forward and can now do that too.
Example:
Another part of the setup that I would recommend is a good set of aliases. These will make your typing and interaction a lot easier and quicker
Some of my favorites are shown here as examples:
Aliases can be setup in a .bash_aliases file that is called from .bashrc with: # Alias definitions. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Chances are you already have that code, so just your own .bash_aliases file.
Both these options work on a Mac and that is an important consideration for myself (a mostly Ubuntu user).
Most folks using tmux remap the keys to make it easier. The default bindings are just not that good. Here are my settings:
$ cat ~/tmux.conf
Finally (to close the loop), here's my .vimrc settings themselves that I like having to make the shell easier to use:
Finally I make a few changes to my .bashrc file For example with
shopt -s autocd
when I type a directory name (that exists) my shell cd's into that directory immediately. Nifty! So here's my .bashrc changes: