当前位置: 首页 > news >正文

Vim 高效使用指南

文章目录

    • 一、Vim 有哪几种模式?
    • 二、切换模式
    • 三、保存、退出
    • 四、光标移动(在普通模式中)
    • 五、编辑操作(删除 / 复制 / 粘贴)
      • 删除(也可以理解为剪切)
      • 复制与粘贴
      • 撤销与重做
    • 六、查找与替换(命令模式)
      • 查找
      • 替换
    • 七、其他常用命令
    • 八、翻屏与分屏
      • 8.1 翻屏操作(移动视野)
      • 8.2 分屏操作(多窗口编辑)
    • 九、vim的配置
      • 9.1 系统配置文件(全局)
      • 9.2 用户配置文件
      • 9.3 常用配置分类(写入 `~/.vimrc`)
      • 9.4 基础配置模板

一、Vim 有哪几种模式?

Vim 并不像普通编辑器那样一打开就能输入文字,它有三种模式

  1. 普通模式(Normal mode)
    默认进入就是这个模式。可以用来移动光标、删除、复制、粘贴。

  2. 插入模式(Insert mode)
    就像平常写字那样可以输入内容。

  3. 命令模式(Command mode)
    用来保存、退出、查找、替换等操作。

二、切换模式

在 Vim 中,模式之间切换是靠按键的:

操作说明
i进入插入模式(光标前插入)
a插入模式(光标后插入)
o在下一行插入新行并编辑
Esc回到普通模式
:从普通模式进入命令模式

示例:打开 Vim 后,按 i 就能开始打字;打完按 Esc 回到普通模式。

三、保存、退出

进入命令模式(先按 Esc,再按 :),然后输入以下命令:

命令作用
:w保存文件(write)
:q退出(quit)
:wq保存并退出
:q!不保存强制退出
ZZ另一个保存并退出的快捷方式(普通模式直接按 Shift+ZZ)

四、光标移动(在普通模式中)

基本方向移动:

  • h → 左
  • l → 右
  • j → 下
  • k → 上

进阶跳转:

按键功能
0移动到行首
$移动到行尾
gg跳到文件开头
G跳到文件结尾
:n跳到第 n 行
w跳到下一个单词开头
b跳到上一个单词开头

示例:想跳到第 50 行,可以输入 :50 回车。

五、编辑操作(删除 / 复制 / 粘贴)

这些都在普通模式下使用:

删除(也可以理解为剪切)

命令功能
x删除一个字符
dd删除当前整行
ndd删除接下来的 n 行
D删除从光标到行尾

复制与粘贴

命令功能
yy复制当前行
nyy复制接下来的 n 行
p粘贴到光标后
P粘贴到光标前

撤销与重做

命令功能
u撤销上一步
Ctrl + r重做

示例:删除 3 行可用 3dd,复制 2 行可用 2yy

六、查找与替换(命令模式)

查找

操作说明
/关键字向下查找
?关键字向上查找
n找下一个匹配项
N找上一个匹配项

示例:想找 “hello”,按 /hello 然后回车。

替换

替换命令在命令模式下(按 : 进入):

命令说明
:s/旧/新/当前行替换第一个匹配
:s/旧/新/g当前行全部替换
:%s/旧/新/g全文替换所有匹配
:%s/旧/新/gc全文替换并每次都确认

示例:把文件中所有 “cat” 改成 “dog”,可用 :%s/cat/dog/g

七、其他常用命令

功能命令
显示行号:set number
取消行号:set nonumber
关闭高亮搜索:nohlsearch

八、翻屏与分屏

8.1 翻屏操作(移动视野)

快捷键说明
Ctrl + f向下翻一整页
Ctrl + b向上翻一整页
Ctrl + d向下翻半页
Ctrl + u向上翻半页

8.2 分屏操作(多窗口编辑)

1. 创建分屏

命令说明
:sp 文件名水平分屏打开文件
:vsp 文件名垂直分屏打开文件

2. 窗口切换(Ctrl + w 是组合键前缀)

快捷键说明
Ctrl + w + h移动到左边窗口
Ctrl + w + l移动到右边窗口
Ctrl + w + j移动到下方窗口
Ctrl + w + k移动到上方窗口
Ctrl + w + w在窗口间循环切换

3. 关闭窗口

命令说明
:q关闭当前分屏
:only关闭除当前外的所有分屏

九、vim的配置

9.1 系统配置文件(全局)

  • 文件位置/etc/vim/vimrc
  • 作用范围:所有用户启动 Vim 时都会生效
  • 适合场景:管理员为全系统设置统一行为

9.2 用户配置文件

  • 文件位置~/.vimrc
  • 作用范围:仅当前用户
  • 推荐理由:私有、灵活、便于个性化设置

9.3 常用配置分类(写入 ~/.vimrc

(1)基本显示与操作体验

set number             " 显示行号
set relativenumber     " 显示相对行号(当前行为0,其它行为相对值)
set showcmd            " 显示正在输入的命令
set cursorline         " 高亮当前行
set ruler              " 显示光标所在位置(行列号)
set title              " 显示终端标题
set wildmenu           " 命令补全菜单

(2)缩进与制表符设置(建议统一为 4 空格)

set tabstop=4          " 设置一个 Tab 等于 4 个空格
set shiftwidth=4       " 自动缩进时使用 4 个空格
set expandtab          " 输入 Tab 时,实际插入空格
set smartindent        " 启用智能自动缩进

(3)搜索相关设置

set ignorecase         " 搜索时忽略大小写
set smartcase          " 搜索词包含大写时启用大小写敏感
set hlsearch           " 高亮匹配结果
set incsearch          " 边输边找(增量搜索)
set wrapscan           " 搜索到末尾后从头开始(循环搜索)

(4)编码与语言设置(防乱码)

set encoding=utf-8             " 使用 UTF-8 编码
set fileencodings=utf-8,gbk    " 文件尝试用哪些编码打开
set fileformats=unix,dos       " 识别换行符格式(LF / CRLF)

(5)文件与备份设置(防止产生烦人的临时文件)

set nobackup           " 不生成备份文件 file~
set nowritebackup      " 写文件时不生成临时文件
set noswapfile         " 不生成交换文件 .swp

(6)鼠标与剪贴板支持

set mouse=a            " 启用鼠标支持(a=所有模式都可用)
set clipboard=unnamedplus " 启用系统剪贴板(复制粘贴可与系统共享)

clipboard=unnamedplus 需 Vim 编译时支持该功能,可用 vim --version 查看是否带 +clipboard

(7)状态栏美化

set laststatus=2       " 始终显示状态栏
set showmode           " 显示当前 Vim 模式(插入/普通)

(8)语法高亮与配色方案

syntax on              " 启用语法高亮
set background=dark    " 适合暗色终端的配色(可改为 light)
colorscheme desert     " 配色方案(可选:default, elflord, murphy, peachpuff, etc)

9.4 基础配置模板

  1. 创建配置文件
vim ~/.vimrc              # 编辑用户配置文件
  1. 可以直接将以下内容作为自己的 ~/.vimrc
" (1) 基本显示与操作体验
" --------------------------------------------
set number             " 显示行号
" set relativenumber     " 显示相对行号(当前行为0,其它行为相对值)
set showcmd            " 显示正在输入的命令
" set cursorline         " 高亮当前行
set ruler              " 显示光标所在位置(行列号)
set title              " 显示终端标题
set wildmenu           " 命令补全菜单" (2) 缩进与制表符设置
" --------------------------------------------
set tabstop=4          " 设置一个 Tab 等于 4 个空格
set shiftwidth=4       " 自动缩进时使用 4 个空格
set expandtab          " 输入 Tab 时,实际插入空格
set smartindent        " 启用智能自动缩进
set autoindent         " 继承上一行缩进" (3) 搜索相关设置
" --------------------------------------------
set ignorecase         " 搜索时忽略大小写
set smartcase          " 搜索词包含大写时启用大小写敏感
set hlsearch           " 高亮匹配结果
set incsearch          " 边输边找(增量搜索)
set wrapscan           " 搜索到末尾后从头开始(循环搜索)" (4) 编码与语言设置
" --------------------------------------------
set encoding=utf-8             " 使用 UTF-8 编码
set fileencodings=utf-8,gbk    " 文件尝试用哪些编码打开
set fileformats=unix,dos       " 识别换行符格式(LF / CRLF)
set spelllang=en,cjk           " 拼写检查语言(英文+中日韩)" (5) 文件与备份设置
" --------------------------------------------
set nobackup           " 不生成备份文件 file~
set nowritebackup      " 写文件时不生成临时文件
set noswapfile         " 不生成交换文件 .swp
set undofile           " 启用持久撤销
set undodir=~/.vim/undo " 撤销文件存储目录" (6) 鼠标与剪贴板支持
" --------------------------------------------
set mouse=a            " 启用鼠标支持(a=所有模式都可用)
set clipboard=unnamedplus " 启用系统剪贴板(复制粘贴可与系统共享)" (7) 状态栏美化
" --------------------------------------------
set laststatus=2       " 始终显示状态栏
set showmode           " 显示当前 Vim 模式(插入/普通)
set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P " 自定义状态栏内容" (8) 语法高亮与配色方案
" --------------------------------------------
syntax on              " 启用语法高亮
set background=dark    " 适合暗色终端的配色
colorscheme desert     " 配色方案
set termguicolors      " 启用真彩色支持(如果终端支持)" ============================================
" 实用快捷键映射
" ============================================
let mapleader = ","    " 设置前缀键为逗号" 快速保存与退出
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>x :x<CR>" 清除搜索高亮
nnoremap <silent> <leader>h :nohlsearch<CR>" 窗口导航
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l" 标签页管理
nnoremap <leader>tn :tabnew<CR>
nnoremap <leader>tc :tabclose<CR>
nnoremap <leader>tl :tabnext<CR>
nnoremap <leader>th :tabprev<CR>" ============================================
" 自动命令
" ============================================
" 创建撤销文件目录
if !isdirectory($HOME."/.vim/undo")silent! execute '!mkdir -p ~/.vim/undo'
endif" 文件类型特定设置
autocmd FileType python setlocal shiftwidth=4 softtabstop=4 expandtab
autocmd FileType javascript,typescript,html,css setlocal shiftwidth=2 softtabstop=2 expandtab
autocmd FileType markdown setlocal spell wrap linebreak

重启 Vim 或保存 .vimrc 后在命令模式下通过以下命令让新配置立即生效:

:source ~/.vimrc
http://www.lryc.cn/news/609858.html

相关文章:

  • Flutter 事件总线 Event Bus
  • HarmonyOS 多屏适配最佳实践:基于 ArkUI 的响应式 UI 方案
  • 计算机网络:理解路由的下一跳
  • 第四十六章:AI的“瞬时记忆”与“高效聚焦”:llama.cpp的KV Cache与Attention机制
  • C++ 中 initializer_list 类型推导
  • 2.1 vue组件
  • 【AMD】编译llama.cpp实践版
  • 【异常案例分析】使用空指针调用函数(非虚函数)时,没有崩溃在函数调用处,而是崩在被调用函数内部
  • 关于大数据的基础知识(三)——数据安全与合规
  • C++模板知识点3『std::initializer_list初始化时逗号表达式的执行顺序』
  • 1.kotlin数组、集合常用方法
  • 【iOS】渲染原理离屏渲染
  • 网络安全 | 从 0 到 1 了解 WAF:Web 应用防火墙到底是什么?
  • 国内首个开源SCA社区——OpenSCA开源社区
  • C++临时对象:来源与性能优化之道
  • 前后端流式交互的几种方式
  • Petalinux快捷下载
  • 【笔记】ROS1|2 Turtlebot3汉堡Burger连接和远程控制【旧文转载】
  • 【SpringAI】SpringAI的介绍与简单使用
  • 算力板卡:驱动智能时代的核心引擎
  • File、IO流体系
  • 防御保护综合练习
  • 关键领域软件研发如何构建智能知识管理体系?从文档自动化到安全协同的全面升级
  • 详解Python标准库之通用操作系统服务
  • ZeroNews内网穿透安全策略深度解析:构建企业级安全连接体系
  • 【2025】想曰(yue)免费开源的文本加密软件,保障隐私安全
  • 福彩双色球第2025089期篮球号码分析
  • 竞品分析爬虫实现方案
  • 人类学家与建筑师:解析 UX 研究与项目管理的需求分析差异​
  • Opencv[一]