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

--用于新建一个文档或者编辑文档,进入之后就是命令模式

--退出编辑模式,进入命令模式

--命令模式下,相当于我们平时用的删除键。

--命令模式下,跟我们平时用的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

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>> 就将接下来的三行每行都向右移动一个移动宽度

大概就是这些了,如果有错误,请留言!

shell编程中的vim命令说明的更多相关文章

  1. Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||

    https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...

  2. Shell编程中Shift的用法

    Shell编程中Shift的用法 位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shif ...

  3. Shell编程中while与for的区别及用法详解【转】

    在shell编程中经常用到循环,常用的循环有for和while循环两种.while循环默认以行读取文件,而for循环以空格读取文件切分文件,本篇就结合现网的一些使用示例说说二者的用法和区别. 一.常用 ...

  4. shell编程中的if语句

    if语句在任何编程中都是必不可少.至关重要的分支语句,shell也是如此,只不过各种编程中的方式和格式有点不太一样 shell编程中的if语句基本格式如下: if [ X$1 = XA ];then ...

  5. shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法

    shell 函数的使用 (md中, 列表本身是有格式的, 他要产生缩进, 其次,列表项和列表项之间, 可以留有一个空行, 是合法的, 允许的) shell函数,就是 就相当于一个命令来看待和处理的, ...

  6. shell编程中的单/双 小括号, 中括号, 大括号

    linux shell中的变量类型?分字符串或者数字或者bool类型吗? 参考: http://www.cnblogs.com/nufangrensheng/p/3477281.html 不分! sh ...

  7. [ SHELL编程 ] shell编程中数值计算方法实例

    SHELL编程中经常会涉及到数值计算,有时候对于这些计算命令使用场景容易忘记或者混淆,这里针对常用的命令做个总结.主要包括let.bc.expr.(())等. 1.let 使用格式:let 表达式,表 ...

  8. shell编程中用户输入处理(shell 04)

    shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...

  9. (转)轻松掌握shell编程中数组的常见用法及示例

    缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习 ...

随机推荐

  1. Spark RDD持久化说明

    以上说明出自林大贵老师关于Hadoop.spark书籍,如有兴趣请自行搜索购买! 这是我的GitHub分享的一些笔记:https://github.com/mahailuo/pyspark_notes

  2. tcp的半连接与完全连接队列(二)

    队列及参数 server端的半连接队列(syn队列) 在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包开设一个条目(服务端在接收到SYN包的时候,就已经创建了request_s ...

  3. node搭环境(四)--webpack启服务运行VUE模块文件(手写简单脚手架)

    webpack启服务步骤: 1.新建空文件夹webpack-vue.在空文件夹右键点击- GIt Bath here--输入cnpm init--按程序走完会生成package.json文件 2.打开 ...

  4. .NET MVC强类型参数排除和包含属性

    MVC接收强类型对象时排除或只接收某几个属性时可使用Bind特性: Bind(Include="属性");如果相包含多个属性可以用逗号分割符分开:Bind(Include=&quo ...

  5. css颜色 hsla 和line-gradient

    h 表示色调 从0-360 s 饱和度  0 - 100% l 亮度    0 -100% a 透明度  0-1

  6. flexpager权限控制文件crossdomain.xml

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cross-domain-policy SY ...

  7. Cookie存储大小、个数限制

    一.浏览器允许每个域名所包含的cookie数: Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie. Firef ...

  8. C++ Knowledge series 3

    Programming language evolves always along with Compiler's evolvement The Semantics of Data The size ...

  9. Android 6.0 动态权限申请

    1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在 ...

  10. 【起航计划 015】2015 起航计划 Android APIDemo的魔鬼步伐 14 App->Activity->Translucent Blur 模糊背景

    这个例子和Translucent不同的一点是Blur,也就是显示在当前Activit背后的其它Activity以模糊方式显示. 这是通过window对象Flag来设置的. // Have the sy ...