系统优化
本文介绍 Linux 系统常用的优化手段,包括命令历史记录的管理、vim 编辑器的配置调优等。通过合理设置环境变量和编辑器选项,可以显著提升日常运维操作效率。
命令历史优化
快捷操作:
!!:重复上一条命令!n:执行历史记录中第n条命令!string:执行以string开头的最新命令
参数优化:
# vim /etc/profile
# 记录执行时间与用户信息
export HISTTIMEFORMAT="%F %T [$(who -m | awk '{print \$NF}')] [$(whoami)] "
# 多终端实时同步
export PROMPT_COMMAND="history -a; history -c; history -r
export HISTSIZE=100000 # 历史文件最大行数
export HISTSIZE=100000 # 内存中保存的历史条数
# 忽略特定命令
export HISTIGNORE="ls:pwd:exit"
# 自定义历史文件路径
export HISTDIR="/var/log/.hist"
export HISTFILE="$HISTDIR/$(whoami)_history"
# 忽略连续重复命令
export HISTCONTROL=ignoredups:erasedups
# 记录完整上下文
export PROMPT_COMMAND='RETRN_VAL=$?; logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]*[ ]*//" ) [$RETRN_VAL]"' # [4](@ref)vim文本编辑器优化
常用快捷键分类
1. 移动与选择
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 跳转到行首/尾 | 0 /^ | 0 跳转到绝对行首,^ 跳过空格 |
| 跳转到文件首/尾 | gg /G | gg 文件开头,G 文件末尾 |
| 下一个单词首字母 | w | 跳过标点或单词分割 |
| 当前光标所在词首尾 | b /e | b 前一个词首,e 后一个词尾 |
| 屏幕滚动 | Ctrl+f/Ctrl+b | 向下/向上翻页 |
2. 编辑操作
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 复制/剪切/粘贴 | yy/dd/p | 复制整行,剪切整行,粘贴到下方 |
| 删除单词 | dw/cw | 删除当前词,删除到词尾并进入插入模式 |
| 交换字符 | xp | 交换光标处字符与下一个字符 |
| 合并行 | J | 合并当前行与下一行 |
3. 搜索与替换
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 全局替换 | :%s/old/new/g | 替换全文 |
| 确认替换 | :%s/old/new/gc | 每次替换前确认 |
| 查找下一个/上一个 | n/N | 跳转匹配结果 |
高级用法
1. 宏录制与重复
录制宏
qa " 开始录制宏到寄存器 a
操作序列(如删除某行并插入内容)
q " 停止录制
@a " 执行宏
100@a " 执行宏 100 次2. 分屏与标签页
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 水平分屏 | :split 或 Ctrl+w s | 同时查看多个文件 |
| 垂直分屏 | :vsplit 或 Ctrl+w v | 侧边并排显示文件 |
| 切换窗口 | Ctrl+w h/j/k/l | 方向键切换分屏 |
| 关闭当前分屏 | Ctrl+w c | 关闭当前窗口 |
3. 块操作与列编辑
列选择
Ctrl+v " 进入块选择模式
移动光标选择区域
I " 进入块插入模式(如添加注释符)
输入内容后按 Esc,所有选中行自动插入相同内容4. 与终端结合
内置终端:Vim 8.1+ 支持在窗口内运行终端:
:terminal " 打开终端
Ctrl+w + 方向键 " 切换回编辑窗口个性化配置示例
" 自定义快捷键
nnoremap <leader>w :w<CR> " 快速保存
nnoremap <leader>q :q<CR> " 快速退出
nnoremap <leader>s :split<CR> " 快速分屏
" 主题设置
colorscheme nord " 使用北极主题
set background=dark
" 自动补全配置
let g:ycm_auto_trigger = 1
let g:ycm_min_num_identifier_candidate_chars = 2编辑文件自动备份:
# 将此脚本保存到 ~/.vimrc 或单独的文件/etc/vim/vimrc 中并在 .vimrc 中 source
" 定义函数:在保存前创建带时间戳和用户的备份
function! BackupFileWithTimestamp()
" 获取当前文件的完整路径
let current_file = expand('%:p')
" 跳过没有文件名的情况(新建未保存文件)
if current_file == ''
return
endif
" 获取当前用户名(跨平台兼容)
let username = ''
if has('unix')
let username = $USER
elseif has('win32')
let username = $USERNAME
endif
" 如果获取不到用户名,使用'unknown'
if username == ''
let username = 'unknown'
endif
" 获取格式化的当前日期时间 (YYYYMMDD_HHMMSS)
let timestamp = strftime('%Y%m%d_%H%M%S')
" 创建备份文件名(格式:原文件.bak.用户名_时间戳)
let backup_file = current_file . '.bak.' . username . '_' . timestamp
" 执行备份命令(静默模式)
execute 'silent !cp "' . current_file . '" "' . backup_file . '"'
" 显示备份确认消息(右下角短暂显示)
echohl Directory
echomsg "[Backup] " . fnamemodify(backup_file, ':t')
echohl None
endfunction
" 设置自动命令组(避免重复定义)
augroup FileBackup
autocmd!
" 在写入文件前执行备份(* 表示所有文件类型)
autocmd BufWritePre * call BackupFileWithTimestamp()
augroup END最后更新于