vim常用操作

vim是linux下功能非常强大的文本编辑器,因为是命令操作,所以学习来比较累,下面总结一下常用的几点操作。

常用模式:
  • 普通模式(Normal mode)
  • 插入模式(Insert mode)
  • 命令行模式(Command line mode)

1.使用方法

常用模式切换
  • 启动后进入普通模式,按i(插入)或a(附加)键进入插入模式
  • 插入模式 / 命令行模式按Esc / Ctrl+[ 可进入普通模式
  • 普通模式按 : 进入命令行模式,输入wq回车后保存并退出vim

在终端下直接输入:vim
test.txt,即可打开test.txt文件进行编辑,若不存在test.txt文件,则表示即将新建此文件。

打开文件
  • $vim test.txt 打开已存在的文件,若不存在则新建
  • 进入命令行模式后输入 :e 文件路径打开相应文件

 

游标移动
  • 在普通模式使用方向键或者h,j,k,l 键可以移动光标
    • h —— 左
    • l —— 右
    • j —— 下
    • k —— 上
    • w 移动到下一个单词
    • b 移动到上一个单词

2.新建或编辑文件

插入模式
  • 在普通行中使用下面的键进入插入模式
  • i:在当前光标出进行编辑
  • I:在行首插入
  • A:在行末插入
  • a:在光标后插入编辑
  • o:在当前行后插入一个新行
  • O:在当前行前插入一个新行
  • cw:替换从光标所在位置后到一个单词结尾的字符

vim new.txt->进入Normal模式 ->
按i键进入编辑模式->方向键移动光标->进行增删改->ESC退出编辑模式(就是进入Normal模式)->
输入:wq ->
按Enter键保存退出(输入:进入命令模式,再输入w表示保存再输入q表示退出,按Enter触发命令生效)

命令行模式下保存文档
  • 从普通模式输入 : 进入命令行模式,输入w回车,保存文档。输入:w
    文件名可以将文档另存为其他文件名或存到其他路径下

 

命令行模式下退出vim
  • 从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑
  • :q! :强制退出,不保存
  • :q :退出
  • :wq!:强制保存并退出
  • :w <文件路径>:另存为
  • :saveas 文件路径:另存为
  • :x:保存并退出
  • :wq:保存并退出

3.显示行号、隐藏行号

普通模式下退出vim
  • Shift+zz

vim test.txt->进入Normal模式 -> 输入:set nu ->按Enter键显示行号
-> 输入:set nonu ->按Enter键隐藏行号

普通模式下删除vim文本信息
  • x 删除游标所在的字符
  • X 删除游标所在前一个字符
  • Delete 同x
  • dd 删除整行
  • dw 删除一个单词(不适用中文)
  • d$或D 删除至行尾
  • d^ 删除至行首
  • dG 删除到文档结尾处
  • d1G 删至文档首部
  • 2dd 一次删除两行

 

重复命令
  • 普通模式下输入 x , 删除第一个字符,输入.(小数点)会再次删除一个字符
  • 执行指定次数相同命令 N<command>

10x:删除10个连续字符
3dd:删除3行文本
5dw:删除5个单词

4.删除

游标的快速跳转
  • 行间跳转(进入命令行模式,输入:set nu显示行号)
  • nG 游标移动到第n行
  • gg 游标移动到第一行
  • G 游标移动到最后一行
  • Ctrl + o 快速回到上一次(跳转前)光标所在位置

vim test.txt ->进入Normal模式 ->
方向键移动光标->按x删除单个字符->按dd删除整行->
按2dd删除两行(从光标位置起两行,包括光标所在行)

行内跳转
  • w 到下一个单词的开头
  • e 到下一个单词的结尾
  • b 到前一个单词的开头
  • ge 到前一个单词的结尾
  • 0或^ 到行头
  • $ 到行尾
  • f<字母> 向后搜索<字母>并跳转到第一个匹配的位置
  • F<字母> 先前搜素<字母>并跳转到第一个匹配的位置
  • ~ 将游标所在字母变成大写或小写

 

复制
  • yy 复制游标所在的整行(3yy表示复制3行)
  • y^或y0 复制至行首,不包含光标所在字符
  • y$ 复制至行尾,含光标所在字符
  • yw 复制一个单词,y2w复制两个单词
  • yG 复制至文本末
  • y1G 复制至文本开头

5.复制粘贴

粘贴
  • p(小写) 粘贴至光标后(下)
  • P(大写) 粘贴至光标前(上)
  • dd 剪切,dd后使用p来粘贴,实现交换上下行

vim test.txt ->进入Normal模式 ->
方向键移动光标->按yy复制整行->按p粘贴到光标的下一行(按5yy就是复制5行)

替换及撤销
  • r + <待替换字母> 将游标所在字母替换为指定字母
  • R 连续替换,直到按下Esc
  • cc 替换整行,即删除游标所在行,并进入插入模式
  • cw 替换一个单词,即删除一个单词,并进入插入模式
  • C(大写) 替换游标以后至行末
  • ~ 反转游标所在字母大小写
  • u{n} 撤销一次或n次操作
  • U 撤销当前行的所有修改
  • Ctrl + r redo,即撤销undo的操作

 

快速缩进
  • 普通模式下输入>>,整行将向右缩进
  • 普通模式下输入<<,整行向左回退
  • 输入:shiftwidth值进行设置可以控制缩进和回退的字符数
    • :set shiftwidth? 获取目前设定值
    • :set shiftwidth=10 设置字符数

6.撤销、重做

调整文本位置
  • :ce 本行内容居中
  • :ri 本行文本靠右
  • :le 本行内容靠左

进入Normal模式 -> 按u 撤销上一次操作

快速查找
  • /icmp 查找字符串icmp
  • n 查找下一个icmp
  • ?tcp 向上查找字符串tcp
  • N 查找上一个出现的tcp

进入Normal模式 -> 按Ctrl+r 重做撤销的动作

高级查找
  • * 寻找游标所在处单词(向前/上找)
  • # 寻找游标所在处单词(向后/下找)
  • g* 部分符合该单词即可(向前/上找)
  • g# 部分符合该单词即可(向后/下找)

 

7.列编辑(批量添加注释很有用哦😄)

批量添加注释

Normal模式->ctrl+v进入列编辑模式->方向键的上下箭头选中第一列字符->按I(大写的i)在首行输入#->按ESC退出到Normal模式即可生效->输入:wq->按Enter键保存即可

批量删除注释

Normal模式->ctrl+v进入列编辑模式->方向键的上下箭头选中内容->d删除(同时进入Normal模式)->输入:wq->按Enter键保存即可

 

8:放弃修改

Normal模式->输入:q!->按Enter提交命令(放弃修改并退出)

 

9.移动光标

Normal模式下:可以用方向键,或者(h左、j下、k上、l右)

编辑模式下:只能用方向键