vim命令模式:
1、一般命令模式
2、编辑模式
3、底行命令行命令模式
一般命令模式 直接用字符操作
编辑模式 可以写文档(跟txt有点像)
底行命令模式 先按'ESC',在按下“:”,之后在输出命令
小注:用vim编辑命令: vim test.txt 或 vi test.txt
一开始进入的是编辑模式
1(一般命令模式)-->2(编辑模式) |
详情见下面2.1 |
1(一般命令模式)-->3(底行命令模式) |
直接在键盘上输入":",就可以进入该模式 |
2(编辑模式)-->1(一般命令模式) |
按键盘上的【ESC】键 |
2(编辑模式)-->3 (底行命令模式) |
2-->1-->3 |
3(底行命令模式)-->1(一般命令模式) |
用删除键删除":"便可以 |
3(底行命令模式)-->2(编辑模式) |
3-->1-->2 |
(注意:在下面命令中,开头带有“:”的,就是底行命令模式,其余的命令则是一般命令模式,编辑模式的命令没有写)
1、最常用的基本命令
vi test.txt
Esc
x
Delete
dd
:
wq
q
h
j
k
l |
--用于新建一个文档或者编辑文档,进入之后就是命令模式
--退出编辑模式,进入命令模式
--命令模式下,相当于我们平时用的删除键。
--命令模式下,跟我们平时用的del键是一样的
--删除该光标所在的行,将整行都给删除掉。
--底下会出现一个[:],可以执行相应的语句实现某些功能,比如:退出保
--在按了 Esc-->: 命令后,在按wq并按回车键,表示强制退出保存。
--在按了 Esc-->: 命令后,在按q表示只退出不保存。
--命令模式,表示将光标向左移动,跟键盘上的【←】命令一样
--命令模式,表示将光标向下移动,跟键盘上的【↓】命令一样
--命令模式,表示将光标向上移动,跟键盘上的【↑】命令一样
--命令模式,表示将光标向右移动,跟键盘上的【→】命令一样 |
2、移动光标或滚动屏幕(一般命令模式)
选项 l or 右箭头 h or 左箭头 j or 下箭头 k or 上箭头 0 (零按键) ˆ $ w W b B numberG G H nH M L nL ^e(ctrl+e) ctrl+y ctrl+u ctrl+d ctrl+b ctrl+f ctrl+l z-return nz-return z. nz. z- nz- |
说明 向右移动一个字符 向左移动一个字符 向下移动一行 向上移动一行 移动到当前行的行首。 移动到当前行的第一个非空字符。 移动到当前行的末尾。 移动到下一个单词或标点符号的开头。 移动到下一个单词的开头,忽略标点符号。 移动到上一个单词或标点符号的开头。 移动到上一个单词的开头,忽略标点符号。 移动到第 number 行。例如,1G 移动到文件的第一行。 移动到文件末尾。 将光标移动到屏幕的顶行 将光标移动到屏幕顶行下的第 n 行 将光标移动到屏幕的中间 将光标移动到屏幕的底行 将光标移动到屏幕底行上的第 n 行 将屏幕上滚一行 将屏幕下滚一行 将屏幕上滚半页 将屏幕下滚半页 将屏幕上滚一页 将屏幕下滚一页 重绘屏幕 将当前行置为屏幕的顶行 将当前行下的第 n 行置为屏幕的顶行 将当前行置为屏幕的中央 将当前行上的第 n 行置为屏幕的中央 将当前行置为屏幕的底行 将当前行上的第 n 行置为屏幕的底行 |
2.1 插入文本(一般命令模式-->编辑模式,常用)
命令 a A i I o O s S :r file :nr file Esc ^v char |
插入动作 在光标后插入文本 在当前行末插入文本 在光标前插入文本 在当前行前插入文本 在当前行的下边插入新行 在当前行的上边插入新行 删除光标所在处字节(字母),并进入插入模式 删除光标所在的行,并进入插入模式 读入文件 file 内容,并插在当前行后 读入文件 file 内容,并插在第 n 行后 回到命令模式 插入时忽略 char 的指定意义,这是为了插入特殊字符 |
2.2 替换操作
2.2.1 一般命令模式
命令 rchar R text escape stext escape S 或 cctext escape cwtext escape Ctext escape cG escape ccursor_cmd text escape |
替换操作 用 char 替换当前字符 用 text 替换当前字符直到按下 Esc 键 用 text 代替当前字符 用 text 代替整行 将当前字改为 text 将当前行余下的改为 text 修改至文件的末尾 从当前位置处到光标命令位置处都改为 text |
2.2.2 底行命令模式
命令 :s /text1/text2 :n1,n2s/word1/word2/g :n1,.s/text1/text2/g :n1,$s/string1/string2/g :n1,$s/string1/string2/gc :%s/text1/text2/g :g/text1/s/text2/text3 :g/text/command :v/text/command |
替换操作 在光标所在行中,将text1替换为text2 在第n1行到n2行之间查找word1,并将字word1替换为word2 在第n1行到光标所在行之间查找text1,并将text1替换为text2 在第n1行到末行之间查找string1,并将string1替换为string2 c 在第n1行到末行之间查找string1,将string1替换为string2,在替换之前逐一进行确认操作(confirm) 在本vim中,将text1替换为text2 查找包含 text1 的行,将第一个text2替换为text3 在所有包含 text 的行运行 command 所表示的命令 在所有不包含 text 的行运行 command 所表示的命令 |
2.3 查找操作(带“:”为底行命令模式,其他为一般命令模式)
命令 :set ic :set noic /text ?text n N ftext Ftext ttext Ttext |
查找操作 查找时忽略大小写 查找时对大小写敏感 在文件中向前查找 text 在文件中向后查找 text 在同一方向重复查找 在相反方向重复查找 在当前行向前查找 text 在当前行向后查找 text 在当前行向前查找 text,并将光标定位在 text 的第一 在当前行向后查找 text,并将光标定位在 text 的第一 |
2.4 删除操作(带“:”为底行命令模式,其他为一般命令模式)
命令 :1,3d :n1,n2d :n1,.d :n1,$d :%d X x nx dd 5dd dW d$ d0 dˆ dG d20G db |
删除操作 删除第1行到第3行的数据 删除第n1到n2行的所有数据 删除第n1到光标所在行的数据 删除第n1行到最后行所有的数据 删除所有数据 向前删除数据 当前字符 当前字符及其后(n-1)个字符。 当前行。 当前行及随后的四行文本。 从光标位置开始到下一个单词的开头。 从光标位置开始到当前行的行尾。 从光标位置开始到当前行的行首。 从光标位置开始到文本行的第一个非空字符。 从当前行到文件的末尾。 从当前行到文件的第 20 行。 删除光标前面的字 |
2.5 复制操作
命令 y0 y$ yy nyy y1G yG p P "(a-z)nyy "(a-z)ndd "(a-z)p "(a-z)P |
说明 复制光标所在行中的首字母到光标所在的字母之间的数据(不包含光标上的字母) 复制光标所在行中的光标所在字母到行尾之间的数据(包含光标上的字母) 将当前行的内容放入临时缓冲区 将 n 行的内容放入临时缓冲区 复制第1行到光标所在行的所有数据 复制光标所在行到最后一行所有的数据 将临时缓冲区中的文本放入光标后 将临时缓冲区中的文本放入光标前 复制 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行 删除 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行 将名字为圆括号的可命名缓冲区的内容放入当前行后 将名字为圆括号的可命名缓冲区的内容放入当前行前 |
2.6 撤销与重复
命令 u U . , ; "np n N |
说明 撤消最后一次修改 撤消当前行的所有修改 重复最后一次修改 以相反的方向重复前面的 f、F、t 或 T 查找命令 重复前面的 f、F、t 或 T 查找命令 取回最后第 n 次的删除(缓冲区中存有一定次数的删除内容,一般为 9) 重复前面的 / 或 ? 查找命令 以相反方向重复前面的 / 或 ? 命令 |
2.6 保存或退出文本操作
命令 :w :w file :wq 或 ZZ 或 :x :q! :e! |
说明 保存文件但不退出 vi 将修改保存在 file 中但不退出 vi 保存文件并退出 vi 不保存文件,退出 vi 放弃所有修改,从上次保存文件开始再编辑 |
2.7 底行命令的选项(set用法)
选项 :set all :set nooption :set nu :set showmode :set autoindent :set smartindent :set list :set ts=8 :set window=n :set number :set nonumber |
作用 打印所有选项 关闭 option 选项 每行前打印行号 显示是输入模式还是替换模式 继承前一行的缩进方式,特别适用于多行注释 为C程序提供自动缩进 显示制表符(^I)和行尾符号 为文本输入设置 tab stops 设置文本窗口显示 n 行 显示行数 取消显示行数 |
2.8 符号命令
选项 :.= := ctrl+g :l |
作用 打印当前行的行号 打印文件中的行数 显示文件名、当前的行号、文件的总行数和文件位置的百分比 使用字母 "l" 来显示许多的特殊字符,如制表符和换行符 |
2.9 定位段落和放置光标(一般命令模式)
选项 { [[ ]] m(a-z) '(a-z) |
作用 在第一列插入 { 来定义一个段落 回到段落的开头处 向前移到下一个段落的开头处 用一个字母来标记当前位置,如用 mz 表示标记 z 将光标移动到指定的标记,如用 'z 表示移动到 z |
2.10 连接行
选项 J nJ |
作用 将下一行连接到当前行的末尾 连接后面 n 行 |
2.11 shell转义命令
选项 :!command :!! :r!command :w!command :cd directory :sh :so file |
作用 执行 shell 的 command 命令,如 :!ls 执行前一个 shell 命令 读取 command 命令的输入并插入,如 :r!ls 会先执行 ls,然后读入内容 将当前已编辑文件作为 command 命令的标准输入并执行 command 命令,如 :w!grep all 将当前工作目录更改为 directory 所表示的目录 将启动一个子 shell,使用 ^d(ctrl+d) 返回 vi 在 shell 程序 file 中读入和执行命令 |
2.12 vim中的宏与缩写
(注意:避免使用控制键和符号,不要使用字符 K、V、g、q、v、*、= 和功能键)
选项 :map key command_seq :map :umap key :ab string1 string2 :ab :una string |
作用 定义一个键来运行 command_seq,如 :map e ea,无论什么时候都可以 e 移到一个字的末尾来追加文本 在状态行显示所有已定义的宏 删除该键的宏 定义一个缩写,使得当插入 string1 时,用 string2 替换 string1。当要插入文本时,键入 string1 然后按 Esc 键,系统就插入了 string2 显示所有缩写 取消 string 的缩写 |
2.13 vim中文本的缩进
选项 ctrl+i或 tab :set ai :set sw=n n> |
作用 插入文本时,插入移动的宽度,移动宽度是事先定义好的 打开自动缩进 将移动宽度设置为 n 个字符 使 n 行都向右移动一个宽度,例如 3>> 就将接下来的三行每行都向右移动一个移动宽度 |
大概就是这些了,如果有错误,请留言!