Boosting Development Efficiency — Linux Development Environment Setup Guide
In modern software development, a well-configured development environment can significantly improve productivity. This article covers setting up a development environment on Linux, including configuration and usage of the tmux terminal multiplexer, vim code editor, the enhanced zsh shell, and the git version control tool.
Prerequisites
Before you begin, make sure your system meets the following minimum requirements:
- tmux: version >= 2.1
- vim: version >= 7.3
- zsh: oh-my-zsh recommended
- git: latest version
1. TMUX Terminal Multiplexer Configuration
TMUX is a terminal multiplexer that allows you to create multiple sessions and windows within a single terminal window, suitable for developers who need to handle multiple tasks simultaneously.
Installation and Configuration
First, clone the recommended tmux configuration:
| |
On Ubuntu systems, you also need to install xclip for cross-file copy and paste support:
| |
Configuration File Modifications
Open the .tmux.conf file and find the following configuration to modify:
Original configuration:
| |
Change to:
| |
If your tmux version is < 1.8, modify the configuration as follows:
| |
In the .tmux.conf.local file, uncomment the following configuration:
| |
Common TMUX Operations
Session management:
tmux new -s session_name: Create a new sessiontmux ls: List all sessionstmux attach -t session_name: Attach to a specific sessiontmux kill-session -t session_name: Kill a session
Window management:
Ctrl+d: Close current windowCtrl+bthenc: Create new windowCtrl+bthenw: Select windowCtrl+bthen0-9: Quick switch between windows
Pane management:
Ctrl+bthen": Split pane horizontallyCtrl+bthen%: Split pane verticallyCtrl+bthenarrow keys: Switch between panesCtrl+bthenx: Close current pane
2. GIT Version Control Configuration
GIT is one of the most important version control tools in modern software development. Below we introduce how to use git submodules to manage multiple related projects.
Managing Multiple Projects with Git Submodules
In daily development, we often need to manage multiple related git repositories simultaneously, including team projects and personal projects. Using git submodules makes it very convenient to manage these projects.
Creating a project with submodules:
| |
Updating all submodules:
When you need to update all submodules simultaneously, use the following command:
| |
Cloning a project with submodules:
| |
Git Alias Configuration
To make git more convenient to use, you can add the following aliases to your .gitconfig file:
| |
3. ZSH Enhanced Shell Configuration
ZSH is an enhanced version of the traditional bash shell. When paired with oh-my-zsh, it provides richer functionality and a better user experience.
Installing Oh My ZSH
| |
Common Plugin Configuration
Edit the ~/.zshrc file and enable the following plugins:
| |
Recommended plugin descriptions:
- zsh-autosuggestions: Automatic command suggestions
- zsh-syntax-highlighting: Syntax highlighting
- autojump: Smart directory jumping
- extract: Smart extraction
- docker: Docker command completion
- npm: Node.js package management completion
Theme Configuration
Choose a theme you like, for example:
| |
Custom Environment Variables
Add common environment variables in ~/.zshrc:
| |
4. VIM Code Editor Configuration
VIM is a code editor that, with proper configuration, can provide a development experience comparable to an IDE.
Installing VIM
| |
VIM Configuration File
Create a ~/.vimrc configuration file:
| |
Basic VIM Operations
Basic movement:
h,j,k,l: left, down, up, rightgg: Jump to beginning of fileG: Jump to end of filew: Jump to beginning of next wordb: Jump to beginning of previous word
Editing operations:
i: Insert modeEsc: Return to normal modedd: Delete current lineyy: Copy current linep: Pasteu: UndoCtrl+r: Redo
Search and replace:
/pattern: Search forward?pattern: Search backwardn: Next search resultN: Previous search result:s/pattern/replacement/g: Global replacement
Multi-window operations:
:split: Split window horizontally:vsplit: Split window verticallyCtrl+wthenarrow keys: Switch between windowsCtrl+wthenc: Close current window
5. Integrated Configuration
Creating a Startup Script
Create a startup script ~/dev-setup to quickly configure all tools:
| |
Add execute permission to the script:
| |
Environment Variable Configuration
Add common environment variables in ~/.zshrc:
| |
6. Tips and Best Practices
TMUX Tips
- Session persistence: Even if the SSH connection drops, tmux sessions remain running
- Session sharing: You can share tmux sessions with other team members
- Shortcut memorization: Remember
Ctrl+bas the tmux prefix key - Custom configuration: Modify
.tmux.conf.localaccording to your usage habits
VIM Tips
- Visual mode: Press
vto enter character selection mode, pressVto enter line selection mode - Block selection: Press
Ctrl+vto enter block selection mode - Macro recording: Press
qato start recording a macro, pressqto stop, press@ato execute - Folding: Press
zcto fold, presszoto unfold
ZSH Tips
- Auto-completion: Press
Tabafter typing a command to complete it - History search: Use
Ctrl+rto search command history - Directory jumping: Use the
jcommand to jump to frequently used directories - Plugin management: Use
antigenorzgento manage zsh plugins
GIT Tips
- Branch management: Use
git branchto manage branches - Merge strategies: Choose appropriate merge strategies based on project needs
- Tag management: Use
git tagto manage version tags - Remote repositories: Use
git remoteto manage remote repositories
7. Troubleshooting
Common Issues
TMUX copy and paste not working:
| |
VIM plugins cannot be installed:
| |
ZSH plugins cannot be loaded:
| |
GIT submodule issues:
| |
8. Summary
With the above configuration, you now have a complete Linux development environment, including:
- TMUX: A terminal multiplexer supporting session management and window splitting
- VIM: A code editor supporting rich plugins and custom configuration
- ZSH: An enhanced shell providing auto-completion and syntax highlighting
- GIT: A version control tool supporting submodule management
We recommend further personalizing each tool based on your actual needs and usage habits.