Regardless of which utilities each of us chooses to use, we cannot say the choices are perfectly objective. For various reasons, other people may prefer completely different utilities even if the end result is similar. Below I will present what I use and briefly the motivation and context. It is more important to do something and less important what tools we use to reach a result.
Text Editor
Regardless of whether we use Linux for programming, administration, or any creative activity, we will need a file editor. I have personally tried dozens of other editors but every time I end up back at Vim. In retrospect I can say that the time spent trying other editors was wasted. Some of the editors I used were abandoned by their developers, others followed a commercial path incompatible with my needs, or didn't even manage to become good enough compared to Vim.
Exception: If you edit very little text, Vim will probably just be a huge headache. In that case you can use any other editor you find convenient at the moment.
Why Vim?
Vim is among the few editors that are extremely customizable and suited to all situations where text editing is needed. Default functionality can be extended with plugins. It can be used both on desktop and directly on servers without needing a graphical interface. The major disadvantage of Vim is the learning difficulty and the somewhat unusual way of working. Once the critical learning threshold is overcome it will certainly become your preferred editor. Initially released in 1976, Vim has developed constantly and has managed to remain to this day one of the most appreciated editors.
Vim vs. Emacs
Emacs is a similar editor in many ways, being much more customizable than Vim. We could even say Emacs is a language suitable for creating editors. Using Emacs only becomes practical after prior customization. Scripting requires knowledge of Lisp. I know of situations where prolonged Emacs use led to finger pain due to Emacs-specific key combinations.
Vim vs. Other Editors / IDEs
Unfortunately these modern editors fail to match Vim/Emacs. Either they are too slow, lack certain functionality, don't allow extension through plugins, or disappear from the market as suddenly as they appear. There are special situations, e.g. Java or Android development, where using an IDE is more convenient, but for the vast majority of situations Vim is a much better solution.
Terminal Multiplexer: tmux
tmux is an application that allows using multiple terminals within a single window. It is very useful for working with multiple CLI programs, especially in remote work sessions. Applications run through tmux remain active even if the connection to the remote server is interrupted. screen can also be used for the same purpose.
A minimal ~/.tmux.conf:
# look good
set -g default-terminal "screen-256color"
# act like vim
setw -g mode-keys vi
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind-key -r C-h select-window -t :-
bind-key -r C-l select-window -t :+
# act like GNU screen
unbind C-b
set -g prefix C-a
# split bindings
unbind %
bind \ split-window -h
bind - split-window -v
bind-key ` last-window
bind-key z last-pane
set -g status-keys vi
setw -g mode-keys vi
# notifications
setw -g monitor-activity on
# auto rename window by the command currently running
setw -g automatic-rename on
# tmux inside tmux ... C-a a
bind-key a send-prefix
# start window numbering at 1
set -g base-index 1
Session managers built on top of tmux: tmuxifier (shell) and tmuxinator (ruby).
TTY Recording, Playback, and Casting
Record and replay terminal sessions, or stream them live for sharing and demos.
Self-hosted:
ttyrecrecords a session;ttyplayreplays it at the original speed- ttycast streams a live terminal session over HTTP
Hosted service: asciinema.org records, stores, and shares terminal sessions with a single command. Playback runs in the browser, text is selectable, and the recording is stored as plain JSON.
Video Utilities
mplayer / mencoder for playback and transcoding. handbrake for format conversion.