Suggested setup for an ultra-lightweight text-based programming environment in linux





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







14















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?










share|improve this question




















  • 1





    Have a look at dvtm... You could also combine it with tmux or screen.

    – jasonwryan
    Nov 22 '12 at 18:02








  • 1





    This question may be more suitable as a community wiki.

    – jw013
    Nov 23 '12 at 15:36




















14















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?










share|improve this question




















  • 1





    Have a look at dvtm... You could also combine it with tmux or screen.

    – jasonwryan
    Nov 22 '12 at 18:02








  • 1





    This question may be more suitable as a community wiki.

    – jw013
    Nov 23 '12 at 15:36
















14












14








14


10






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?










share|improve this question
















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?







shell vim gnu-screen lightweight






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 22 '12 at 19:34







user27282

















asked Nov 22 '12 at 17:46









Kevin PauliKevin Pauli

1735




1735








  • 1





    Have a look at dvtm... You could also combine it with tmux or screen.

    – jasonwryan
    Nov 22 '12 at 18:02








  • 1





    This question may be more suitable as a community wiki.

    – jw013
    Nov 23 '12 at 15:36
















  • 1





    Have a look at dvtm... You could also combine it with tmux or screen.

    – jasonwryan
    Nov 22 '12 at 18:02








  • 1





    This question may be more suitable as a community wiki.

    – jw013
    Nov 23 '12 at 15:36










1




1





Have a look at dvtm... You could also combine it with tmux or screen.

– jasonwryan
Nov 22 '12 at 18:02







Have a look at dvtm... You could also combine it with tmux or screen.

– jasonwryan
Nov 22 '12 at 18:02






1




1





This question may be more suitable as a community wiki.

– jw013
Nov 23 '12 at 15:36







This question may be more suitable as a community wiki.

– jw013
Nov 23 '12 at 15:36












8 Answers
8






active

oldest

votes


















5














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:



enter image description here



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:



alias gcv='git commit'
alias gg='git grep ' # for searching (add parameter)
alias gst='git status -sb' # I must use this 100 times a day!!!
alias h='history | tail'
alias hg='history | grep' # for searching my history (add parameter)
alias l='ls -alFtrG'
alias ls='ls --color=auto'
alias mv='mv -i'
alias p='pwd'# at least 200 times a day! so 2 chrs saved * 200 = 400 less characters to type ;)


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



# mdd tmux settings
bind r source-file ~/.tmux.conf ; display "Reloaded!" # Reload with ctrl-r
set -g prefix C-a # prefix from ctrl-b to ctrl-a
unbind C-b # allow ctrl-b for other things
set -sg escape-time 1 # quicker responses
bind C-a send-prefix # Pass on ctrl-a for other apps
set -g base-index 1 # Numbering of windows
setw -g pane-base-index 1 # Numbering of Panes
# bind | split-window -h # Split panes horizontal
bind split-window -h # Split panes horizontal
bind - split-window -v # Split panes vertically
bind h select-pane -L # Switch to Pane Left
bind j select-pane -D # Switch to Pane Down
bind k select-pane -U # Switch to Pane Up
bind l select-pane -R # Switch to Pane Right
bind -r C-h select-window -t :- # Quick Pane Selection
bind -r C-l select-window -t :+ # Quick Pane Selection
bind -r H resize-pane -L 5 # Switch to Pane Left
bind -r J resize-pane -D 5 # Switch to Pane Down
bind -r K resize-pane -U 5 # Switch to Pane Up
bind -r L resize-pane -R 5 # Switch to Pane Right
setw -g mode-mouse off # Mouse Off
set -g mouse-select-pane off # Mouse Off
set -g mouse-resize-pane off # Mouse Off
set -g mouse-select-window off # Mouse Off
#set -g default-terminal "screen-256color"
setw -g monitor-activity on # Activity Alerts
set -g visual-activity on
set -g status-fg white # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green # Pane colors
set -g pane-border-bg black
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow
set -g message-fg white # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40 # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on # Status Line, right side
set -g status-right "-------"
set -g status-interval 60 # frequency of status line updates
set -g status-justify centre # center window list
setw -g mode-keys vi # vi keys to move
unbind v # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up # Maximizing and Minimizing...
bind Up new-window -d -n tmp ; swap-pane -s tmp.1 ; select-window -t tmp
unbind Down
bind Down last-window ; swap-pane -s tmp.1 ; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" ; display "Toggled logging to ~/#W.log"
# Make keys for copy mode be like vi
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection


Finally (to close the loop), here's my .vimrc settings themselves that I like having to make the shell easier to use:



" mdd specific stuff --- start
set hlsearch
set incsearch
set number
" more3 mdd stuff - set tabs to be spaces and length of 2 characters.
set smartindent
set tabstop=2
set shiftwidth=2
set expandtab
" mdd specific stuff --- end
"
" Forget being compatible with good ol' vi
set nocompatible

" Get that filetype stuff happening
filetype on
filetype plugin on
filetype indent on

" Turn on that syntax highlighting
syntax on

" Why is this not a default
set hidden

" Don't update the display while executing macros
set lazyredraw

" At least let yourself know what mode you're in
set showmode

" Enable enhanced command-line completion. Presumes you have compiled
" with +wildmenu. See :help 'wildmenu'
set wildmenu

" Let's make it easy to edit this file (mnemonic for the key sequence is
" 'e'dit 'v'imrc)
nmap <silent> ,ev :e $MYVIMRC<cr>

" And to source this file as well (mnemonic for the key sequence is
" 's'ource 'v'imrc)
nmap <silent> ,sv :so $MYVIMRC<cr>

highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /s+$/
autocmd BufWinEnter * match ExtraWhitespace /s+$/
autocmd InsertEnter * match ExtraWhitespace /s+%#@<!$/
autocmd InsertLeave * match ExtraWhitespace /s+$/
autocmd BufWinLeave * call clearmatches()


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:



# Automatic cd'ing
shopt -s autocd

# Have cd show directory info ('cos my shell doesn't show full directory path in $PS1 prompt (intended).
cd() {
builtin cd "$@" && pwd
}

# enable programmable completion features
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

# mdd Terminal Multiplexor 6/15/2012
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi

[ -z "$TMUX" ] && export TERM=xterm-256color

export EDITOR=vim

git config --global --add color.ui true





share|improve this answer


























  • Nice detailed answer. I've been using tmux for a bout a year now (and vi/vim for about 25) but I picked up some things here.

    – Dan
    Nov 27 '12 at 22:58











  • Great, great answer for a noob like me. About the only thing missing is what vim plugins you use... but that is another question for another day. :) Thanks again... alhtough it will take me forever to go through it and try everything out, I wanted to go ahead give you the accepted answer.

    – Kevin Pauli
    Nov 30 '12 at 21:02











  • Sure, I actually think I'm not using any plugins but I know there are many available including some for my area of ruby on rails.

    – Michael Durrant
    Dec 1 '12 at 14:44






  • 2





    Much of what you say here may be useful, but one thing is off: vim can readily split panes both horiz and vertically.

    – dubiousjim
    Dec 31 '12 at 0:08






  • 1





    Updated to note that screen can do horizontal and vertical splits now.

    – Michael Durrant
    Apr 10 '15 at 16:53



















6














I'm using XMonad + tmux + Emacs for a similar setup.



I used ratpoison for a year in the past but XMonad felt more robust. I never had any problems in my 256MB, 512MB boxes with it. Ratpoison had some stability problems, but this is anecdotal and things might have changed since then.



I also used GNU screen but tmux has some features that screen hasn't.



If you already know vim, you'd better not learn a new tool. If you don't, Emacs can employ multiple shells (C-u M-x shell), use your favorite shell (M-x term), you can write, compile and debug your programs, read your mails, hangout in IRC, read web/info/man pages, run most REPL shells (e.g. M-x run-python), use git/hg/svn inside it, edit remote files with TRAMP, use dired to do almost all file operations, use grep/find/ack inside it. You can use Emacs with or without X. You don't need a terminal multiplexer like screen or tmux, but I prefer to run emacs as a server and use emacsclient from tmux if running it from shell.






share|improve this answer
























  • I would suggest to use terminator! But Its purely one's choice!

    – Pranit Bauva
    Nov 27 '12 at 17:19



















3















  • solution with no X at all: framebuffer + Linux console + GNU screen + vim + w3m

  • solution with X but no desktop environment: dwm + urxvt + GNU screen + vim + w3m + surf


dwm uses only a few hundred kB of memory, keyboard driven, but you can use mouse as well if you like. Check http://suckless.org for more simple yet powerful tools.






share|improve this answer































    2














    For multiple shells with easy keyboard navigation between them, you might want to look into GNU Screen, or byobu (which is an enhancement of it).






    share|improve this answer































      2














      I undertook a similar endeavor a couple of months ago, abandoning my mouse and exploring a multitude of set ups and window managers. Looks like you've already been offered plenty of helpful suggestions, but I figured a couple extra cents couldn't hurt. Here's my two:



      Take a look at i3 window manager. It's light, with simple configuration and doesn't require a recompile after altering the config. Tiling functionality and tagged workspaces mean no mouse and endless possibilities based on preference and screen space. Programs can be assigned to tags and keys can be bound to just about anything. i3status or conky are easily piped to i3 for system info. Install dmenu and unplug your mouse.



      Try a light distro. Arch, Gentoo, and Slackware all offer different options for setting up a light environment. Start small, and pay attention to dependencies. Install only what you need and learn to configure it properly.
      Don't start X on boot. Learn to use all of the tools at your expense. Vim is a beast. If you already know it, use it. If not, learn it. Pay attention to the details. Learn what you have on your system and why it's there.






      share|improve this answer
























      • Seconding the "light distro" approach. It really forces you to get your hands dirty, even if they lay it out for you command by command (the Gentoo Install Handbook is excellent), because every system is different. The initial install doesn't even give you X, so you're stuck on the command line.

        – ND Geek
        Nov 29 '12 at 15:42



















      1














      I had a similar desire about six months ago. Primarily because I was working via SSH all day. As has already been suggested, use GNU screen. Its pretty terrible (IMHO) straight after installing it. However! It is highly customizable via the .screenrc file. There are plenty of online tutorials which provide code you can cut and paste to get it just as you like.



      I went so far as to put together a few scripts for setting up such an environment - MALiCE - 'My Awesome Linux Coding Environment'. Its available on Github here:



      MALiCE



      This also documents a lots keyboard shortcuts as well as a sample .muttrc and .screenrc files - which are setup to work with things like gmail.



      Note its not perfect but it may save you some time and effort to have a look at some of the config files and scripts. There's a strong vim bias.



      I'd also recommend programs such as cmus (text-based media player - pretty good) and mutt (email client - again configured via text file .muttrc). There are also text-based IRC clients and believe it or not, text-based video decoders which will turn video into ASCII - a bit extreme but each to their own.



      If you don't want a desktop at all then there are number of options. For example you could install slackware, which if I remember correctly boots to a command-line interface. You have to go out of your way to start the GUI.






      share|improve this answer


























      • We could add the elinks web browser to that list of good text-based utilities.

        – Stéphane Chazelas
        Nov 22 '12 at 20:44











      • How does it compare with other text-based web browsers? I could never get used to web surfing from the command-line :p

        – user19082
        Nov 22 '12 at 21:17





















      0














      http://en.wikipedia.org/wiki/VESA_BIOS_Extensions



      http://www.pendrivelinux.com/vga-boot-modes-to-set-screen-resolution/



      But they are not all supported by all graphic cards, you should test them.



      For switching between multiple shells I think Alt-F it is quick enough.






      share|improve this answer































        0














        The key to this is not the distribution, but the tools. Just stop using GUI tools, and tweak the CLI tools to look and behave exactly as you'd like. One way is to edit ~/.Xresources, and then load it with xrdb in ~/.xinitrc. There, you could also start a bunch of applications that you always use.



        Obviously you need a good shell: I'd say zsh. You'll have to work extensively on ~/.zshrc. (But bash would work too, of course. Then, ~/.bashrc would be the place.)



        Second, an editor. Emacs or vim, depending on which you currently use. A less advanced editor (e.g., nano) won't do. As with the shell, you'd do a lot of work on ~/.emacs or the corresponding init file(s).



        You need to incorporate as much as you possibly can in your text editor. I'll give some examples from the Emacs world, simply because I'm an Emacs user. For mail, rmail. For file management, dired. For web browsing, W3M. For news, gnus (although I don't use it). For man pages, M-x man. And so on.



        The reason you'd do this, and not use other CLI applications (e.g., just man for man pages, lynx for browsing, etc.) is:



        1) the level of integration (kill, yank, make shortcuts; everything in a blink...)



        2) the keyboard shortcuts for navigating the cursor, searching, etc. (i.e., your muscle memory)



        As for X, you don't need to abandon it. Just because you want everything in CLI doesn't mean you don't want GFX at all (or - at least, I want CLI-only, and GFX). For example, although you modify images with (CLI) mogrify or convert, you'd still want to display it to check the result (for example, in gliv; just disable the menu bar not to be tempted to use the mouse). Another example is LaTeX and PDF documents.



        As for the terminal, most people would say screen or tmux but you could also use the Linux virtual terminals (the console, or ttys). In X, urxvt has a Perl extension that enables tabs. For those (the ttys and urxvt) you could set up a uniform interface, for example Alt-J/K to switch between tabs, so you don't have to reach for the arrow keys (or whatever is default).



        Good luck :) Feel free to mail me some pointers of your own when you're done (or almost there... you're never done), as I'm on the same track as you.






        share|improve this answer


























          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "106"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f56386%2fsuggested-setup-for-an-ultra-lightweight-text-based-programming-environment-in-l%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          8 Answers
          8






          active

          oldest

          votes








          8 Answers
          8






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          5














          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:



          enter image description here



          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:



          alias gcv='git commit'
          alias gg='git grep ' # for searching (add parameter)
          alias gst='git status -sb' # I must use this 100 times a day!!!
          alias h='history | tail'
          alias hg='history | grep' # for searching my history (add parameter)
          alias l='ls -alFtrG'
          alias ls='ls --color=auto'
          alias mv='mv -i'
          alias p='pwd'# at least 200 times a day! so 2 chrs saved * 200 = 400 less characters to type ;)


          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



          # mdd tmux settings
          bind r source-file ~/.tmux.conf ; display "Reloaded!" # Reload with ctrl-r
          set -g prefix C-a # prefix from ctrl-b to ctrl-a
          unbind C-b # allow ctrl-b for other things
          set -sg escape-time 1 # quicker responses
          bind C-a send-prefix # Pass on ctrl-a for other apps
          set -g base-index 1 # Numbering of windows
          setw -g pane-base-index 1 # Numbering of Panes
          # bind | split-window -h # Split panes horizontal
          bind split-window -h # Split panes horizontal
          bind - split-window -v # Split panes vertically
          bind h select-pane -L # Switch to Pane Left
          bind j select-pane -D # Switch to Pane Down
          bind k select-pane -U # Switch to Pane Up
          bind l select-pane -R # Switch to Pane Right
          bind -r C-h select-window -t :- # Quick Pane Selection
          bind -r C-l select-window -t :+ # Quick Pane Selection
          bind -r H resize-pane -L 5 # Switch to Pane Left
          bind -r J resize-pane -D 5 # Switch to Pane Down
          bind -r K resize-pane -U 5 # Switch to Pane Up
          bind -r L resize-pane -R 5 # Switch to Pane Right
          setw -g mode-mouse off # Mouse Off
          set -g mouse-select-pane off # Mouse Off
          set -g mouse-resize-pane off # Mouse Off
          set -g mouse-select-window off # Mouse Off
          #set -g default-terminal "screen-256color"
          setw -g monitor-activity on # Activity Alerts
          set -g visual-activity on
          set -g status-fg white # Status line Colors
          set -g status-bg black
          setw -g window-status-fg cyan # Window list color
          setw -g window-status-bg default
          setw -g window-status-attr dim
          setw -g window-status-current-fg white # Active Window Color
          setw -g window-status-current-bg red
          setw -g window-status-current-attr bright
          set -g pane-border-fg green # Pane colors
          set -g pane-border-bg black
          set -g pane-active-border-fg white
          set -g pane-active-border-bg yellow
          set -g message-fg white # Command/Message Line.
          set -g message-bg black
          set -g message-attr bright
          set -g status-left-length 40 # Status Line, left side
          set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
          set -g status-utf8 on # Status Line, right side
          set -g status-right "-------"
          set -g status-interval 60 # frequency of status line updates
          set -g status-justify centre # center window list
          setw -g mode-keys vi # vi keys to move
          unbind v # Open panes in same directory as tmux-panes script
          unbind n
          bind v send-keys " ~/tmux-panes -h" C-m
          bind n send-keys " ~/tmux-panes -v" C-m
          unbind Up # Maximizing and Minimizing...
          bind Up new-window -d -n tmp ; swap-pane -s tmp.1 ; select-window -t tmp
          unbind Down
          bind Down last-window ; swap-pane -s tmp.1 ; kill-window -t tmp
          bind P pipe-pane -o "cat >>~/#W.log" ; display "Toggled logging to ~/#W.log"
          # Make keys for copy mode be like vi
          unbind [
          bind Escape copy-mode
          unbind p
          bind p paste-buffer
          bind -t vi-copy 'v' begin-selection
          bind -t vi-copy 'y' copy-selection


          Finally (to close the loop), here's my .vimrc settings themselves that I like having to make the shell easier to use:



          " mdd specific stuff --- start
          set hlsearch
          set incsearch
          set number
          " more3 mdd stuff - set tabs to be spaces and length of 2 characters.
          set smartindent
          set tabstop=2
          set shiftwidth=2
          set expandtab
          " mdd specific stuff --- end
          "
          " Forget being compatible with good ol' vi
          set nocompatible

          " Get that filetype stuff happening
          filetype on
          filetype plugin on
          filetype indent on

          " Turn on that syntax highlighting
          syntax on

          " Why is this not a default
          set hidden

          " Don't update the display while executing macros
          set lazyredraw

          " At least let yourself know what mode you're in
          set showmode

          " Enable enhanced command-line completion. Presumes you have compiled
          " with +wildmenu. See :help 'wildmenu'
          set wildmenu

          " Let's make it easy to edit this file (mnemonic for the key sequence is
          " 'e'dit 'v'imrc)
          nmap <silent> ,ev :e $MYVIMRC<cr>

          " And to source this file as well (mnemonic for the key sequence is
          " 's'ource 'v'imrc)
          nmap <silent> ,sv :so $MYVIMRC<cr>

          highlight ExtraWhitespace ctermbg=red guibg=red
          match ExtraWhitespace /s+$/
          autocmd BufWinEnter * match ExtraWhitespace /s+$/
          autocmd InsertEnter * match ExtraWhitespace /s+%#@<!$/
          autocmd InsertLeave * match ExtraWhitespace /s+$/
          autocmd BufWinLeave * call clearmatches()


          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:



          # Automatic cd'ing
          shopt -s autocd

          # Have cd show directory info ('cos my shell doesn't show full directory path in $PS1 prompt (intended).
          cd() {
          builtin cd "$@" && pwd
          }

          # enable programmable completion features
          if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
          . /etc/bash_completion
          fi

          PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
          [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

          # mdd Terminal Multiplexor 6/15/2012
          if [[ ! $TERM =~ screen ]]; then
          exec tmux
          fi

          [ -z "$TMUX" ] && export TERM=xterm-256color

          export EDITOR=vim

          git config --global --add color.ui true





          share|improve this answer


























          • Nice detailed answer. I've been using tmux for a bout a year now (and vi/vim for about 25) but I picked up some things here.

            – Dan
            Nov 27 '12 at 22:58











          • Great, great answer for a noob like me. About the only thing missing is what vim plugins you use... but that is another question for another day. :) Thanks again... alhtough it will take me forever to go through it and try everything out, I wanted to go ahead give you the accepted answer.

            – Kevin Pauli
            Nov 30 '12 at 21:02











          • Sure, I actually think I'm not using any plugins but I know there are many available including some for my area of ruby on rails.

            – Michael Durrant
            Dec 1 '12 at 14:44






          • 2





            Much of what you say here may be useful, but one thing is off: vim can readily split panes both horiz and vertically.

            – dubiousjim
            Dec 31 '12 at 0:08






          • 1





            Updated to note that screen can do horizontal and vertical splits now.

            – Michael Durrant
            Apr 10 '15 at 16:53
















          5














          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:



          enter image description here



          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:



          alias gcv='git commit'
          alias gg='git grep ' # for searching (add parameter)
          alias gst='git status -sb' # I must use this 100 times a day!!!
          alias h='history | tail'
          alias hg='history | grep' # for searching my history (add parameter)
          alias l='ls -alFtrG'
          alias ls='ls --color=auto'
          alias mv='mv -i'
          alias p='pwd'# at least 200 times a day! so 2 chrs saved * 200 = 400 less characters to type ;)


          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



          # mdd tmux settings
          bind r source-file ~/.tmux.conf ; display "Reloaded!" # Reload with ctrl-r
          set -g prefix C-a # prefix from ctrl-b to ctrl-a
          unbind C-b # allow ctrl-b for other things
          set -sg escape-time 1 # quicker responses
          bind C-a send-prefix # Pass on ctrl-a for other apps
          set -g base-index 1 # Numbering of windows
          setw -g pane-base-index 1 # Numbering of Panes
          # bind | split-window -h # Split panes horizontal
          bind split-window -h # Split panes horizontal
          bind - split-window -v # Split panes vertically
          bind h select-pane -L # Switch to Pane Left
          bind j select-pane -D # Switch to Pane Down
          bind k select-pane -U # Switch to Pane Up
          bind l select-pane -R # Switch to Pane Right
          bind -r C-h select-window -t :- # Quick Pane Selection
          bind -r C-l select-window -t :+ # Quick Pane Selection
          bind -r H resize-pane -L 5 # Switch to Pane Left
          bind -r J resize-pane -D 5 # Switch to Pane Down
          bind -r K resize-pane -U 5 # Switch to Pane Up
          bind -r L resize-pane -R 5 # Switch to Pane Right
          setw -g mode-mouse off # Mouse Off
          set -g mouse-select-pane off # Mouse Off
          set -g mouse-resize-pane off # Mouse Off
          set -g mouse-select-window off # Mouse Off
          #set -g default-terminal "screen-256color"
          setw -g monitor-activity on # Activity Alerts
          set -g visual-activity on
          set -g status-fg white # Status line Colors
          set -g status-bg black
          setw -g window-status-fg cyan # Window list color
          setw -g window-status-bg default
          setw -g window-status-attr dim
          setw -g window-status-current-fg white # Active Window Color
          setw -g window-status-current-bg red
          setw -g window-status-current-attr bright
          set -g pane-border-fg green # Pane colors
          set -g pane-border-bg black
          set -g pane-active-border-fg white
          set -g pane-active-border-bg yellow
          set -g message-fg white # Command/Message Line.
          set -g message-bg black
          set -g message-attr bright
          set -g status-left-length 40 # Status Line, left side
          set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
          set -g status-utf8 on # Status Line, right side
          set -g status-right "-------"
          set -g status-interval 60 # frequency of status line updates
          set -g status-justify centre # center window list
          setw -g mode-keys vi # vi keys to move
          unbind v # Open panes in same directory as tmux-panes script
          unbind n
          bind v send-keys " ~/tmux-panes -h" C-m
          bind n send-keys " ~/tmux-panes -v" C-m
          unbind Up # Maximizing and Minimizing...
          bind Up new-window -d -n tmp ; swap-pane -s tmp.1 ; select-window -t tmp
          unbind Down
          bind Down last-window ; swap-pane -s tmp.1 ; kill-window -t tmp
          bind P pipe-pane -o "cat >>~/#W.log" ; display "Toggled logging to ~/#W.log"
          # Make keys for copy mode be like vi
          unbind [
          bind Escape copy-mode
          unbind p
          bind p paste-buffer
          bind -t vi-copy 'v' begin-selection
          bind -t vi-copy 'y' copy-selection


          Finally (to close the loop), here's my .vimrc settings themselves that I like having to make the shell easier to use:



          " mdd specific stuff --- start
          set hlsearch
          set incsearch
          set number
          " more3 mdd stuff - set tabs to be spaces and length of 2 characters.
          set smartindent
          set tabstop=2
          set shiftwidth=2
          set expandtab
          " mdd specific stuff --- end
          "
          " Forget being compatible with good ol' vi
          set nocompatible

          " Get that filetype stuff happening
          filetype on
          filetype plugin on
          filetype indent on

          " Turn on that syntax highlighting
          syntax on

          " Why is this not a default
          set hidden

          " Don't update the display while executing macros
          set lazyredraw

          " At least let yourself know what mode you're in
          set showmode

          " Enable enhanced command-line completion. Presumes you have compiled
          " with +wildmenu. See :help 'wildmenu'
          set wildmenu

          " Let's make it easy to edit this file (mnemonic for the key sequence is
          " 'e'dit 'v'imrc)
          nmap <silent> ,ev :e $MYVIMRC<cr>

          " And to source this file as well (mnemonic for the key sequence is
          " 's'ource 'v'imrc)
          nmap <silent> ,sv :so $MYVIMRC<cr>

          highlight ExtraWhitespace ctermbg=red guibg=red
          match ExtraWhitespace /s+$/
          autocmd BufWinEnter * match ExtraWhitespace /s+$/
          autocmd InsertEnter * match ExtraWhitespace /s+%#@<!$/
          autocmd InsertLeave * match ExtraWhitespace /s+$/
          autocmd BufWinLeave * call clearmatches()


          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:



          # Automatic cd'ing
          shopt -s autocd

          # Have cd show directory info ('cos my shell doesn't show full directory path in $PS1 prompt (intended).
          cd() {
          builtin cd "$@" && pwd
          }

          # enable programmable completion features
          if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
          . /etc/bash_completion
          fi

          PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
          [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

          # mdd Terminal Multiplexor 6/15/2012
          if [[ ! $TERM =~ screen ]]; then
          exec tmux
          fi

          [ -z "$TMUX" ] && export TERM=xterm-256color

          export EDITOR=vim

          git config --global --add color.ui true





          share|improve this answer


























          • Nice detailed answer. I've been using tmux for a bout a year now (and vi/vim for about 25) but I picked up some things here.

            – Dan
            Nov 27 '12 at 22:58











          • Great, great answer for a noob like me. About the only thing missing is what vim plugins you use... but that is another question for another day. :) Thanks again... alhtough it will take me forever to go through it and try everything out, I wanted to go ahead give you the accepted answer.

            – Kevin Pauli
            Nov 30 '12 at 21:02











          • Sure, I actually think I'm not using any plugins but I know there are many available including some for my area of ruby on rails.

            – Michael Durrant
            Dec 1 '12 at 14:44






          • 2





            Much of what you say here may be useful, but one thing is off: vim can readily split panes both horiz and vertically.

            – dubiousjim
            Dec 31 '12 at 0:08






          • 1





            Updated to note that screen can do horizontal and vertical splits now.

            – Michael Durrant
            Apr 10 '15 at 16:53














          5












          5








          5







          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:



          enter image description here



          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:



          alias gcv='git commit'
          alias gg='git grep ' # for searching (add parameter)
          alias gst='git status -sb' # I must use this 100 times a day!!!
          alias h='history | tail'
          alias hg='history | grep' # for searching my history (add parameter)
          alias l='ls -alFtrG'
          alias ls='ls --color=auto'
          alias mv='mv -i'
          alias p='pwd'# at least 200 times a day! so 2 chrs saved * 200 = 400 less characters to type ;)


          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



          # mdd tmux settings
          bind r source-file ~/.tmux.conf ; display "Reloaded!" # Reload with ctrl-r
          set -g prefix C-a # prefix from ctrl-b to ctrl-a
          unbind C-b # allow ctrl-b for other things
          set -sg escape-time 1 # quicker responses
          bind C-a send-prefix # Pass on ctrl-a for other apps
          set -g base-index 1 # Numbering of windows
          setw -g pane-base-index 1 # Numbering of Panes
          # bind | split-window -h # Split panes horizontal
          bind split-window -h # Split panes horizontal
          bind - split-window -v # Split panes vertically
          bind h select-pane -L # Switch to Pane Left
          bind j select-pane -D # Switch to Pane Down
          bind k select-pane -U # Switch to Pane Up
          bind l select-pane -R # Switch to Pane Right
          bind -r C-h select-window -t :- # Quick Pane Selection
          bind -r C-l select-window -t :+ # Quick Pane Selection
          bind -r H resize-pane -L 5 # Switch to Pane Left
          bind -r J resize-pane -D 5 # Switch to Pane Down
          bind -r K resize-pane -U 5 # Switch to Pane Up
          bind -r L resize-pane -R 5 # Switch to Pane Right
          setw -g mode-mouse off # Mouse Off
          set -g mouse-select-pane off # Mouse Off
          set -g mouse-resize-pane off # Mouse Off
          set -g mouse-select-window off # Mouse Off
          #set -g default-terminal "screen-256color"
          setw -g monitor-activity on # Activity Alerts
          set -g visual-activity on
          set -g status-fg white # Status line Colors
          set -g status-bg black
          setw -g window-status-fg cyan # Window list color
          setw -g window-status-bg default
          setw -g window-status-attr dim
          setw -g window-status-current-fg white # Active Window Color
          setw -g window-status-current-bg red
          setw -g window-status-current-attr bright
          set -g pane-border-fg green # Pane colors
          set -g pane-border-bg black
          set -g pane-active-border-fg white
          set -g pane-active-border-bg yellow
          set -g message-fg white # Command/Message Line.
          set -g message-bg black
          set -g message-attr bright
          set -g status-left-length 40 # Status Line, left side
          set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
          set -g status-utf8 on # Status Line, right side
          set -g status-right "-------"
          set -g status-interval 60 # frequency of status line updates
          set -g status-justify centre # center window list
          setw -g mode-keys vi # vi keys to move
          unbind v # Open panes in same directory as tmux-panes script
          unbind n
          bind v send-keys " ~/tmux-panes -h" C-m
          bind n send-keys " ~/tmux-panes -v" C-m
          unbind Up # Maximizing and Minimizing...
          bind Up new-window -d -n tmp ; swap-pane -s tmp.1 ; select-window -t tmp
          unbind Down
          bind Down last-window ; swap-pane -s tmp.1 ; kill-window -t tmp
          bind P pipe-pane -o "cat >>~/#W.log" ; display "Toggled logging to ~/#W.log"
          # Make keys for copy mode be like vi
          unbind [
          bind Escape copy-mode
          unbind p
          bind p paste-buffer
          bind -t vi-copy 'v' begin-selection
          bind -t vi-copy 'y' copy-selection


          Finally (to close the loop), here's my .vimrc settings themselves that I like having to make the shell easier to use:



          " mdd specific stuff --- start
          set hlsearch
          set incsearch
          set number
          " more3 mdd stuff - set tabs to be spaces and length of 2 characters.
          set smartindent
          set tabstop=2
          set shiftwidth=2
          set expandtab
          " mdd specific stuff --- end
          "
          " Forget being compatible with good ol' vi
          set nocompatible

          " Get that filetype stuff happening
          filetype on
          filetype plugin on
          filetype indent on

          " Turn on that syntax highlighting
          syntax on

          " Why is this not a default
          set hidden

          " Don't update the display while executing macros
          set lazyredraw

          " At least let yourself know what mode you're in
          set showmode

          " Enable enhanced command-line completion. Presumes you have compiled
          " with +wildmenu. See :help 'wildmenu'
          set wildmenu

          " Let's make it easy to edit this file (mnemonic for the key sequence is
          " 'e'dit 'v'imrc)
          nmap <silent> ,ev :e $MYVIMRC<cr>

          " And to source this file as well (mnemonic for the key sequence is
          " 's'ource 'v'imrc)
          nmap <silent> ,sv :so $MYVIMRC<cr>

          highlight ExtraWhitespace ctermbg=red guibg=red
          match ExtraWhitespace /s+$/
          autocmd BufWinEnter * match ExtraWhitespace /s+$/
          autocmd InsertEnter * match ExtraWhitespace /s+%#@<!$/
          autocmd InsertLeave * match ExtraWhitespace /s+$/
          autocmd BufWinLeave * call clearmatches()


          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:



          # Automatic cd'ing
          shopt -s autocd

          # Have cd show directory info ('cos my shell doesn't show full directory path in $PS1 prompt (intended).
          cd() {
          builtin cd "$@" && pwd
          }

          # enable programmable completion features
          if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
          . /etc/bash_completion
          fi

          PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
          [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

          # mdd Terminal Multiplexor 6/15/2012
          if [[ ! $TERM =~ screen ]]; then
          exec tmux
          fi

          [ -z "$TMUX" ] && export TERM=xterm-256color

          export EDITOR=vim

          git config --global --add color.ui true





          share|improve this 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:



          enter image description here



          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:



          alias gcv='git commit'
          alias gg='git grep ' # for searching (add parameter)
          alias gst='git status -sb' # I must use this 100 times a day!!!
          alias h='history | tail'
          alias hg='history | grep' # for searching my history (add parameter)
          alias l='ls -alFtrG'
          alias ls='ls --color=auto'
          alias mv='mv -i'
          alias p='pwd'# at least 200 times a day! so 2 chrs saved * 200 = 400 less characters to type ;)


          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



          # mdd tmux settings
          bind r source-file ~/.tmux.conf ; display "Reloaded!" # Reload with ctrl-r
          set -g prefix C-a # prefix from ctrl-b to ctrl-a
          unbind C-b # allow ctrl-b for other things
          set -sg escape-time 1 # quicker responses
          bind C-a send-prefix # Pass on ctrl-a for other apps
          set -g base-index 1 # Numbering of windows
          setw -g pane-base-index 1 # Numbering of Panes
          # bind | split-window -h # Split panes horizontal
          bind split-window -h # Split panes horizontal
          bind - split-window -v # Split panes vertically
          bind h select-pane -L # Switch to Pane Left
          bind j select-pane -D # Switch to Pane Down
          bind k select-pane -U # Switch to Pane Up
          bind l select-pane -R # Switch to Pane Right
          bind -r C-h select-window -t :- # Quick Pane Selection
          bind -r C-l select-window -t :+ # Quick Pane Selection
          bind -r H resize-pane -L 5 # Switch to Pane Left
          bind -r J resize-pane -D 5 # Switch to Pane Down
          bind -r K resize-pane -U 5 # Switch to Pane Up
          bind -r L resize-pane -R 5 # Switch to Pane Right
          setw -g mode-mouse off # Mouse Off
          set -g mouse-select-pane off # Mouse Off
          set -g mouse-resize-pane off # Mouse Off
          set -g mouse-select-window off # Mouse Off
          #set -g default-terminal "screen-256color"
          setw -g monitor-activity on # Activity Alerts
          set -g visual-activity on
          set -g status-fg white # Status line Colors
          set -g status-bg black
          setw -g window-status-fg cyan # Window list color
          setw -g window-status-bg default
          setw -g window-status-attr dim
          setw -g window-status-current-fg white # Active Window Color
          setw -g window-status-current-bg red
          setw -g window-status-current-attr bright
          set -g pane-border-fg green # Pane colors
          set -g pane-border-bg black
          set -g pane-active-border-fg white
          set -g pane-active-border-bg yellow
          set -g message-fg white # Command/Message Line.
          set -g message-bg black
          set -g message-attr bright
          set -g status-left-length 40 # Status Line, left side
          set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
          set -g status-utf8 on # Status Line, right side
          set -g status-right "-------"
          set -g status-interval 60 # frequency of status line updates
          set -g status-justify centre # center window list
          setw -g mode-keys vi # vi keys to move
          unbind v # Open panes in same directory as tmux-panes script
          unbind n
          bind v send-keys " ~/tmux-panes -h" C-m
          bind n send-keys " ~/tmux-panes -v" C-m
          unbind Up # Maximizing and Minimizing...
          bind Up new-window -d -n tmp ; swap-pane -s tmp.1 ; select-window -t tmp
          unbind Down
          bind Down last-window ; swap-pane -s tmp.1 ; kill-window -t tmp
          bind P pipe-pane -o "cat >>~/#W.log" ; display "Toggled logging to ~/#W.log"
          # Make keys for copy mode be like vi
          unbind [
          bind Escape copy-mode
          unbind p
          bind p paste-buffer
          bind -t vi-copy 'v' begin-selection
          bind -t vi-copy 'y' copy-selection


          Finally (to close the loop), here's my .vimrc settings themselves that I like having to make the shell easier to use:



          " mdd specific stuff --- start
          set hlsearch
          set incsearch
          set number
          " more3 mdd stuff - set tabs to be spaces and length of 2 characters.
          set smartindent
          set tabstop=2
          set shiftwidth=2
          set expandtab
          " mdd specific stuff --- end
          "
          " Forget being compatible with good ol' vi
          set nocompatible

          " Get that filetype stuff happening
          filetype on
          filetype plugin on
          filetype indent on

          " Turn on that syntax highlighting
          syntax on

          " Why is this not a default
          set hidden

          " Don't update the display while executing macros
          set lazyredraw

          " At least let yourself know what mode you're in
          set showmode

          " Enable enhanced command-line completion. Presumes you have compiled
          " with +wildmenu. See :help 'wildmenu'
          set wildmenu

          " Let's make it easy to edit this file (mnemonic for the key sequence is
          " 'e'dit 'v'imrc)
          nmap <silent> ,ev :e $MYVIMRC<cr>

          " And to source this file as well (mnemonic for the key sequence is
          " 's'ource 'v'imrc)
          nmap <silent> ,sv :so $MYVIMRC<cr>

          highlight ExtraWhitespace ctermbg=red guibg=red
          match ExtraWhitespace /s+$/
          autocmd BufWinEnter * match ExtraWhitespace /s+$/
          autocmd InsertEnter * match ExtraWhitespace /s+%#@<!$/
          autocmd InsertLeave * match ExtraWhitespace /s+$/
          autocmd BufWinLeave * call clearmatches()


          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:



          # Automatic cd'ing
          shopt -s autocd

          # Have cd show directory info ('cos my shell doesn't show full directory path in $PS1 prompt (intended).
          cd() {
          builtin cd "$@" && pwd
          }

          # enable programmable completion features
          if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
          . /etc/bash_completion
          fi

          PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
          [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

          # mdd Terminal Multiplexor 6/15/2012
          if [[ ! $TERM =~ screen ]]; then
          exec tmux
          fi

          [ -z "$TMUX" ] && export TERM=xterm-256color

          export EDITOR=vim

          git config --global --add color.ui true






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Apr 10 '15 at 16:53

























          answered Nov 26 '12 at 20:34









          Michael DurrantMichael Durrant

          16.5k45121187




          16.5k45121187













          • Nice detailed answer. I've been using tmux for a bout a year now (and vi/vim for about 25) but I picked up some things here.

            – Dan
            Nov 27 '12 at 22:58











          • Great, great answer for a noob like me. About the only thing missing is what vim plugins you use... but that is another question for another day. :) Thanks again... alhtough it will take me forever to go through it and try everything out, I wanted to go ahead give you the accepted answer.

            – Kevin Pauli
            Nov 30 '12 at 21:02











          • Sure, I actually think I'm not using any plugins but I know there are many available including some for my area of ruby on rails.

            – Michael Durrant
            Dec 1 '12 at 14:44






          • 2





            Much of what you say here may be useful, but one thing is off: vim can readily split panes both horiz and vertically.

            – dubiousjim
            Dec 31 '12 at 0:08






          • 1





            Updated to note that screen can do horizontal and vertical splits now.

            – Michael Durrant
            Apr 10 '15 at 16:53



















          • Nice detailed answer. I've been using tmux for a bout a year now (and vi/vim for about 25) but I picked up some things here.

            – Dan
            Nov 27 '12 at 22:58











          • Great, great answer for a noob like me. About the only thing missing is what vim plugins you use... but that is another question for another day. :) Thanks again... alhtough it will take me forever to go through it and try everything out, I wanted to go ahead give you the accepted answer.

            – Kevin Pauli
            Nov 30 '12 at 21:02











          • Sure, I actually think I'm not using any plugins but I know there are many available including some for my area of ruby on rails.

            – Michael Durrant
            Dec 1 '12 at 14:44






          • 2





            Much of what you say here may be useful, but one thing is off: vim can readily split panes both horiz and vertically.

            – dubiousjim
            Dec 31 '12 at 0:08






          • 1





            Updated to note that screen can do horizontal and vertical splits now.

            – Michael Durrant
            Apr 10 '15 at 16:53

















          Nice detailed answer. I've been using tmux for a bout a year now (and vi/vim for about 25) but I picked up some things here.

          – Dan
          Nov 27 '12 at 22:58





          Nice detailed answer. I've been using tmux for a bout a year now (and vi/vim for about 25) but I picked up some things here.

          – Dan
          Nov 27 '12 at 22:58













          Great, great answer for a noob like me. About the only thing missing is what vim plugins you use... but that is another question for another day. :) Thanks again... alhtough it will take me forever to go through it and try everything out, I wanted to go ahead give you the accepted answer.

          – Kevin Pauli
          Nov 30 '12 at 21:02





          Great, great answer for a noob like me. About the only thing missing is what vim plugins you use... but that is another question for another day. :) Thanks again... alhtough it will take me forever to go through it and try everything out, I wanted to go ahead give you the accepted answer.

          – Kevin Pauli
          Nov 30 '12 at 21:02













          Sure, I actually think I'm not using any plugins but I know there are many available including some for my area of ruby on rails.

          – Michael Durrant
          Dec 1 '12 at 14:44





          Sure, I actually think I'm not using any plugins but I know there are many available including some for my area of ruby on rails.

          – Michael Durrant
          Dec 1 '12 at 14:44




          2




          2





          Much of what you say here may be useful, but one thing is off: vim can readily split panes both horiz and vertically.

          – dubiousjim
          Dec 31 '12 at 0:08





          Much of what you say here may be useful, but one thing is off: vim can readily split panes both horiz and vertically.

          – dubiousjim
          Dec 31 '12 at 0:08




          1




          1





          Updated to note that screen can do horizontal and vertical splits now.

          – Michael Durrant
          Apr 10 '15 at 16:53





          Updated to note that screen can do horizontal and vertical splits now.

          – Michael Durrant
          Apr 10 '15 at 16:53













          6














          I'm using XMonad + tmux + Emacs for a similar setup.



          I used ratpoison for a year in the past but XMonad felt more robust. I never had any problems in my 256MB, 512MB boxes with it. Ratpoison had some stability problems, but this is anecdotal and things might have changed since then.



          I also used GNU screen but tmux has some features that screen hasn't.



          If you already know vim, you'd better not learn a new tool. If you don't, Emacs can employ multiple shells (C-u M-x shell), use your favorite shell (M-x term), you can write, compile and debug your programs, read your mails, hangout in IRC, read web/info/man pages, run most REPL shells (e.g. M-x run-python), use git/hg/svn inside it, edit remote files with TRAMP, use dired to do almost all file operations, use grep/find/ack inside it. You can use Emacs with or without X. You don't need a terminal multiplexer like screen or tmux, but I prefer to run emacs as a server and use emacsclient from tmux if running it from shell.






          share|improve this answer
























          • I would suggest to use terminator! But Its purely one's choice!

            – Pranit Bauva
            Nov 27 '12 at 17:19
















          6














          I'm using XMonad + tmux + Emacs for a similar setup.



          I used ratpoison for a year in the past but XMonad felt more robust. I never had any problems in my 256MB, 512MB boxes with it. Ratpoison had some stability problems, but this is anecdotal and things might have changed since then.



          I also used GNU screen but tmux has some features that screen hasn't.



          If you already know vim, you'd better not learn a new tool. If you don't, Emacs can employ multiple shells (C-u M-x shell), use your favorite shell (M-x term), you can write, compile and debug your programs, read your mails, hangout in IRC, read web/info/man pages, run most REPL shells (e.g. M-x run-python), use git/hg/svn inside it, edit remote files with TRAMP, use dired to do almost all file operations, use grep/find/ack inside it. You can use Emacs with or without X. You don't need a terminal multiplexer like screen or tmux, but I prefer to run emacs as a server and use emacsclient from tmux if running it from shell.






          share|improve this answer
























          • I would suggest to use terminator! But Its purely one's choice!

            – Pranit Bauva
            Nov 27 '12 at 17:19














          6












          6








          6







          I'm using XMonad + tmux + Emacs for a similar setup.



          I used ratpoison for a year in the past but XMonad felt more robust. I never had any problems in my 256MB, 512MB boxes with it. Ratpoison had some stability problems, but this is anecdotal and things might have changed since then.



          I also used GNU screen but tmux has some features that screen hasn't.



          If you already know vim, you'd better not learn a new tool. If you don't, Emacs can employ multiple shells (C-u M-x shell), use your favorite shell (M-x term), you can write, compile and debug your programs, read your mails, hangout in IRC, read web/info/man pages, run most REPL shells (e.g. M-x run-python), use git/hg/svn inside it, edit remote files with TRAMP, use dired to do almost all file operations, use grep/find/ack inside it. You can use Emacs with or without X. You don't need a terminal multiplexer like screen or tmux, but I prefer to run emacs as a server and use emacsclient from tmux if running it from shell.






          share|improve this answer













          I'm using XMonad + tmux + Emacs for a similar setup.



          I used ratpoison for a year in the past but XMonad felt more robust. I never had any problems in my 256MB, 512MB boxes with it. Ratpoison had some stability problems, but this is anecdotal and things might have changed since then.



          I also used GNU screen but tmux has some features that screen hasn't.



          If you already know vim, you'd better not learn a new tool. If you don't, Emacs can employ multiple shells (C-u M-x shell), use your favorite shell (M-x term), you can write, compile and debug your programs, read your mails, hangout in IRC, read web/info/man pages, run most REPL shells (e.g. M-x run-python), use git/hg/svn inside it, edit remote files with TRAMP, use dired to do almost all file operations, use grep/find/ack inside it. You can use Emacs with or without X. You don't need a terminal multiplexer like screen or tmux, but I prefer to run emacs as a server and use emacsclient from tmux if running it from shell.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 '12 at 12:41









          Emre SahinEmre Sahin

          1612




          1612













          • I would suggest to use terminator! But Its purely one's choice!

            – Pranit Bauva
            Nov 27 '12 at 17:19



















          • I would suggest to use terminator! But Its purely one's choice!

            – Pranit Bauva
            Nov 27 '12 at 17:19

















          I would suggest to use terminator! But Its purely one's choice!

          – Pranit Bauva
          Nov 27 '12 at 17:19





          I would suggest to use terminator! But Its purely one's choice!

          – Pranit Bauva
          Nov 27 '12 at 17:19











          3















          • solution with no X at all: framebuffer + Linux console + GNU screen + vim + w3m

          • solution with X but no desktop environment: dwm + urxvt + GNU screen + vim + w3m + surf


          dwm uses only a few hundred kB of memory, keyboard driven, but you can use mouse as well if you like. Check http://suckless.org for more simple yet powerful tools.






          share|improve this answer




























            3















            • solution with no X at all: framebuffer + Linux console + GNU screen + vim + w3m

            • solution with X but no desktop environment: dwm + urxvt + GNU screen + vim + w3m + surf


            dwm uses only a few hundred kB of memory, keyboard driven, but you can use mouse as well if you like. Check http://suckless.org for more simple yet powerful tools.






            share|improve this answer


























              3












              3








              3








              • solution with no X at all: framebuffer + Linux console + GNU screen + vim + w3m

              • solution with X but no desktop environment: dwm + urxvt + GNU screen + vim + w3m + surf


              dwm uses only a few hundred kB of memory, keyboard driven, but you can use mouse as well if you like. Check http://suckless.org for more simple yet powerful tools.






              share|improve this answer














              • solution with no X at all: framebuffer + Linux console + GNU screen + vim + w3m

              • solution with X but no desktop environment: dwm + urxvt + GNU screen + vim + w3m + surf


              dwm uses only a few hundred kB of memory, keyboard driven, but you can use mouse as well if you like. Check http://suckless.org for more simple yet powerful tools.







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered Nov 26 '12 at 0:07









              JingJing

              1228




              1228























                  2














                  For multiple shells with easy keyboard navigation between them, you might want to look into GNU Screen, or byobu (which is an enhancement of it).






                  share|improve this answer




























                    2














                    For multiple shells with easy keyboard navigation between them, you might want to look into GNU Screen, or byobu (which is an enhancement of it).






                    share|improve this answer


























                      2












                      2








                      2







                      For multiple shells with easy keyboard navigation between them, you might want to look into GNU Screen, or byobu (which is an enhancement of it).






                      share|improve this answer













                      For multiple shells with easy keyboard navigation between them, you might want to look into GNU Screen, or byobu (which is an enhancement of it).







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Nov 22 '12 at 19:09







                      user27282






























                          2














                          I undertook a similar endeavor a couple of months ago, abandoning my mouse and exploring a multitude of set ups and window managers. Looks like you've already been offered plenty of helpful suggestions, but I figured a couple extra cents couldn't hurt. Here's my two:



                          Take a look at i3 window manager. It's light, with simple configuration and doesn't require a recompile after altering the config. Tiling functionality and tagged workspaces mean no mouse and endless possibilities based on preference and screen space. Programs can be assigned to tags and keys can be bound to just about anything. i3status or conky are easily piped to i3 for system info. Install dmenu and unplug your mouse.



                          Try a light distro. Arch, Gentoo, and Slackware all offer different options for setting up a light environment. Start small, and pay attention to dependencies. Install only what you need and learn to configure it properly.
                          Don't start X on boot. Learn to use all of the tools at your expense. Vim is a beast. If you already know it, use it. If not, learn it. Pay attention to the details. Learn what you have on your system and why it's there.






                          share|improve this answer
























                          • Seconding the "light distro" approach. It really forces you to get your hands dirty, even if they lay it out for you command by command (the Gentoo Install Handbook is excellent), because every system is different. The initial install doesn't even give you X, so you're stuck on the command line.

                            – ND Geek
                            Nov 29 '12 at 15:42
















                          2














                          I undertook a similar endeavor a couple of months ago, abandoning my mouse and exploring a multitude of set ups and window managers. Looks like you've already been offered plenty of helpful suggestions, but I figured a couple extra cents couldn't hurt. Here's my two:



                          Take a look at i3 window manager. It's light, with simple configuration and doesn't require a recompile after altering the config. Tiling functionality and tagged workspaces mean no mouse and endless possibilities based on preference and screen space. Programs can be assigned to tags and keys can be bound to just about anything. i3status or conky are easily piped to i3 for system info. Install dmenu and unplug your mouse.



                          Try a light distro. Arch, Gentoo, and Slackware all offer different options for setting up a light environment. Start small, and pay attention to dependencies. Install only what you need and learn to configure it properly.
                          Don't start X on boot. Learn to use all of the tools at your expense. Vim is a beast. If you already know it, use it. If not, learn it. Pay attention to the details. Learn what you have on your system and why it's there.






                          share|improve this answer
























                          • Seconding the "light distro" approach. It really forces you to get your hands dirty, even if they lay it out for you command by command (the Gentoo Install Handbook is excellent), because every system is different. The initial install doesn't even give you X, so you're stuck on the command line.

                            – ND Geek
                            Nov 29 '12 at 15:42














                          2












                          2








                          2







                          I undertook a similar endeavor a couple of months ago, abandoning my mouse and exploring a multitude of set ups and window managers. Looks like you've already been offered plenty of helpful suggestions, but I figured a couple extra cents couldn't hurt. Here's my two:



                          Take a look at i3 window manager. It's light, with simple configuration and doesn't require a recompile after altering the config. Tiling functionality and tagged workspaces mean no mouse and endless possibilities based on preference and screen space. Programs can be assigned to tags and keys can be bound to just about anything. i3status or conky are easily piped to i3 for system info. Install dmenu and unplug your mouse.



                          Try a light distro. Arch, Gentoo, and Slackware all offer different options for setting up a light environment. Start small, and pay attention to dependencies. Install only what you need and learn to configure it properly.
                          Don't start X on boot. Learn to use all of the tools at your expense. Vim is a beast. If you already know it, use it. If not, learn it. Pay attention to the details. Learn what you have on your system and why it's there.






                          share|improve this answer













                          I undertook a similar endeavor a couple of months ago, abandoning my mouse and exploring a multitude of set ups and window managers. Looks like you've already been offered plenty of helpful suggestions, but I figured a couple extra cents couldn't hurt. Here's my two:



                          Take a look at i3 window manager. It's light, with simple configuration and doesn't require a recompile after altering the config. Tiling functionality and tagged workspaces mean no mouse and endless possibilities based on preference and screen space. Programs can be assigned to tags and keys can be bound to just about anything. i3status or conky are easily piped to i3 for system info. Install dmenu and unplug your mouse.



                          Try a light distro. Arch, Gentoo, and Slackware all offer different options for setting up a light environment. Start small, and pay attention to dependencies. Install only what you need and learn to configure it properly.
                          Don't start X on boot. Learn to use all of the tools at your expense. Vim is a beast. If you already know it, use it. If not, learn it. Pay attention to the details. Learn what you have on your system and why it's there.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Nov 26 '12 at 5:04









                          marquezc329marquezc329

                          211




                          211













                          • Seconding the "light distro" approach. It really forces you to get your hands dirty, even if they lay it out for you command by command (the Gentoo Install Handbook is excellent), because every system is different. The initial install doesn't even give you X, so you're stuck on the command line.

                            – ND Geek
                            Nov 29 '12 at 15:42



















                          • Seconding the "light distro" approach. It really forces you to get your hands dirty, even if they lay it out for you command by command (the Gentoo Install Handbook is excellent), because every system is different. The initial install doesn't even give you X, so you're stuck on the command line.

                            – ND Geek
                            Nov 29 '12 at 15:42

















                          Seconding the "light distro" approach. It really forces you to get your hands dirty, even if they lay it out for you command by command (the Gentoo Install Handbook is excellent), because every system is different. The initial install doesn't even give you X, so you're stuck on the command line.

                          – ND Geek
                          Nov 29 '12 at 15:42





                          Seconding the "light distro" approach. It really forces you to get your hands dirty, even if they lay it out for you command by command (the Gentoo Install Handbook is excellent), because every system is different. The initial install doesn't even give you X, so you're stuck on the command line.

                          – ND Geek
                          Nov 29 '12 at 15:42











                          1














                          I had a similar desire about six months ago. Primarily because I was working via SSH all day. As has already been suggested, use GNU screen. Its pretty terrible (IMHO) straight after installing it. However! It is highly customizable via the .screenrc file. There are plenty of online tutorials which provide code you can cut and paste to get it just as you like.



                          I went so far as to put together a few scripts for setting up such an environment - MALiCE - 'My Awesome Linux Coding Environment'. Its available on Github here:



                          MALiCE



                          This also documents a lots keyboard shortcuts as well as a sample .muttrc and .screenrc files - which are setup to work with things like gmail.



                          Note its not perfect but it may save you some time and effort to have a look at some of the config files and scripts. There's a strong vim bias.



                          I'd also recommend programs such as cmus (text-based media player - pretty good) and mutt (email client - again configured via text file .muttrc). There are also text-based IRC clients and believe it or not, text-based video decoders which will turn video into ASCII - a bit extreme but each to their own.



                          If you don't want a desktop at all then there are number of options. For example you could install slackware, which if I remember correctly boots to a command-line interface. You have to go out of your way to start the GUI.






                          share|improve this answer


























                          • We could add the elinks web browser to that list of good text-based utilities.

                            – Stéphane Chazelas
                            Nov 22 '12 at 20:44











                          • How does it compare with other text-based web browsers? I could never get used to web surfing from the command-line :p

                            – user19082
                            Nov 22 '12 at 21:17


















                          1














                          I had a similar desire about six months ago. Primarily because I was working via SSH all day. As has already been suggested, use GNU screen. Its pretty terrible (IMHO) straight after installing it. However! It is highly customizable via the .screenrc file. There are plenty of online tutorials which provide code you can cut and paste to get it just as you like.



                          I went so far as to put together a few scripts for setting up such an environment - MALiCE - 'My Awesome Linux Coding Environment'. Its available on Github here:



                          MALiCE



                          This also documents a lots keyboard shortcuts as well as a sample .muttrc and .screenrc files - which are setup to work with things like gmail.



                          Note its not perfect but it may save you some time and effort to have a look at some of the config files and scripts. There's a strong vim bias.



                          I'd also recommend programs such as cmus (text-based media player - pretty good) and mutt (email client - again configured via text file .muttrc). There are also text-based IRC clients and believe it or not, text-based video decoders which will turn video into ASCII - a bit extreme but each to their own.



                          If you don't want a desktop at all then there are number of options. For example you could install slackware, which if I remember correctly boots to a command-line interface. You have to go out of your way to start the GUI.






                          share|improve this answer


























                          • We could add the elinks web browser to that list of good text-based utilities.

                            – Stéphane Chazelas
                            Nov 22 '12 at 20:44











                          • How does it compare with other text-based web browsers? I could never get used to web surfing from the command-line :p

                            – user19082
                            Nov 22 '12 at 21:17
















                          1












                          1








                          1







                          I had a similar desire about six months ago. Primarily because I was working via SSH all day. As has already been suggested, use GNU screen. Its pretty terrible (IMHO) straight after installing it. However! It is highly customizable via the .screenrc file. There are plenty of online tutorials which provide code you can cut and paste to get it just as you like.



                          I went so far as to put together a few scripts for setting up such an environment - MALiCE - 'My Awesome Linux Coding Environment'. Its available on Github here:



                          MALiCE



                          This also documents a lots keyboard shortcuts as well as a sample .muttrc and .screenrc files - which are setup to work with things like gmail.



                          Note its not perfect but it may save you some time and effort to have a look at some of the config files and scripts. There's a strong vim bias.



                          I'd also recommend programs such as cmus (text-based media player - pretty good) and mutt (email client - again configured via text file .muttrc). There are also text-based IRC clients and believe it or not, text-based video decoders which will turn video into ASCII - a bit extreme but each to their own.



                          If you don't want a desktop at all then there are number of options. For example you could install slackware, which if I remember correctly boots to a command-line interface. You have to go out of your way to start the GUI.






                          share|improve this answer















                          I had a similar desire about six months ago. Primarily because I was working via SSH all day. As has already been suggested, use GNU screen. Its pretty terrible (IMHO) straight after installing it. However! It is highly customizable via the .screenrc file. There are plenty of online tutorials which provide code you can cut and paste to get it just as you like.



                          I went so far as to put together a few scripts for setting up such an environment - MALiCE - 'My Awesome Linux Coding Environment'. Its available on Github here:



                          MALiCE



                          This also documents a lots keyboard shortcuts as well as a sample .muttrc and .screenrc files - which are setup to work with things like gmail.



                          Note its not perfect but it may save you some time and effort to have a look at some of the config files and scripts. There's a strong vim bias.



                          I'd also recommend programs such as cmus (text-based media player - pretty good) and mutt (email client - again configured via text file .muttrc). There are also text-based IRC clients and believe it or not, text-based video decoders which will turn video into ASCII - a bit extreme but each to their own.



                          If you don't want a desktop at all then there are number of options. For example you could install slackware, which if I remember correctly boots to a command-line interface. You have to go out of your way to start the GUI.







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited 4 hours ago









                          Rui F Ribeiro

                          41.9k1483142




                          41.9k1483142










                          answered Nov 22 '12 at 20:29







                          user19082




















                          • We could add the elinks web browser to that list of good text-based utilities.

                            – Stéphane Chazelas
                            Nov 22 '12 at 20:44











                          • How does it compare with other text-based web browsers? I could never get used to web surfing from the command-line :p

                            – user19082
                            Nov 22 '12 at 21:17





















                          • We could add the elinks web browser to that list of good text-based utilities.

                            – Stéphane Chazelas
                            Nov 22 '12 at 20:44











                          • How does it compare with other text-based web browsers? I could never get used to web surfing from the command-line :p

                            – user19082
                            Nov 22 '12 at 21:17



















                          We could add the elinks web browser to that list of good text-based utilities.

                          – Stéphane Chazelas
                          Nov 22 '12 at 20:44





                          We could add the elinks web browser to that list of good text-based utilities.

                          – Stéphane Chazelas
                          Nov 22 '12 at 20:44













                          How does it compare with other text-based web browsers? I could never get used to web surfing from the command-line :p

                          – user19082
                          Nov 22 '12 at 21:17







                          How does it compare with other text-based web browsers? I could never get used to web surfing from the command-line :p

                          – user19082
                          Nov 22 '12 at 21:17













                          0














                          http://en.wikipedia.org/wiki/VESA_BIOS_Extensions



                          http://www.pendrivelinux.com/vga-boot-modes-to-set-screen-resolution/



                          But they are not all supported by all graphic cards, you should test them.



                          For switching between multiple shells I think Alt-F it is quick enough.






                          share|improve this answer




























                            0














                            http://en.wikipedia.org/wiki/VESA_BIOS_Extensions



                            http://www.pendrivelinux.com/vga-boot-modes-to-set-screen-resolution/



                            But they are not all supported by all graphic cards, you should test them.



                            For switching between multiple shells I think Alt-F it is quick enough.






                            share|improve this answer


























                              0












                              0








                              0







                              http://en.wikipedia.org/wiki/VESA_BIOS_Extensions



                              http://www.pendrivelinux.com/vga-boot-modes-to-set-screen-resolution/



                              But they are not all supported by all graphic cards, you should test them.



                              For switching between multiple shells I think Alt-F it is quick enough.






                              share|improve this answer













                              http://en.wikipedia.org/wiki/VESA_BIOS_Extensions



                              http://www.pendrivelinux.com/vga-boot-modes-to-set-screen-resolution/



                              But they are not all supported by all graphic cards, you should test them.



                              For switching between multiple shells I think Alt-F it is quick enough.







                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Nov 22 '12 at 18:08









                              Laurentiu RoescuLaurentiu Roescu

                              53947




                              53947























                                  0














                                  The key to this is not the distribution, but the tools. Just stop using GUI tools, and tweak the CLI tools to look and behave exactly as you'd like. One way is to edit ~/.Xresources, and then load it with xrdb in ~/.xinitrc. There, you could also start a bunch of applications that you always use.



                                  Obviously you need a good shell: I'd say zsh. You'll have to work extensively on ~/.zshrc. (But bash would work too, of course. Then, ~/.bashrc would be the place.)



                                  Second, an editor. Emacs or vim, depending on which you currently use. A less advanced editor (e.g., nano) won't do. As with the shell, you'd do a lot of work on ~/.emacs or the corresponding init file(s).



                                  You need to incorporate as much as you possibly can in your text editor. I'll give some examples from the Emacs world, simply because I'm an Emacs user. For mail, rmail. For file management, dired. For web browsing, W3M. For news, gnus (although I don't use it). For man pages, M-x man. And so on.



                                  The reason you'd do this, and not use other CLI applications (e.g., just man for man pages, lynx for browsing, etc.) is:



                                  1) the level of integration (kill, yank, make shortcuts; everything in a blink...)



                                  2) the keyboard shortcuts for navigating the cursor, searching, etc. (i.e., your muscle memory)



                                  As for X, you don't need to abandon it. Just because you want everything in CLI doesn't mean you don't want GFX at all (or - at least, I want CLI-only, and GFX). For example, although you modify images with (CLI) mogrify or convert, you'd still want to display it to check the result (for example, in gliv; just disable the menu bar not to be tempted to use the mouse). Another example is LaTeX and PDF documents.



                                  As for the terminal, most people would say screen or tmux but you could also use the Linux virtual terminals (the console, or ttys). In X, urxvt has a Perl extension that enables tabs. For those (the ttys and urxvt) you could set up a uniform interface, for example Alt-J/K to switch between tabs, so you don't have to reach for the arrow keys (or whatever is default).



                                  Good luck :) Feel free to mail me some pointers of your own when you're done (or almost there... you're never done), as I'm on the same track as you.






                                  share|improve this answer






























                                    0














                                    The key to this is not the distribution, but the tools. Just stop using GUI tools, and tweak the CLI tools to look and behave exactly as you'd like. One way is to edit ~/.Xresources, and then load it with xrdb in ~/.xinitrc. There, you could also start a bunch of applications that you always use.



                                    Obviously you need a good shell: I'd say zsh. You'll have to work extensively on ~/.zshrc. (But bash would work too, of course. Then, ~/.bashrc would be the place.)



                                    Second, an editor. Emacs or vim, depending on which you currently use. A less advanced editor (e.g., nano) won't do. As with the shell, you'd do a lot of work on ~/.emacs or the corresponding init file(s).



                                    You need to incorporate as much as you possibly can in your text editor. I'll give some examples from the Emacs world, simply because I'm an Emacs user. For mail, rmail. For file management, dired. For web browsing, W3M. For news, gnus (although I don't use it). For man pages, M-x man. And so on.



                                    The reason you'd do this, and not use other CLI applications (e.g., just man for man pages, lynx for browsing, etc.) is:



                                    1) the level of integration (kill, yank, make shortcuts; everything in a blink...)



                                    2) the keyboard shortcuts for navigating the cursor, searching, etc. (i.e., your muscle memory)



                                    As for X, you don't need to abandon it. Just because you want everything in CLI doesn't mean you don't want GFX at all (or - at least, I want CLI-only, and GFX). For example, although you modify images with (CLI) mogrify or convert, you'd still want to display it to check the result (for example, in gliv; just disable the menu bar not to be tempted to use the mouse). Another example is LaTeX and PDF documents.



                                    As for the terminal, most people would say screen or tmux but you could also use the Linux virtual terminals (the console, or ttys). In X, urxvt has a Perl extension that enables tabs. For those (the ttys and urxvt) you could set up a uniform interface, for example Alt-J/K to switch between tabs, so you don't have to reach for the arrow keys (or whatever is default).



                                    Good luck :) Feel free to mail me some pointers of your own when you're done (or almost there... you're never done), as I'm on the same track as you.






                                    share|improve this answer




























                                      0












                                      0








                                      0







                                      The key to this is not the distribution, but the tools. Just stop using GUI tools, and tweak the CLI tools to look and behave exactly as you'd like. One way is to edit ~/.Xresources, and then load it with xrdb in ~/.xinitrc. There, you could also start a bunch of applications that you always use.



                                      Obviously you need a good shell: I'd say zsh. You'll have to work extensively on ~/.zshrc. (But bash would work too, of course. Then, ~/.bashrc would be the place.)



                                      Second, an editor. Emacs or vim, depending on which you currently use. A less advanced editor (e.g., nano) won't do. As with the shell, you'd do a lot of work on ~/.emacs or the corresponding init file(s).



                                      You need to incorporate as much as you possibly can in your text editor. I'll give some examples from the Emacs world, simply because I'm an Emacs user. For mail, rmail. For file management, dired. For web browsing, W3M. For news, gnus (although I don't use it). For man pages, M-x man. And so on.



                                      The reason you'd do this, and not use other CLI applications (e.g., just man for man pages, lynx for browsing, etc.) is:



                                      1) the level of integration (kill, yank, make shortcuts; everything in a blink...)



                                      2) the keyboard shortcuts for navigating the cursor, searching, etc. (i.e., your muscle memory)



                                      As for X, you don't need to abandon it. Just because you want everything in CLI doesn't mean you don't want GFX at all (or - at least, I want CLI-only, and GFX). For example, although you modify images with (CLI) mogrify or convert, you'd still want to display it to check the result (for example, in gliv; just disable the menu bar not to be tempted to use the mouse). Another example is LaTeX and PDF documents.



                                      As for the terminal, most people would say screen or tmux but you could also use the Linux virtual terminals (the console, or ttys). In X, urxvt has a Perl extension that enables tabs. For those (the ttys and urxvt) you could set up a uniform interface, for example Alt-J/K to switch between tabs, so you don't have to reach for the arrow keys (or whatever is default).



                                      Good luck :) Feel free to mail me some pointers of your own when you're done (or almost there... you're never done), as I'm on the same track as you.






                                      share|improve this answer















                                      The key to this is not the distribution, but the tools. Just stop using GUI tools, and tweak the CLI tools to look and behave exactly as you'd like. One way is to edit ~/.Xresources, and then load it with xrdb in ~/.xinitrc. There, you could also start a bunch of applications that you always use.



                                      Obviously you need a good shell: I'd say zsh. You'll have to work extensively on ~/.zshrc. (But bash would work too, of course. Then, ~/.bashrc would be the place.)



                                      Second, an editor. Emacs or vim, depending on which you currently use. A less advanced editor (e.g., nano) won't do. As with the shell, you'd do a lot of work on ~/.emacs or the corresponding init file(s).



                                      You need to incorporate as much as you possibly can in your text editor. I'll give some examples from the Emacs world, simply because I'm an Emacs user. For mail, rmail. For file management, dired. For web browsing, W3M. For news, gnus (although I don't use it). For man pages, M-x man. And so on.



                                      The reason you'd do this, and not use other CLI applications (e.g., just man for man pages, lynx for browsing, etc.) is:



                                      1) the level of integration (kill, yank, make shortcuts; everything in a blink...)



                                      2) the keyboard shortcuts for navigating the cursor, searching, etc. (i.e., your muscle memory)



                                      As for X, you don't need to abandon it. Just because you want everything in CLI doesn't mean you don't want GFX at all (or - at least, I want CLI-only, and GFX). For example, although you modify images with (CLI) mogrify or convert, you'd still want to display it to check the result (for example, in gliv; just disable the menu bar not to be tempted to use the mouse). Another example is LaTeX and PDF documents.



                                      As for the terminal, most people would say screen or tmux but you could also use the Linux virtual terminals (the console, or ttys). In X, urxvt has a Perl extension that enables tabs. For those (the ttys and urxvt) you could set up a uniform interface, for example Alt-J/K to switch between tabs, so you don't have to reach for the arrow keys (or whatever is default).



                                      Good luck :) Feel free to mail me some pointers of your own when you're done (or almost there... you're never done), as I'm on the same track as you.







                                      share|improve this answer














                                      share|improve this answer



                                      share|improve this answer








                                      edited Nov 24 '12 at 7:39

























                                      answered Nov 24 '12 at 7:25









                                      Emanuel BergEmanuel Berg

                                      3,75152954




                                      3,75152954






























                                          draft saved

                                          draft discarded




















































                                          Thanks for contributing an answer to Unix & Linux Stack Exchange!


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid



                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.


                                          To learn more, see our tips on writing great answers.




                                          draft saved


                                          draft discarded














                                          StackExchange.ready(
                                          function () {
                                          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f56386%2fsuggested-setup-for-an-ultra-lightweight-text-based-programming-environment-in-l%23new-answer', 'question_page');
                                          }
                                          );

                                          Post as a guest















                                          Required, but never shown





















































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown

































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown







                                          Popular posts from this blog

                                          濃尾地震

                                          How to rewrite equation of hyperbola in standard form

                                          No ethernet ip address in my vocore2