欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vim学习笔记

程序员文章站 2022-05-26 14:41:32
...

学习实验楼Vim编辑器课程的笔记。

1. 介绍

1.1 vim模式

6种基本模式:

  • 普通模式 Normal mode
  • 插入模式 Insert mode
  • 可视模式 Visual mode
  • 选择模式 Select mode
  • 命令行模式 Command line mode
  • Ex模式 Ex mode

1.2 模式切换

  • 普通模式:vim启动即进入,按i进入插入模式,按:进入命令行模式
  • 插入模式:按Esc进入普通模式
  • 命令行模式:输入wq回车后保存并退出

2. 常用命令

2.1 基本操作

2.1.1 打开

# 用打开已有的文件或新建文件
vim <文件名>

2.1.2 普通模式进入插入模式:

命令 说明
i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符

2.1.3 退出vim

命令行模式退出:

命令 说明
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出
:w <文件路径> 另存为
:saveas 文件路径 另存为
:x 保存并退出
:wq 保存并退出

普通模式退出:输入shift+zz即保存并退出

2.2 普通模式下的一些操作

2.2.1 删除文本

命令 说明
x 删除游标所在的字符
X 删除游标所在前一个字符
Delete x
dd 删除整行
dw 删除一个单词(不适用中文)
d$D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删除文档收不

N<command>,表示执行指定次数相同的命令,如2dd表示一次删除2行,10x删除10个连续字符

2.2.2 游标快速跳转

2.2.2.1 行间跳转
命令 说明
nG(n+shift+g) 游标移动第n行
gg 游标移动到第一行
G(shift+g) 移动到最后一行

tips:ctrl+o可快速回到跳转前的光标位置

2.2.2.2 行内跳转
命令 说明
w 到下一个单词的开头
e 到当前单词的结尾
b 到前一个单词的开头
ge 到前一个单词的结尾
0^ 到行头
$ 到行尾
f<> 向后搜索<字母>并跳转到第一个匹配的位置(常用)
F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用)
T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用)

2.2.3 复制粘贴剪切

2.2.3.1 复制及粘贴
命令 说明
yy 复制整行
y^y0 复制至行首,不含光标所处字符
y$ 复制至行尾,含光标所在处字符
yw 复制一个单词
ynw 复制n个单词,如y2w复制两个单词
yG 复制至文本末
y1G 复制至文本开头
p 粘贴至光标后(下)
P 粘贴至光标前(上)

2.2.3.2 剪切及粘贴

dd命令是删除命令,也是剪切命令

2.2.4 替换和撤销

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

2.2.5 快速缩进

命令 说明
>> 整行向右缩进
<< 整行向左缩进

缩进的字符数由shiftwidth命令设置,通过在命令模式下查询目前设置:set shiftwidth?,可通过:set shiftwidth=n进行重新设置

2.2.6 查找

2.2.6.1 快速查找
命令 说明
/<查找的字符串>Enter 向下查找该字符串
?<查找的字符串>Enter 向上查找该字符串
n 查找后,输入该键,继续查找
N 查找后,输入该键,反向继续查找
2.2.6.2 高级查找
命令 说明
\* 向后寻找游标所在处的单词
\# 向前寻找游标所在处的单词
g\* \*,但部分符合该单词即可
g\# \#,但部分符合该单词即可

2.3 命令模式常用命令

命令 说明
:set nu 显示行号
:set shiftwidth 设置缩进字符数
:ce 文本居中
:ri 文本靠右
:le 文本靠左

2.4 高级功能

2.4.1 多文件编辑

# 同时创建两个文件
vim 1.txt 2.txt

命令行模式命令:

命令 说明
:n 切换到下一个文件
:n! 强制切换到下一个文件,当前文件的输入没有保存
:N 切换到前一个文件
:N! 强制切换到前一个文件,当前文件的输入没有保存
:e <文件名> 打开新文件,后面加!为强制打开,放弃当前正在编辑的文件
:e# 回到一个文件
:ls 列出以前编辑过的文档
:b <文件名> 直接进入该文件编辑
:bd <文件名> 删除该文件
:f 显示正在编辑的文件名
:f <新文件名> 当前正在编辑的文件重命名
:ewcover <文件名> 因断电等原因造成没有保存的文档,可以采用恢复方法恢复

2.4.2 可视模式

普通模式下:

  • 输入v进入字符选择模式,光标走过的地方都会被选取,再按v取消选取。

  • 输入shift+v进入行选择模式,按V整行选取,上下移动光标可选取更多的行,再按shift+v取消选取。

  • 输入ctrl+v进入区域选择模式,可进行矩形区域选择,再按一次ctrl+v取消选取。

可视模式下:

  • 输入d删除选取区域内容
  • 输入y复制选取区域内容

2.4.3 视窗操作

模式 命令 说明
命令行 :sp <文件名> 打开新的水平分屏视窗来编辑该文件
命令行 :vsp <文件名> 打开新的垂直分屏视频来编辑该文件
命令行 :q! 退出多视窗编辑
普通模式 ctrl+w s 将当前窗口分割成两个水平窗口
普通模式 ctrl+w v 将当前窗口分割成两个垂直窗口
普通模式 ctrl+w q :q
普通模式 ctrl+w o 打开一个视窗并且隐藏之前所有的视窗
普通模式 ctrl+w j 移至下面视窗
普通模式 ctrl+w k 移至左边视窗
普通模式 ctrl+w l 移至右边视窗
普通模式 ctrl+w J 将当前视窗移至下面
普通模式 ctrl+w K 将当前视窗移至上面
普通模式 ctrl+w H 将当前视窗移至左边
普通模式 ctrl+w L 将当前视窗移至右边
普通模式 ctrl+w - 减少视窗的高度
普通模式 ctrl+w + 增加视窗的高度

2.4.4 文档加密

vim -x <文件名>

2.4.5 在vim执行外部命令

在命令行模式中输入!可以执行外部的shell命令:

  • :ls用户显示当前目录的内容

  • :!rm FILENAME用户删除名为FILENAME的文件

  • :w FILENAME可将当前VIM中正在编辑的文件另存为FILENAME文件

2.4.6 帮助系统

  • 普通模式下按F1打开vim自己预设的帮助文档

  • 命令行模式下输入:h shiftwidth打开名为shiftwidth的帮助文件

  • 命令行模式下输入:ver显示版本及参数

2.4.7 系统设定

2.4.7.1 修改配置

在命令行模式进行的设定不会保存,如要永久保存配置,需要修改配置文件,vim配置文件地址:~/.vimrc

2.4.7.2 获取目前设定
命令 说明
:set 显示所有修改过的配置
:set all 显示所有的设定值
:set option? 显示option的设定值
:set nooption 取消当前设定值
2.4.7.3 set功能
命令 说明
:set autoindent(ai) 设置自动缩进
:set autowirte(aw) 设置自动存档,默认未打开
:set background==dark:set background==light 设置背景风格
:set backup(bk) 设置自动备份,默认未打开
:set cindent(cin) 设置C语言风格缩进
相关标签: vim