目录

开发机常用配置

目录

首先我们来谈一谈源码编译安装的好处,这边我们引用我一同在百度实习的朋友ywm的话:

安全啊。默认如果用 sudo 去安装,所有的东西都会默认写入系统目录下,也就是会不安全而且需要sudo,如果你没有管理员密码,或者你想要只安装在用户目录下,做安全隔离,那就得自己下载源码进行编译安装,他每次都这样,这样就不会影响到实验室整个服务器的安全了

zsh

一个极为强大的强化版bash,拥有后可以有更多的插件去增强功能

在外网机器下载源码

1
wget https://sourceforge.net/projects/zsh/files/zsh/5.9/zsh-5.9.tar.xz

传到内网机:

1
scp zsh-5.9.tar.xz dev:/tmp/

在内网机编译

1
2
3
4
5
tar xf zsh-5.9.tar.xz
cd zsh-5.9
./configure --prefix=/usr/local/zsh
make -j$(nproc)
sudo make install

安装后:

1
2
echo /usr/local/zsh/bin/zsh | sudo tee -a /etc/shells
chsh -s /usr/local/zsh/bin/zsh

zsh-autosuggest(自动灰色提示)

如果你想要那种:

输入几个字符 → 自动浮现灰色历史提示文本

那么用 zsh 的自带能力不够,但你可以:

  • 不下载
  • 直接把插件源码 copy 过去
  • 只需要一个文件

下载后你会发现:新开的 zsh 终端无法看到前一个终端执行过的命令历史

如何配置 zsh 历史持久化配置

这是 zsh 默认行为的坑zsh 不会自动把命令立即写入 ~/.zsh_history,而是只在退出时写入。

所以多个终端之间互相看不到对方的历史命令。

解决方法(标准 zsh 历史持久化配置)

编辑你的 ~/.zshrc

加入下面这段(这是 zsh 最正确 & 最通用的历史配置):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# --- Zsh History Settings ---
HISTSIZE=500000
SAVEHIST=500000
HISTFILE=~/.zsh_history

# 每条命令执行后立即写入历史文件(非常关键!)
setopt INC_APPEND_HISTORY

# 在多个 zsh 之间共享历史(你现在的问题就是缺这个)
setopt SHARE_HISTORY

# 避免重复命令
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_REDUCE_BLANKS

# 追加历史,而不是覆盖
setopt APPEND_HISTORY

# 高级共享策略(推荐)
setopt EXTENDED_HISTORY

保存后:

1
source ~/.zshrc
如何直接执行 zsh-autosuggestions 的提示命令

方式:按 →(右方向键)接受建议 + 回车

这是插件默认行为:

  1. 光标右键(→)→ 立刻把灰色建议补全到命令行
  2. 再按回车执行

这是最标准、最常用的方式。

fzf

当然上面的 zsh-autosuggest 提供的提示不支持模糊匹配,比如如果我们有多个同样前缀的命令时就很苦恼了,这时候就得使用我们更强大的插件 fzf 了。