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;
}
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
add a comment |
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
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
add a comment |
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
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
shell vim gnu-screen lightweight
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
add a comment |
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
add a comment |
8 Answers
8
active
oldest
votes
I read through your questions several times before I realized that I definitely have a recommendation for you: vim with tmux: http://tmux.sourceforge.net/
tmux is a screen 'multiplexor' that lets you have several windows and panes 'within 1'
It is a successor to the venerable 'screen' program, long a staple of many cli coders. One of its original winning features over vim was the ability to do split windows vertically as well as horizontally. However screen has moved forward and can now do that too.
Example:
Another part of the setup that I would recommend is a good set of aliases. These will make your typing and interaction a lot easier and quicker
Some of my favorites are shown here as examples:
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
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
|
show 2 more comments
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.
I would suggest to use terminator! But Its purely one's choice!
– Pranit Bauva
Nov 27 '12 at 17:19
add a comment |
- 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.
add a comment |
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).
add a comment |
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.
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
add a comment |
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.
We could add theelinks
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
add a comment |
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.
add a comment |
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.
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
I read through your questions several times before I realized that I definitely have a recommendation for you: vim with tmux: http://tmux.sourceforge.net/
tmux is a screen 'multiplexor' that lets you have several windows and panes 'within 1'
It is a successor to the venerable 'screen' program, long a staple of many cli coders. One of its original winning features over vim was the ability to do split windows vertically as well as horizontally. However screen has moved forward and can now do that too.
Example:
Another part of the setup that I would recommend is a good set of aliases. These will make your typing and interaction a lot easier and quicker
Some of my favorites are shown here as examples:
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
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
|
show 2 more comments
I read through your questions several times before I realized that I definitely have a recommendation for you: vim with tmux: http://tmux.sourceforge.net/
tmux is a screen 'multiplexor' that lets you have several windows and panes 'within 1'
It is a successor to the venerable 'screen' program, long a staple of many cli coders. One of its original winning features over vim was the ability to do split windows vertically as well as horizontally. However screen has moved forward and can now do that too.
Example:
Another part of the setup that I would recommend is a good set of aliases. These will make your typing and interaction a lot easier and quicker
Some of my favorites are shown here as examples:
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
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
|
show 2 more comments
I read through your questions several times before I realized that I definitely have a recommendation for you: vim with tmux: http://tmux.sourceforge.net/
tmux is a screen 'multiplexor' that lets you have several windows and panes 'within 1'
It is a successor to the venerable 'screen' program, long a staple of many cli coders. One of its original winning features over vim was the ability to do split windows vertically as well as horizontally. However screen has moved forward and can now do that too.
Example:
Another part of the setup that I would recommend is a good set of aliases. These will make your typing and interaction a lot easier and quicker
Some of my favorites are shown here as examples:
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
I read through your questions several times before I realized that I definitely have a recommendation for you: vim with tmux: http://tmux.sourceforge.net/
tmux is a screen 'multiplexor' that lets you have several windows and panes 'within 1'
It is a successor to the venerable 'screen' program, long a staple of many cli coders. One of its original winning features over vim was the ability to do split windows vertically as well as horizontally. However screen has moved forward and can now do that too.
Example:
Another part of the setup that I would recommend is a good set of aliases. These will make your typing and interaction a lot easier and quicker
Some of my favorites are shown here as examples:
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
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
|
show 2 more comments
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
|
show 2 more comments
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.
I would suggest to use terminator! But Its purely one's choice!
– Pranit Bauva
Nov 27 '12 at 17:19
add a comment |
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.
I would suggest to use terminator! But Its purely one's choice!
– Pranit Bauva
Nov 27 '12 at 17:19
add a comment |
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.
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.
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
add a comment |
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
add a comment |
- 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.
add a comment |
- 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.
add a comment |
- 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.
- 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.
answered Nov 26 '12 at 0:07
JingJing
1228
1228
add a comment |
add a comment |
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).
add a comment |
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).
add a comment |
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).
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).
answered Nov 22 '12 at 19:09
user27282
add a comment |
add a comment |
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.
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
add a comment |
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.
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
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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.
We could add theelinks
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
add a comment |
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.
We could add theelinks
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
add a comment |
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.
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.
edited 4 hours ago
Rui F Ribeiro
41.9k1483142
41.9k1483142
answered Nov 22 '12 at 20:29
user19082
We could add theelinks
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
add a comment |
We could add theelinks
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
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
answered Nov 22 '12 at 18:08
Laurentiu RoescuLaurentiu Roescu
53947
53947
add a comment |
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
edited Nov 24 '12 at 7:39
answered Nov 24 '12 at 7:25
Emanuel BergEmanuel Berg
3,75152954
3,75152954
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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