2021-04-09
作为人与计算机的“接口”,shell
无疑是程序员最离不开的工具之一。一个配置得当的shell
能够让工作效率大大提升(👴直接✈)并且还能保持美滋滋的心情(😇)。本文详细介绍了较为流行的Oh my zsh + tmux
组合的配置安装过程,供大家参考💤。
1. Oh My Zsh
1.1 前言
1.1.1 什么是zsh?
zsh
全名z shell
,顾名思义,它是shell
的一种,而且是很powerful的那种。那shell
又是什么?通俗地讲,shell
就是能够接受用户输入指令的操作界面,像我们常说的“命令行”、“终端”等指的都是shell
。shell
的种类繁多,但大多数Linux发行版(如Ubuntu)默认使用的均为bash shell
。相比于bash
,zsh
为程序员提供了更多、更好、更灵活的选择,无论是外观(e.g. 丰富的主题)还是实用的插件(插件是灵魂=。=),因此其深受广大码农的青睐。- 这里给出Zsh主页的官方定义:
Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
1.1.2 什么是oh my zsh?
zsh
的强大功能往往伴随着复杂的插件配置过程(发量-n
😭)。为了使zsh
用起来更方便快捷,oh my zsh
应运而生。oh my zsh
主要的功能就是对zsh
的插件配置进行统一管理,因此你可以形象地称它为zsh
的“配置管家”。- 这里给出Oh My Zsh主页的官方定义:
Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration.
1.1.3 为什么要使用zsh or oh my zsh?
- 效率:让你的指令操作如德芙般丝滑。
- 灵活:插件库深似海,总有一款适合你。
- 成为实验室中最靓的仔:懂的都懂😏
1.2 oh my zsh 安装(step by step)
- 注:以下安装过程均基于Ubuntu 16.04(Windows系统下的安装可直接参考官方链接oh my zsh github,Install zsh)
1.2.1 安装 zsh
- 查看正在使用的shell:
echo $SHELL
- 查看所有shell:
cat /etc/shells
- 安装zsh:
sudo apt install zsh
- 再次查看所有shell:
cat /etc/shells
- 查看zsh版本:
zsh --version # 版本最好大于5.0
- 将zsh设置为默认shell:
chsh -s $(which zsh)
- 仅对当前用户设置(适合在服务器上配置时使用):先输入
chsh
回车, 再输入新的shell路径:/usr/bin/zsh
- 重新启动shell(本地需要重启),输入:
echo $SHELL # 进行验证
- 可能遇到的问题:
Ignore insecure directories and continue [y] or abort compinit [n]?
输入y,再参考issue_1解决- 讨论:
Basically, ZSH expects system files to be owned and modifiable (w) by either you (the one running the shell) or root
- 因此若是普通用户,需联系具有root权限的用户将
compaudit
命令显示的目录的所有者改为root,即运行sudo chown -R root:root target_directory
命令。
- 讨论:
1.2.2 安装 oh my zsh
- 需预先安装:
curl
或wget
,以及git
- 在命令行中输入以下命令之一:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
- 若上述命令执行出错,可直接点击网址进行下载(点击网址后在新弹出的网页右键另存为即可下载
install.sh
文件),再执行sh install.sh
命令进行安装。 - 安装成功后显示:
1.3 oh my zsh使用
- 配置文件:完成安装后,会自动在主目录下生成一个隐藏文件
~/.zshrc
,此即为配置文件,也是最重要的文件。 - 主题:
oh my zsh
提供了海量的主题,具体可参考themes。找到自己心仪的主题后,只需在配置文件中将ZSH_THEME=”robbyrussell”引号中主题名字替换,保存文件后重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)即可。 - 插件:丰富的插件是zsh的灵魂。可用的插件列表见链接plugins,每个插件文件夹下都有其对应的README文档供参考。若要使用某插件,只需在配置文件中将插件名字加入到
plugins=()
字段中的括号中即可。注意需以空格或换行来分隔多个插件名,而不能用逗号。修改后保存文件重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)即可。
1.4 推荐插件(updating)
1.4.1 extract
- 功能:一键解压所有格式文件,
x file_name or extract file_name
- 只需在配置文件中加入该插件名
extract
后重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)即可使用。
1.4.2 autojump
- 功能:自动跳转,具体用法见autojump
- 安装:在命令行中依次执行:
git clone https://github.com/wting/autojump.git cd autojump ./install.py
- 在配置文件中加入该插件名
autojump
后重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)即可使用。
1.4.3 zsh-autosuggestions(强烈推荐)
- 功能:自动补全,具体用法见zsh-autosuggestions
- 安装:在命令行中执行:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
- 在配置文件中加入该插件名
zsh-autosuggestions
后重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)即可使用。 - 改键(由于默认的快捷键较为不方便,因此可按自己习惯进行改键)
- 打开配置文件,找到
source $ZSH/oh-my-zsh.sh
,在该行下面新增一句:bindkey '^F' autosuggest-accept
- ‘^F’代表组合键
Ctrl+F
,可按自己习惯进行更改。更改后保存文件,重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)。 - 部分补全功能:组合键
Alt+F
或Esc+F
,这是自带的,但大部分博客中都没有提及。 - 完成上述改建操作后,可以很方便地使用
Ctrl+F
进行全补全,Alt+F
进行部分补全。
- 打开配置文件,找到
1.4.4 zsh-syntax-highlighting(官方主页:zsh-syntax-highlighting)
- 功能:语法高亮。
- 安装:在命令行中执行:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
- 在配置文件中加入该插件名
zsh-syntax-highlighting
后重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)即可使用。
1.4.5 sudo
- 功能: 连按两次
Esc
即可在当前命令开头加上sudo
。 - 只需在配置文件中加入该插件名
sudo
后重启shell(或直接在命令行中输入source ~/.zshrc
使配置生效)即可使用。
2. Tmux
2.1 简介
Tmux
是一个终端复用神器,能够在单个屏幕中同时创建并操控多个终端。最重要的是,它可以随时从当前屏幕中分离(detach)出去,然后在后台继续运行,并且能够重连(attach)。因此其非常适合在服务器上使用。- tmux github上给出的定义为:
tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.
2.2 安装
- Ubuntu系统, 在命令行中运行:
sudo apt install tmux
- 其他系统的安装可参考官方安装教程tmux install
2.3 配置
- 推荐oh my tmux配置,可在该配置的基础上进行个性化适配。
- 上述配置安装:
cd ~ git clone https://github.com/gpakosz/.tmux.git ln -s -f .tmux/.tmux.conf cp .tmux/.tmux.conf.local .
2.4 基本用法
tmux
: 创建一个新的会话(session),并自动命名为0tmux new -s name
: 创建一个名字为name的会话tmux ls
: 列出当前所有的会话tmux at -t name
: 恢复(attach)名字为name的会话tmux -V
: 查看tmux版本- 快捷键绑定
Ctrl b
: 前置键, 记为<prefix>
<prefix> e
: 打开~/.tmux.conf.local
文件,此文件即为配置文件,可修改以适配自己的习惯。Ctrl l
: 清屏<prefix> Ctrl c
: 创建新的会话<prefix> Ctrl -
: 水平分割窗口<prefix> Ctrl _
: 垂直分割窗口<prefix> t
: 显示时间<prefix> z
: 将当前窗口最大化(返回原状也是该快捷键)<prefix> m
: 开启鼠标模式<prefix> 0-9
: 选择0-9窗口<prefix> ,
: 重命名窗口- 要固定窗口名称,则需在.zshrc中加
DISABLE_AUTO_TITLE=true
- 要固定窗口名称,则需在.zshrc中加
3. vim
3.1 vim 简介
- 官方给出的定义:
Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient.
- vim作为老牌的文本编辑器,因其高效、灵活、插件丰富、可扩展性强等特点在程序员中被广泛使用。
- Neovim是Vim的重构版本,但对于普通用户而言,二者的区别不大。
- vim的强大功能主要来源于其丰富的配置及插件库,谨以此文记录自己的vim/nvim配置。
3.2 vim基础配置
- vim的配置文件为用户主目录下的
~/.vimrc
文件,nvim的配置文件则为~/.config/nvim/init.vim
若没有则可以自行创建。 syntax on
开启语法高亮set number
设置行号set autoread
文件在外部被改变时自动重新载入set nobackup
覆盖文件时不保留备份set encoding=utf-8
设置vim内部字符编码set ruler
在右下角显示当前行号、列号及相对位置set backspace=2
使得删除键生效set hlsearch
高亮搜索结果set tabstop=4
缩进空格数au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
自动跳到上次打开的光标位置hi comment ctermfg=6
改变注释颜色为淡蓝色- 键位映射
let mapleader = ";"
设置前缀键nnoremap <C-a> <Home>
inoremap <C-a> <Home>
nnoremap <C-e> <End>
inoremap <C-e> <End>
nnoremap <leader>s :so ~/.vimrc<CR>
- 使光标一直处于屏幕中间
nnoremap j gjzz
nnoremap k gkzz
nnoremap <ESC> :noh<CR>zz
3.3 插件管理
- 丰富的插件是vim的灵魂,但同时繁杂的插件会带来许多烦恼,因此插件管理器是十分有必要的。
vim-plug
是一款简单易用的插件管理器,适用于vim和nvim。在官方项目下载plug.vim
文件,并将其放在autoload
文件夹下。- 对vim放置路径可为
~/.vim/autoload/
,对nvim可为~/.config/nvim/autoload/
- 在配置文件中管理插件:
call plug#begin('~/.vim/plugged') Plug 'path/of-plugin' ... call plug#end()
- 配置完成后,在命令模式下输入
:PlugInstall
即可自动安装所有插件。
3.4 推荐插件
- Vim-markdown
- 提供针对markdown的语法高亮、段落折叠、查看目录、断间跳转等功能。
- 在配置文件中加入
Plug 'godlygeek/tabular'
和Plug 'plasticboy/vim-markdown'
- 输入
:help vim-markdown
可查看其用法 - 若要高亮数学公式,则在配置文件中加入
let g:vim_markdown_math = 1
3.5 其他
- 若同时使用tmux,则C-A快捷键会冲突,需把tmux中C-A禁用。
- 解除tmux配置文件
~/.tmux.conf.local
340-345行的注释,将344,345行中的a改为b
- 解除tmux配置文件
- 若用nvim,可以将vim映射至nvim,每次用vim启动即可。
- 在用户配置文件
~/.bashrc
或~/.zshrc
中加入alias vim=nvim
- 在用户配置文件
4. 使用心得
到目前(2021.04)为止,已使用
oh my zsh + tmux
有大半年了,感觉良好😎。插件方面(自动补全永远💧神)目前感觉够用,没有其他特别的需求,大家有比较好的插件也可以分享一下👏。值得一提的是,如果突然在一台没这些配置的主机上工作,会出现强烈的不适感😵。tmux
最好的一点就是如果连接远程服务器的终端卡死或者意外断开连接,能够轻松地attach
并且之前的程序不会终止。我一般会把第一个窗口用来监测服务器的使用情况,其他的则是各个项目。