跳至内容

系统优化

本文介绍 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 /Ggg 文件开头,G 文件末尾
下一个单词首字母w跳过标点或单词分割
当前光标所在词首尾b /eb 前一个词首,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. 分屏与标签页

操作快捷键说明
水平分屏:splitCtrl+w s同时查看多个文件
垂直分屏:vsplitCtrl+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
最后更新于