I’ve noticed that many friends who are starting to use Linux (particularly Ubuntu) struggle with terminal usage. Based on my experience and terminal setup, I’d like to share some tips that can significantly improve your command-line experience.

This guide covers four essential tools:

  • Bash Enhancement - Case-insensitive completion and fuzzy history search
  • Neovim - Modern text editor setup
  • Tmux - Terminal multiplexer for session management
  • Lazygit - Visual Git interface

For ZSH + Oh My Zsh setup, see ZSH Setup Guide. (Bash is recommended for ROS/ROS2 environments)

You can also find this setup on my GitHub: Ubuntu Basic Setup


1. Bash Enhancement

Case-Insensitive Tab Completion

Configure ~/.inputrc to make tab completion case-insensitive.

Option 1: Edit directly

vim ~/.inputrc

Add the following:

set completion-ignore-case on
set show-all-if-ambiguous on
set colored-stats on

Option 2: Generate via commands

echo 'set completion-ignore-case on' > ~/.inputrc
echo 'set show-all-if-ambiguous on' >> ~/.inputrc
echo 'set colored-stats on' >> ~/.inputrc

Apply settings

bind -f ~/.inputrc

fzf (Fuzzy Finder)

A tool for fuzzy searching through command history.

Installation

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Usage

  • Ctrl + R → Fuzzy search through history

Verify settings

source ~/.bashrc

2. Neovim Setup

Download newest Neovim on Ubuntu

Installation

# Install dependencies (optional)
sudo apt install ninja-build gettext cmake unzip curl
# Build from source
git clone https://github.com/neovim/neovim
cd neovim && git checkout stable
make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install

Quick Theme Setup

NvChad (Recommended):

git clone https://github.com/NvChad/starter ~/.config/nvim && nvim

Custom Configuration (Made by me. Focus on Rust):

git clone https://github.com/JisangYun00/clean-nvim.git ~/.config/nvim && nvim

3. Tmux Setup

Installation

# Install packages
sudo apt install git xclip tmux
 
# Install TPM (Tmux Plugin Manager)
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Basic Configuration

Create ~/.tmux.conf:

# Core Options
set -g mouse on
# set-option -g default-shell /bin/zsh # When using zsh shell
set -g default-terminal "tmux-256color"
set-option -sa terminal-overrides ",xterm*:Tc"
 
# Clipboard setup
set-option -g set-clipboard on
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -in"
 
# Window and Pane Settings
set -g base-index 1
set -g pane-base-index 1
set-window-option -g pane-base-index 1
set-option -g renumber-windows on
set-window-option -g mode-keys vi
 
# Key Bindings
bind -n M-H previous-window
bind -n M-L next-window
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
# bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
bind '"' split-window -v -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
 
# Plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'christoomey/vim-tmux-navigator'
# set -g @plugin 'catppuccin/tmux'
set -g @plugin 'dreamsofcode-io/catppuccin-tmux'
 
set -g automatic-rename on
set -g automatic-rename-format '#{b:pane_current_path}'
 
# Initialize TPM (keep this line at the very end)
run '~/.tmux/plugins/tpm/tpm'

Install plugins: Start tmux, then press Ctrl + b + I

Essential Commands

  • Sessions: tmux new -s name, tmux attach -t name
  • Windows: Ctrl + b + c (new), Alt + H/L (navigate)
  • Panes: Ctrl + b + " (horizontal), Ctrl + b + % (vertical)

4. Lazygit - Visual Git Interface

What is Lazygit?

Lazygit github Lazygit provides a simple terminal UI for Git commands, making Git operations visual and intuitive without memorizing complex commands.

Instalation

LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/

Install for Jetson Orin Nano

# Get the latest version of lazygit
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*')

# Download the ARM64 version for Jetson Orin Nano
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_arm64.tar.gz"

# Extract and install
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/

Key Features:

  • Visual file staging and committing
  • Easy branch switching and merging
  • Interactive rebase and conflict resolution
  • Built-in diff viewer

Benefits of This Setup

Productivity Gains

  • Faster tab completion with case-insensitive matching
  • Session persistence with tmux for long-running tasks
  • Simplified Git workflow with lazygit’s visual interface

Development Workflow

  • Fuzzy history search speeds up repeated commands
  • Multiple terminal sessions without losing context
  • Efficient editing with modern Neovim configuration
  • Intuitive Git operations reduce command-line errors

This setup transforms your terminal into a powerful development environment that significantly improves productivity and makes the command-line experience more enjoyable.