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
从命令行模式切回普通模式.
按/
或者ctrl
r
=
访问表达式寄存器时也会进入命令行模式
命令 | 说明 |
---|---|
:[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 ^ | 文件和文件管理器之间切换 |