shell编程中的vim命令说明

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

 

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

posted @ 2019-01-09 16:40  科技之夜  阅读(3189)  评论(0编辑  收藏  举报