linux vim命令

简介: vim(Vi IMproved)是vi编辑器的增强版,是一个功能强大的模式化文本编辑器,广泛应用于Linux/Unix系统。
快速编辑

高效的模式编辑和快捷键

编程支持

语法高亮和代码补全

高度可配置

丰富的插件和个性化配置

命令语法

vim [选项] [文件...]
vim [选项] - [命令]
vim [选项] -t [标签]
vim [选项] -q [错误文件]

vim模式

模式 进入方式 说明
普通模式 Esc 默认模式,用于导航和命令执行
插入模式 i/I/a/A/o/O 输入文本模式
命令模式 : 执行vim命令
可视模式 v/V/Ctrl+v 选择文本
替换模式 R 替换文本

启动选项

选项 说明
-c 命令 启动后执行vim命令
-o[N] 水平分割窗口打开文件
-O[N] 垂直分割窗口打开文件
-p[N] 标签页打开文件
-R-M 只读模式
+[行号] 启动后光标定位到指定行
+/搜索词 启动后搜索指定内容
-u vimrc 使用指定的vimrc配置文件
-n 不使用交换文件(恢复模式)

基本操作

1. 启动和退出

# 启动vim
vim 文件名

# 启动并跳转到第10行
vim +10 文件名

# 启动并搜索"hello"
vim +/hello 文件名

# 以只读模式打开
vim -R 文件名
vim -M 文件名  # 更强制的只读
操作 命令 说明
保存文件 :w 写入(保存)文件
保存并退出 :wqZZ 保存后退出
退出 :q 退出(无修改时)
强制退出 :q! 不保存强制退出
保存为其他文件名 :w 新文件名 另存为新文件

2. 进入插入模式

命令 说明
i 在光标前插入
I 在行首插入
a 在光标后插入
A 在行尾插入
o 在下一行插入新行
O 在上一行插入新行
s 删除当前字符并插入
S 删除当前行并插入

3. 光标移动

基本移动
h左移
j下移
k上移
l右移
0行首
^行首第一个非空白字符
$行尾
w下一个单词开头
b上一个单词开头
高级移动
gg文件开头
G文件末尾
5G跳转到第5行
Ctrl+f向下翻页
Ctrl+b向上翻页
%匹配括号
}下一段落
{上一段落
Ctrl+o跳转到上一个位置

4. 编辑操作

操作 命令 说明
删除字符 x 删除光标处字符
删除单词 dw 从光标处删除到单词末尾
删除行 dd 删除当前行
删除到行尾 Dd$ 删除从光标到行尾
复制(yank) yy 复制当前行
粘贴 p 在光标后粘贴
粘贴 P 在光标前粘贴
撤销 u 撤销上一次操作
重做 Ctrl+r 重做被撤销的操作
重复 . 重复上一次编辑操作

高级功能

1. 搜索和替换

# 在普通模式下
/搜索词        # 向下搜索
?搜索词        # 向上搜索
n             # 下一个匹配项
N             # 上一个匹配项

# 在命令模式下
:%s/旧文本/新文本/g          # 全局替换
:%s/旧文本/新文本/gc         # 全局替换,每次询问确认
:5,10s/旧文本/新文本/g       # 在5-10行替换
:s/旧文本/新文本/g           # 在当前行替换

2. 可视模式操作

命令 说明
v 进入字符可视模式
V 进入行可视模式
Ctrl+v 进入块可视模式
d 删除选中文本
y 复制选中文本
c 修改选中文本
> 向右缩进选中文本
< 向左缩进选中文本

3. 多文件编辑

# 启动时打开多个文件
vim file1.txt file2.txt file3.txt

# 在vim中操作多个文件
:args                 # 显示文件列表
:next (:n)            # 下一个文件
:prev (:N)            # 上一个文件
:first                # 第一个文件
:last                 # 最后一个文件
:argdelete 文件名     # 从参数列表中删除文件
:argadd 文件名        # 添加文件到参数列表

# 文件间复制粘贴
# 在文件1中复制,然后 :next 到文件2粘贴

4. 窗口分割

# 水平分割
:split (:sp)          # 水平分割当前窗口
:split 文件名         # 水平分割打开新文件

# 垂直分割
:vsplit (:vs)         # 垂直分割当前窗口
:vsplit 文件名        # 垂直分割打开新文件

# 窗口导航
Ctrl+w h              # 切换到左窗口
Ctrl+w j              # 切换到下窗口
Ctrl+w k              # 切换到上窗口
Ctrl+w l              # 切换到右窗口
Ctrl+w w              # 循环切换窗口

# 窗口调整
Ctrl+w +              # 增加窗口高度
Ctrl+w -              # 减少窗口高度
Ctrl+w >              # 增加窗口宽度
Ctrl+w <              # 减少窗口宽度
Ctrl+w =              # 等分窗口大小

# 关闭窗口
:q                    # 关闭当前窗口
:only (:on)           # 只保留当前窗口

5. 标签页

# 启动时使用标签页
vim -p file1 file2 file3

# 标签页命令
:tabnew              # 新建标签页
:tabedit 文件名      # 在新标签页打开文件
:tabclose            # 关闭当前标签页
:tabonly             # 只保留当前标签页
:tabnext (:tabn)     # 下一个标签页
:tabprev (:tabp)     # 上一个标签页
:tabfirst            # 第一个标签页
:tablast             # 最后一个标签页

# 快捷键
gt                   # 下一个标签页
gT                   # 上一个标签页
5gt                  # 切换到第5个标签页

6. 宏录制

# 录制宏
q[a-z]               # 开始录制到指定寄存器,如qa
...执行操作...       # 执行要录制的操作
q                    # 停止录制

# 播放宏
@[a-z]               # 播放指定寄存器的宏,如@a
@@                   # 播放最后一次使用的宏
5@a                  # 播放宏a 5次

# 示例:添加行号
# 1. 按qa开始录制到寄存器a
# 2. 按I输入"1. "然后按Esc
# 3. 按j到下一行
# 4. 按q停止录制
# 5. 按99@a播放99次

实用命令集

1. 文件操作命令

:e 文件名           # 打开文件
:e!                # 重新加载当前文件(放弃修改)
:e#               # 切换前一个文件
:r 文件名          # 插入文件内容到当前位置
:r !命令          # 插入命令输出到当前位置
:w !sudo tee %    # 用sudo权限保存文件(忘记sudo时)
:saveas 文件名     # 另存为新文件
:file 文件名       # 重命名当前文件

2. 文本格式化

gg=G              # 自动缩进整个文件
==                # 自动缩进当前行
:ce               # 居中当前行
:ri               # 右对齐当前行
:le               # 左对齐当前行
:set textwidth=80 # 设置行宽
gqip              # 格式化当前段落
:join             # 连接当前行和下一行
J                 # 同上(普通模式)

3. 编码和文件格式

:set fileencoding=utf-8  # 设置文件编码
:set fileformat=unix     # 设置换行符为UNIX格式(\n)
:set fileformat=dos      # 设置换行符为DOS格式(\r\n)
:set bomb                # 添加UTF-8 BOM
:set nobomb              # 移除UTF-8 BOM
:set ff?                 # 查看当前文件格式
:set fenc?               # 查看当前文件编码

vim配置

1. .vimrc配置文件示例

" ~/.vimrc
" 基本设置
set nocompatible        " 不与vi兼容
syntax on               " 语法高亮
filetype plugin indent on " 文件类型检测

" 外观设置
set number              " 显示行号
set relativenumber      " 显示相对行号
set cursorline          " 高亮当前行
set showmatch           " 显示匹配的括号
set ruler               " 显示光标位置

" 编辑设置
set tabstop=4           " Tab宽度为4空格
set shiftwidth=4        " 自动缩进宽度
set expandtab           " Tab转换为空格
set autoindent          " 自动缩进
set smartindent         " 智能缩进
set backspace=indent,eol,start  " 退格键行为

" 搜索设置
set ignorecase          " 搜索忽略大小写
set smartcase           " 智能大小写匹配
set incsearch           " 实时搜索
set hlsearch            " 高亮搜索结果

" 其他设置
set mouse=a             " 启用鼠标
set clipboard=unnamed   " 共享系统剪贴板
set laststatus=2        " 总是显示状态栏
set wildmenu            " 命令行自动补全

" 快捷键映射
nnoremap <space> :nohlsearch<CR>  " 空格键取消搜索高亮
inoremap jj <Esc>                  " jj快速退出插入模式

2. 常用配置命令

命令 说明
:set all 显示所有设置
:set 选项? 查看选项值
:set 选项 启用选项
:set no选项 禁用选项
:set 选项=值 设置选项值
:source ~/.vimrc 重新加载配置文件

实用技巧

1. 高效编辑技巧

# 快速注释多行
1. Ctrl+v 进入块可视模式
2. 选择要注释的行
3. 按I输入注释符号(如#)
4. 按Esc,所有选中行都会添加注释

# 删除重复行
:sort u              # 排序并去重
:g/^\(.*\)$\n\1$/d   # 删除连续重复行

# 递增数字
1. 在第一行输入起始数字
2. 光标放在数字上
3. Ctrl+a 递增,Ctrl+x 递减
4. 选择多行后按g Ctrl+a 自动递增

# 列编辑(块可视模式)
1. Ctrl+v 进入块可视模式
2. 选择多列
3. 按I插入文本(每行相同位置插入)
4. 或按c修改选中文本
5. 或按d删除选中文本

2. 插件管理器安装(vim-plug)

# 安装vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

# 在.vimrc中添加插件
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'          " 文件浏览器
Plug 'tpope/vim-surround'           " 环绕符号编辑
Plug 'vim-airline/vim-airline'      " 状态栏美化
Plug 'ycm-core/YouCompleteMe'       " 代码补全
Plug 'preservim/nerdcommenter'      " 快速注释
call plug#end()

# 安装插件
:PlugInstall
# 更新插件
:PlugUpdate
# 删除插件
:PlugClean

实际应用场景

场景1:日志分析

快速搜索、过滤和标记日志文件。

# 查看最后100行
vim +100 /var/log/syslog

# 搜索错误
/error

# 标记重要行
ma  # 标记为a
'a  # 跳转到标记a
场景2:代码开发

高效编写和调试代码。

# 语法检查
:make

# 跳转到定义
gd  # 局部定义
gD  # 全局定义

# 代码折叠
zc  # 折叠
zo  # 展开
场景3:系统配置

编辑配置文件。

# 批量注释配置
Ctrl+v  # 选择多行
I#      # 插入#
Esc     # 应用

# 快速跳转
/Listen  # 搜索配置项
:noh     # 取消高亮

vim学习路径

基础操作
移动导航
编辑命令
高级技巧
配置插件
  • 第1周:基础
  • 启动/保存/退出
  • 模式切换
  • 基本移动
  • 第2周:编辑
  • 删除/复制/粘贴
  • 搜索/替换
  • 撤销/重做
  • 第3周:高级
  • 多文件编辑
  • 窗口分割
  • 宏录制
学习建议:
  • 每天练习15分钟,坚持3周
  • 使用vimtutor命令学习教程(约30分钟)
  • 从简单配置文件开始练习
  • 逐步添加新的命令到日常使用
  • 配置适合自己的.vimrc文件

vim与emacs对比

特性 vim emacs
模式 模式化编辑(普通/插入/可视) 无模式(组合键)
学习曲线 较陡峭,但效率高 较平缓,功能全面
启动速度 非常快 较慢(尤其有配置时)
扩展性 VimScript、插件丰富 Elisp、功能更强大
资源占用 较少 较多

常见问题解答

" 临时显示
:set number

" 永久显示(添加到~/.vimrc)
set number

在粘贴前进入粘贴模式:

:set paste    " 进入粘贴模式
i             " 进入插入模式
Ctrl+Shift+v  " 粘贴
Esc           " 退出插入模式
:set nopaste  " 退出粘贴模式

或使用快捷键:set pastetoggle=<F2>

# 命令行查看
vim --version

# vim内查看
:version

# 查看特定特性是否支持
:echo has('python3')   " 返回1表示支持
:echo has('clipboard') " 检查剪贴板支持

相关命令和工具

view

只读模式的vim

vimtutor

vim交互式教程

vimdiff

文件比较工具

nvim

neovim(vim现代分支)