Skip to content

Vim 基本使用 📝

简介

Vim 是一个高度可配置的文本编辑器,旨在高效地创建和更改任何类型的文本。它是 Vi 编辑器的改进版本,包含了许多增强功能。

  • 模式编辑 ⌨️
  • 强大的命令 ⚡
  • 高效的移动 💨
  • 丰富的插件 🔌
  • 语法高亮 🎨

快速入门

安装

bash
sudo apt install vim
bash
sudo yum install vim
bash
brew install vim
bash
# 访问官网下载安装包
https://www.vim.org/download.php

基本操作

命令速查

模式切换说明按键
普通模式默认模式,用于导航和命令Esc
插入模式用于输入文本i, a, o
可视模式用于选择文本v, V, Ctrl+v
命令模式用于执行命令:

模式详解

普通模式

光标移动
基本移动:
h - 左移
j - 下移
k - 上移
l - 右移

单词移动:
w - 下一个单词开头
b - 上一个单词开头
e - 当前单词末尾
W/B/E - 以空格分隔的单词

行内移动:
0 - 行首
$ - 行尾
^ - 行首第一个非空字符
g_ - 行尾最后一个非空字符

文件移动:
gg - 文件开头
G - 文件末尾
:n - 跳转到第n行
编辑操作
删除:
x - 删除当前字符
dd - 删除当前行
dw - 删除单词
D - 删除到行尾

复制粘贴:
yy - 复制当前行
yw - 复制单词
p - 在光标后粘贴
P - 在光标前粘贴

撤销重做:
u - 撤销
Ctrl+r - 重做

插入模式

进入插入模式的方式

  • i - 在光标前插入
  • I - 在行首插入
  • a - 在光标后插入
  • A - 在行尾插入
  • o - 在下方新行插入
  • O - 在上方新行插入

可视模式

选择操作
进入可视模式:
v - 字符选择
V - 行选择
Ctrl+v - 块选择

选择范围:
aw - 选择单词
ab - 选择括号内容
aB - 选择大括号内容
at - 选择标签内容

操作:
d - 删除选中
y - 复制选中
> - 增加缩进
< - 减少缩进

命令模式

常用命令
文件操作:
:w - 保存
:q - 退出
:wq 或 :x - 保存并退出
:q! - 强制退出不保存
:e <文件名> - 打开文件
:saveas <文件名> - 另存为

搜索替换:
/pattern - 向下搜索
?pattern - 向上搜索
:s/old/new - 替换当前行第一个匹配
:s/old/new/g - 替换当前行所有匹配
:%s/old/new/g - 替换整个文件

高级特性

多窗口操作

vim
:sp[lit] - 水平分屏
:vs[plit] - 垂直分屏
Ctrl+w s - 水平分屏
Ctrl+w v - 垂直分屏
vim
Ctrl+w h - 切换到左边窗口
Ctrl+w j - 切换到下边窗口
Ctrl+w k - 切换到上边窗口
Ctrl+w l - 切换到右边窗口
Ctrl+w w - 循环切换窗口
vim
Ctrl+w = - 使所有窗口等宽等高
Ctrl+w _ - 最大化当前窗口高度
Ctrl+w | - 最大化当前窗口宽度
n Ctrl+w _ - 将当前窗口高度设为 n 行

标记与跳转

标记操作

  • m{a-zA-Z} - 设置标记
  • '{a-zA-Z} - 跳转到标记所在行
  • `{a-zA-Z} - 跳转到标记的确切位置
  • :marks - 查看所有标记

寄存器使用

寄存器类型
命名寄存器:"a-"z
无名寄存器:""
系统剪贴板:"+
小删除寄存器:"-
只读寄存器:":, "., "%
搜索模式寄存器:"/, "?

使用方法:

  • "ay - 复制到寄存器 a
  • "ap - 从寄存器 a 粘贴
  • :reg - 查看所有寄存器内容

配置与定制

基本配置

.vimrc 示例
vim
" 基本设置
set number          " 显示行号
set relativenumber  " 显示相对行号
set cursorline     " 高亮当前行
set ruler          " 显示光标位置
set showcmd        " 显示命令
set showmode       " 显示模式
set wrap           " 自动换行

" 搜索设置
set hlsearch       " 高亮搜索结果
set incsearch      " 增量搜索
set ignorecase     " 搜索忽略大小写
set smartcase      " 智能大小写

" 缩进设置
set autoindent     " 自动缩进
set smartindent    " 智能缩进
set expandtab      " 使用空格代替制表符
set tabstop=4      " 制表符宽度
set shiftwidth=4   " 缩进宽度

快捷键映射

常用映射

vim
" 使用空格作为 leader 键
let mapleader = " "

" 快速保存和退出
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<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><CR> :nohlsearch<CR>

插件推荐

必备插件

常见问题

模式切换

问题:按 Esc 后无法退出插入模式 解决:

  1. 检查是否真的按到了 Esc
  2. 尝试按两次 Esc
  3. 使用 Ctrl+[ 作为替代
复制粘贴

问题:系统剪贴板复制粘贴不生效 解决:

  1. 确认 Vim 是否支持系统剪贴板::echo has('clipboard')
  2. 使用 "+y 复制到系统剪贴板
  3. 使用 "+p 从系统剪贴板粘贴

学习资源

学习建议

  1. 循序渐进,先掌握基本操作
  2. 使用 vimtutor 进行交互式学习
  3. 坚持使用,养成肌肉记忆
  4. 定期学习新的技巧和命令
  5. 根据需求逐步配置和添加插件