1.1 直接使用centos系统
然后输入vim会进入vim,并显示一下信息。
1.2windows版本安装教程
https://blog.csdn.net/weihao0240/article/details/104897089
| 指令 | 说明 |
|---|---|
| vim --version | 输出vim基本信息 |
| vim -u none -n | -u none不加载vimrc,-n会使能“nocompatible”选项,防止进入vi兼容模式 |
| vim -u cod/essential.vim | 取代你的vimrc文件 |
| vim 文件名/文件路径 | vim打开了你后面跟的文件,如果没有就会新建这个文件 |
vim jack.txt
首先会进入普通模式
按
i进入插入模式
然后输入要编辑的内容
1.按
esc退出插入模式
2.按:进入命令行模式
3.输入wq命令回车,保存并退出
windows版本在安装目录下
d:\program files\vim\_vimrc文件
linux在/etc/vim/vimrc修改全局文件
" tab设置空格数
set tabstop=4
" 退回tab的空格数
set softtabstop=4
" 每一级缩进的长度
set shiftwidth=4
" 用制表符表示一个缩进
set noexpandtab
" 显示行号
set nu
" 自动缩进
set autoindent
" c语言自动缩进
set cindent
" 设置保留历史命令条数
set history=200
" 全局设置忽略查找大小写
set ignorecase
" 全局设置智能大小写
set smartcase
操作符 动作命令 = 操作
操作符重复两次时会作用于当前行。
| 操作符 | 说明 |
|---|---|
| c | 修改 |
| d | 删除 |
| y | 复制到寄存器 |
| g~ | 反转大小写 |
| gu | 转换为小写 |
| gu | 转换为大写, guu作用于当前行 |
| > | 增加缩进 |
| < | 减小缩进 |
| = | 自动缩进 |
| ! | 使用外部程序过滤{motion}所跨越的行 |
单词:由
数字/字母/下划线/.'组成
字串:非空字符组成`
| 指令 | 说明 |
|---|---|
| . | 重复上次的操作:[普通模式,插入模式)&& [插入模式,esc] |
| * | 匹配当前光标单词,并查找 |
| /pattern 回车 | 文档中查找下一处匹配项 ,n下一个,n上一个 |
| ?pattern 回车 | 文档中查找上一处匹配项,n下一个,n上一个 |
| : [range]s[ubstitute]/target/replacement/[flags] | 查找 替换,&下一个,u撤销,最后标志位g代表全局,c代表需确认,n代表不执行替换仅报告匹配次数&上一个标志位 |
| :%s/target/replacement/g | 查找替换全部,u撤销.:%s///gn上次查找字符的个数 |
| "% | 当前文件名 |
| "# | 轮换文件名 |
| ". | 上次插入文本 |
| ": | 上次执行ex命令 |
| / | 上次查找模式 |
| /\c | 忽略大小写查找 |
| /\c | 强制大小写查找 |
| /\v | very magic模式查找,一般查找需要用\转义(]{ .这个模式不需要 |
| /\v | 原义查找,特殊字符不需要转义 |
| /\v<单词> | 完整单词匹配 |
| "0p | 黏贴第一次复制寄存器内容 |
| "_diw | 黑洞寄存器 |
| " p | 将系统 粘贴板内容复制到当前位置,插入模式用ctrl r |
| `` | 当前文件上次跳转动作之前的位置 |
| `{letter} | 跳转到指定标记(小写字母是本文档,大写字母是全局) |
| `. | 上次修改的地方 |
| `^ | 上次插入的地方 |
| `[ | 上次修改或复制的起始位置 |
| `] | 上次修改或复制的结束位置 |
| `< | 上次高亮的起始位置 |
| `> | 上次高亮的结束位置 |
| % | 允许在一组开闭括号之间跳转 |
| 0 | 光标移动到实际行的行首 |
| g0 | 光标移动到屏幕行的行首 |
| ^ | 光标移动到实际行的第一个非空白字符 |
| g^ | 光标移动到屏幕行的第一个非空白字符 |
| $ | 光标移动到实际行的行尾 |
| g$ | 光标移动到屏幕行的行尾 |
| i、a | 当前光标后,插入模式 |
| b | 移动端单词开头 |
| u | 撤销上一步的操作 |
| e | 定位到单词最后一个字符 |
| c | 进入修改状态 |
| y | 进入复制状态 |
| p | 黏贴到光标之后 |
| v | 进入面向字符的可视模式 |
| x | 剪切当前光标下的字符 |
| j | 下一行光标所在列 |
| k | 上一行光标所在列 |
| h | 光标往左移动一个字符 |
| l | 光标往右移动一个字符 |
| o | 光标所在行,回车,插入模式 |
| s | 删除当前光标字符,插入模式 |
| x | 删除当前光标字符 |
| r | 替换当前光标字符 |
| w | 定位到下一个单词 |
| q{register} | 进入宏记录模式,:reg 寄存器名查看宏自定义内容.录制时确保每条命令都可重复执行.大写的寄存器名进入追加模式 |
| @{register} | 执行指定宏寄存器内容,@@执行最近调用过的宏 |
| m{letter} | 给当前光标位置创建标记(小写字母是本文档,大写字母是全局) |
| f{char} | 查找当前光标行后,输入单个字符,定位字符上,按;定位下一个位置,按,定位上一个位置 |
| t{char} | 查找当前光标行后,输入单个字符,定位字符前,按;定位下一个位置,按,定位上一个位置 |
| a | 光标所在行尾,插入模式 |
| c | 删除当前光标后所有字符,插入模式 |
| e | 定位下一个空格或符号 |
| p | 黏贴到光标之前 |
| s | 删除当前行所有字符,并在此行首,插入模式 |
| i | 光标所在行首,插入模式 |
| k | 单词的说明手册,:q退出 |
| j | 当前行和下一行连接 |
| r | 进入替换模式 |
| u | 大小写转换 |
| v | 面向行的可视模式,批量选择操作 |
| g | 文章行尾开头 |
| w | 定位到下一个单词 |
| f{char} | 查找当前光标行前,输入单个字符,定位字符上,按;定位下一个位置,按,定位上一个位置 |
| t{char} | 查找当前光标行前,输入单个字符,定位字符后,按;定位下一个位置,按,定位上一个位置 |
| dt. | 删除当前光标行后所有内容,直到. |
| d/ge | 删除当前光标行后所有内容,直到ge |
| dd | 剪切当前行 |
| db | 删除此光标前到空格的文字,保留当前光标字符 |
| dw | 删除整个单词 ,保留空格 |
| daw | 删除整个单词,并去掉空格 |
| [数字]g | 跳转到数字行 |
| gg | 行首 |
| ga | 显示字符编码 |
| ge | 反向移动到上一个单词的结尾 |
| gj | 屏幕行往下移动 |
| gk | 屏幕行往上移动 |
| gp | 黏贴当前行之前 |
| gp | 黏贴当前行之后 |
| gv | 进入上次由可视模式选中的文本范围 |
| gg | 打开当前光标下的路径文件 |
| gr | 进入虚拟替换模式 |
| gn | 进入面向字符可视模式,并选中下一处匹配 |
| gn | 进入面向字符可视模式,并选中上一处匹配 |
| gu | 将指定文本转换成大写 |
| cl | 删除当前光标后一个字符,插入模式 |
| cw | 删除当前光标单词,插入模式 |
| cw | 删除当前字串,插入模式 |
| c3w | 删除3个单词 |
| ci" | 修改双引号的内部内容 |
| cit | 修改标签的内部内容 |
| yit | 拷贝标签的内部内容 |
| 3cw | 删除一个单词,执行三次。数字可以用在所有指令上 |
| ko | 当前光标,上一行,插入模式 |
| yyp | 复制一行,并回车黏贴 |
| yap | 复制段落,ap当前段落 |
| qx{changes}q | 执行一系列修改,@x继续,u撤销 |
| c $ | 删除当前行,并在此行首插入模式 |
| $ a | 光标所在行尾编辑 |
| ^ c | 删除当前行,并在此行首插入模式 |
| ^ i | 光标所在行首编辑 |
| {数字}ctrl a | 首先光标到数字,就会按你输入的数字加上光标上的数字 |
| {数字}ctrl x | 同事,是减法。 没有定位到数字,他会自动正向查找数字并运算。 |
| ctrl o | 返回上一次打开文件的文件 |
| ctrl r | 恢复上一步被撤销的操作,恢复撤销 |
| ctrl v | 面向列块的可视模式 |
| ctrl g | 最下面显示文件名,第几行,这一行占所有行的百分比 |
| ctrl f | 向下翻一页 |
| ctrl b | 向上翻一页 |
| ctrl p | 自动补全单词 ,上一个 |
| ctrl n | 自动补全单词,下一个 |
| ctrl y | 确认当前自动补全单词 |
| ctrl e | 还原最早输入的文本 |
| ctrl w s | 水平切分窗口 |
| ctrl w v | 垂直切分窗口 |
| ctrl w w | 窗口循环切换 |
| ctrl w h | 切换到左边窗口 |
| ctrl w j | 切换到下边窗口 |
| ctrl w k | 切换到上边窗口 |
| ctrl w l | 切换到右边窗口 |
| ctrl w c | 关闭活动窗口 |
| ctrl w o | 只保留活动窗口 |
| ctrl w = | 所有窗口等宽等高 |
| ctrl w _ | 最大化活动窗口高度 |
| ctrl w | | 最大化活动窗口宽度 |
| [n]ctrl w _ | 活动窗口高度设置n行 |
| [n]ctrl w | | 活动窗口宽度设置n列 |
| shift $ | 该行行尾 ,相当于end |
| shift {number}> | 往右缩进 |
| shift < | 往左缩进 |
| 按键 | 说明 |
|---|---|
| ctrl h | 删除前一个字符(同退格键) |
| ctrl w | 删除前一个单词 |
| ctrl u | 删除至行首 |
| ctrl [ | 切换到普通模式 |
| ctrl o | 切换到插入-普通模式 |
| ctrl x s | 拼写更正 |
| esc | 切换到普通模式 |
| ctrl r = | 做算数运算,=后面输入表达式按回车即可完成运算 |
| ctrl v u{code} | 插入字符编码字符,其中u是当使用unicode时才加上,否则后跟三位数字 |
| ctrl k {char1}{char2} | 插入以二合字母表示的字符;:h digraph-table查看二合字母表 |
三种不同可视模式:操作字符文本、行文本和列块文本.
可视模式命令重复执行时,它会影响相同选择数量的文本.
| 按键 | 说明 |
|---|---|
| v | 进入面向字符的可视模式 |
| b | 选择区域上一个单词开头处 |
| c | 删除选择区域并进入插入模式,输入要修改的内容后只会在第一行显示按esc,才会在之前所选区域发生变化. |
| o | 选择区域的开头和结尾切换,一端固定一端随光标移动 |
| v | 面向行的可视模式,批量选择操作 |
| u | 大小写转换==>等同于普通模式下的gu |
| vg | 选择当前行到最后一行 |
| iw | 选择当前单词 |
| aw | 选择当前单词及一个空格 |
| iw | 选择当前字串 |
| aw | 选择当前字串及一个空格 |
| is | 选择当前句子 |
| as | 选择当前句子及一个空格 |
| ip | 选择当前段落 |
| ap | 选择当前段落及一个空格 |
| vit | 选择标签内部的内容 |
| a" | 以双引号扩大选择内容 |
| i> | 选中一对尖括号所有内容 |
| guit | 选择标签内部的内容,使其大小写转换 |
| ctrl g | 可视模式和选择模式切换 |
| ctrl v | 面向列快的可视模式 |
按
:进入命令行模式,和shell下命令类似,输入ex命令后按回车执行.
在任意时刻,可以按esc从命令行模式切回普通模式.
按/或者ctrlr=访问表达式寄存器时也会进入命令行模式
| 命令 | 说明 |
|---|---|
| :[range]delete [x] | 删除指定范围内的行[到寄存器] |
| :[range]yank [x] | 复制指定范围内的行[到寄存器] |
| :[line]put [x] | 在指定行后黏贴寄存器x中的内容 |
| :[range]copy {address} | 把指定范围内的行拷贝到{address}指定的行下,简写t或者co |
| :[range]move {address} | 把指定范围内的行移动到{address}指定的行下,简写m |
| :[range]join | 连接指定范围内的行 |
| :[range]normal {commands} | 对指定范围内的每一行执行普通命令 |
| :[range]substitute/{pattern}/{string}/[flags] | 把指定范围内出现{pattern}的地方替换成{string},简写s |
| :[range]global[!]/{pattern}/[cmd] | 对指定范围内匹配{pattern}的所有行执行ex命令cmd ,简写g,反向简写v |
| :[range]!{filter} | 执行外部程序过滤指定范围.如:2,$!sort -t',' -k2:以逗号分隔的记录,从第二行到结尾按第二列字段升序排序 |
| :read !{命令} | 执行当前命令,将输出结果保存到当前文档 |
| :[range]write !sh | 读取[仅选中内容]当前文件命令并在shell中执行 |
| :write ! sh | 读取当前文件命令并在shell中执行 |
| :write! sh | 将前文件命令保存到sh文件中 |
:{cmd1} | {cmd2} |
管道命令,执行完命令1执行命令2 |
| :!{外部命令} | 执行shell或者cmd中的命令 |
| :!java % | java执行当前文件,%代表当前文件名 |
| :source xxx.vim | 执行vim脚本 |
| :shell | 进入shell命令模式 |
| :exit | 退出shell命令模式,返回vim |
| q: | 进入命令行窗口(历史命令,上下选择,按i进入插入模式,编辑历史命令,回车执行) |
| q/ | 进入查找命令行窗口(查找历史命令,上下选择,按i进入插入模式,编辑历史命令,回车执行) |
| :0 | 虚拟行,在文件第一行上方 |
| :e | 刷新当前文档 |
| :'m | 标记m的行 |
| :’< | 高亮选区的起始行 |
| :6t. | 将第6行复制到当前行下方 |
| :t6 | 把当前行复制到第6行下方 |
| :t. | 把当前行复制下方,类似yyp |
| :t$ | 把当前行复制文本结尾 |
| :’<,’>t0 | 把高亮选择的行复制到文件开头 |
| :’> | 高亮选区的结束行 |
| :数字 | 光标跳转到指定行 |
| :[数字]p | 打印当前行,同print;打印数字行 |
| :[数字]d | 删除第数字行 |
| : $ | 光标跳转到最后一行 |
| @: | 重复上次命令 |
| :{start},{end}p | 打印从开始到结束行 |
| : /内容/ 数字,/内容/-数字 | 匹配开始内容加上偏移量行,到结束内容减去数字偏移量行 |
| :.,$p | 当前行到最后一行打印 |
| :%p | 当前文档所有行打印 |
| :’<,’>normal . | 对高亮选择区域执行普通模式下的.命令 |
| ctrl r | 复制光标下的单词 |
| ctrl w | 黏贴光标下的单词 |
| ctrl a | 黏贴光标下的字串,空格隔开的 |
| ctrl d | 显示已输入命令可用列表 |
| ctrl f | 保存当前命令,并进入命令行窗口 |
tab |
命令自动补全 |
shift tab |
反向命令自动补全 |
[过滤字符]上下 |
历史命令切换,前面可加前缀过滤,可在vimrc里面修改history个数 |
| :args | 显示所有多个文件列表,当用vim files/*.java打开多个文件时,文件会加载到缓冲区 |
| :first | 显示第一个打开文件 |
| :next | 显示下一个打开文件 |
| :bnext | 显示下一个打开文件 |
| :bprev | 显示上一个打开文件 |
| :bfirst | 显示第一个一个打开文件 |
| :blast | 显示最后一个打开文件 |
| :bufer {bufname} | 跳转到指定编号缓冲区 |
| :bdelete {bufname} | 删除到指定编号可以多个,空格隔开缓冲区, 也可以范围删除n,m bdelete |
| :argdo source batch.vim | 对所有同时打开的多个文件一起执行batch.vim脚本 |
| :ls | 显示所有被载入内存的文件列表,%表示当前窗口可见,#代表轮换文件 ctrl ^交替文件 |
| :vimgrep /查找字符/ ** | 多个文件里面查找字符 |
| :quit | 退出缓冲区 |
| :qall! | 关闭所有,摒弃修改无需警告,简写qa |
| :write | 保存缓冲区,简写w |
| :wall! | 写入所有,摒弃修改无需警告,简写wa |
| :edit! | 放弃修改缓冲区,简写e |
:edit %:h |
切换点前文件所在目录路径 |
| :sp[lit] {file} | 水平切分窗口,在新窗口载入file文件 |
| :vsp[lit] {file} | 垂直切分窗口,在新窗口载入file文件 |
| :clo[se] | 关闭活动窗口 |
| :on[ly] | 只保留活动窗口 |
| ctrl w t | 把当前窗口移动到新标签页 |
| :tabe[dit] {file} | 在新标签页打开文件 |
| :tabc[lose] | 关闭当前标签页及其中所有窗口 |
| :tabc[nly] | 关闭其他标签页,只保留活动标签页 |
| :tabn[ext] {n} | 切换到编号为n的标签页同:{n}gt |
| :tabn[lext | 下一个标签页 gt |
| :tabp[revious] | 上一个标签页gt |
| :set path =path/** | 添加路径,方便find查找 |
| :set number | 显示行号 |
| :set spell | 拼写检测,[s反向跳转,]s正向跳转,z=建议修改列表zg,zw添加删除单词 |
| :set spelllang=en_us | 拼写检测语言 |
| vim . | 打开文件管理器同:edit . 或者:e. |
| :explore | 打开文件管理器,并显示活动缓冲区所在目录同:e |
| ctrl ^ | 文件和文件管理器之间切换 |