vim编辑器常用的四种模式模式
- 普通模式(所有的命令,如移动,插入,删除等都在此命令下进行)默认进入就是普通模式 其他模式中使用esc进入
- 插入模式(对文本进行编辑) 键入i进入
- 命令行模式(执行vim的一些命令,如字符串替换等) 键入:进入
- 可视模式 键入v, V, +v都可进入
常用命令行模式操作
退出和保存
- :w 保存 save
- :w! 强制保存
- :q 没有进行任何修改,退出 quit
- :q! 修改了,不保存,强制退出
- :wq 保存并退出
- :wq! 强制保存并退出
- :x 保存退出
查找
/string(字符串)
n从当前光标处向下查询,N从当前光标处向上查询
?string(字符串)[和/操作相反]
n从当前光标处向上查询,N从当前光标处向下查询
替换
格式:格式 : 范围(其中%所有内容) s分隔符 旧的内容 分隔符 新的内容 (分隔符可以自定义)默认是每一行的第一个符合要求的词 (/g全部)(/i不区分大小写)
例:
1,3 s/bin/测试 (将1到三行的第一个bin替换为测试)
1,3 s/bin/测试/g (将1到三行的所有bin替换为测试)
% s/bin/测试/g (将所有的bin替换为测试)
% s/bin/测试/gi (//i表示不区分大小写将所有Bin/bin替换为测试)
普通模式常用命令
退出
ZZ 直接退出
插入
r 替换当前字符
- i 在当前字符之前进行插入
- a 在当前字符之后进行插入
- o 在当前行下一行进行插入
- O 在当前行上一行进行插入
- I 在行首进行插入
- A 在行尾进行插入
删除(剪切vim中没有专门的剪切操作,剪切就是删除)
- x 删除当前字符之后的文字,如果当前字符之后没有内容,就删除当前字符之前的
- X 删除当前字符之前的文字
- dd 删除当前行
- D 从光标处删除到行尾
- ndd 从当前行开始删除n行
- dth 从当前字符开始删除到本行的h前一个字符
- dfh 从当前字符开始删除到本行的h字符
撤销和恢复撤销
- u 撤销当前操作(相当于windows里面的ctrl+z)
- ctrl + r 恢复撤销的操作(相当于Windows里面的ctrl+y)
移动光标
上下左右移动
和其他软件不同,vim使用hjkl四个字母移动光标,当然现在的版本也可以使用方向键移动光标。不需要记这么清楚,用的时候多试几次就可以了
- k 上
- j 下
- h 左
- l 右
词之间跳转
- w 跳转到下一个词的词头
- b 跳转到上一个词的词头
- e 跳转到本词词尾或者下词词尾
- *\# 匹配当前光标所在的单词,移动光标移动到下一个/上一个匹配的单词(*移动到下一个,#移动到上一个)
行之间跳转
- 0(数字),和home 光标定位到行首
- ^ 移动到第一个字符
- f/Fh 移动到本行的h字符(f往前移动,F往后移动)
- t/Th 移动到本行的h字符前一个字符(t往前移动,T往后移动)
- $和end 光标定位到行尾
- gg 光标定位到首行行首
- G/L 光标定位到尾行行首
- ngg/nG/:n 跳转到第n行
- b/B 光标定位到前一个单词
- n 光标定位到当行第n个字符
复制
- y 对当前光标高亮字符进行复制操作
- yy 对当前行进行复制操作
- nyy 从当前行起复制n行
粘贴
- p(小写) 在当前字符之后粘贴(光标后)
- P(大写) 在当前字符之前粘贴(光标前)
vim 同时打开多个文件
使用ctrl+ww可以在不同文件之间切换光标
全部退出qa
vim -o 文件一 文件2 …(上下打开文件)
vim -O 文件一 文件2 …(左右打开文件)
vim分屏
- split 上下分屏和-o效果差不多
- vsplit 左右分屏和-O效果差不多(可以直接输入vs)
- hide 将分屏的隐藏
比较文件
- 可以使用上面的同时打开多个文件
- diff 文件1 文件2 … 直接输出2个文件中不同的内容
- vimdiff 文件1 文件2 … 直接在vim中高亮同时显示不同内存
一些其他操作
- J 将下一行和当前行合并为一行
##可视模式
- ctrl+v 横行
- shift+v 竖行
- vi字符 选择两个字符之间的字符(不包括字符)
例: vi" 选择2个引号之中的内容
vi) 选择2个匹配)之中的内容 - va字符 操作同上(包括字符)
- = 选中后输入=,使用上行的格式
进行多行插入
先ctrl+v进入可视模式,选中需要多行插入的内容,按下I(大写i),进行插入,输入要插入的内容,按2次esc插入完成
vim调用外部命令
进入命令行模式
:!+命令 如!ip a
vim调用外部文件(将外部文件追加到当前文件[相当于直接复制到当前文件)
进入命令行模式
:r+文件名(路径)
##自定义vim环境
- set nu 显示行号
- set nonu 不显示行号
- noh 取消高亮
- set hlsearch 搜索高亮