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. SCAU 算法课的题

    8594 有重复元素的排列问题(优先做) 时间限制:1000MS  内存限制:1000K提交次数:1610 通过次数:656 题型: 编程题   语言: G++;GCC;VC Description ...

  2. C# list.toArray list与数组的转换

    void Start () { List<int> list = new List<int>(); list.Add(); list.Add(); list.Add(); li ...

  3. jemalloc报 Unsupported system page size错误

  4. MS-DOS

    MS-DOS doskey /history /reinstall /buffersize /macros doskey di=dir /w/p defrag 磁盘碎片整理 xcopy deltree ...

  5. Qt 学习(2)

    Qt 学习(2) Qt 的 QXmlStreamReader 在 Qt 应用程序中访问 XML 格式的文件数据,可以使用 [QXmlStreamReader][sreamreader] 对文件进行读取 ...

  6. .NET面试题5

    常见面试题目: 1. const和readonly有什么区别? 2. 哪些类型可以定义为常量?常量const有什么风险? 3. 字段与属性有什么异同? 4. 静态成员和非静态成员的区别? 5. 自动属 ...

  7. JS动态创建SVG元素并绑定事件

    var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svg.set ...

  8. 使用ajax获取用户所在地的天气

    1.要获取用户归属地的天气,首先得获取用户所在的市区, 这里先获取用户的IP,通过IP获取IP的归属地,从而得到用户 地址. 获取客户端ip: js: <scripttype="tex ...

  9. Python基础学习-列表的常用方法

    列表方法 = Python 3.5.2 (default, Sep 14 2016, 11:27:58) [GCC 6.2.1 20160901 (Red Hat 6.2.1-1)] on linux ...

  10. Maven报错:Missing artifact jdk.tools:jdk.tools:jar:1.6

    1.jdk.tools:jdk.tools是与JDK一起分发的一个JAR文件,可以如下方式加入到Maven项目中: <dependency>    <groupId>jdk.t ...