shell编程中的vim命令说明
vim命令模式:
1、⼀般命令模式
2、编辑模式
3、底⾏命令⾏命令模式
⼀般命令模式 直接⽤字符操作
编辑模式 可以写⽂档(跟txt有点像)
底⾏命令模式 先按'ESC',在按下“:”,之后在输出命令
⼩注:⽤vim编辑命令: 或
⼀开始进⼊的是编辑模式
1(⼀般命令模式)-->2(编辑模式)详情见下⾯2.1
1(⼀般命令模式)-->3(底⾏命令模式)直接在键盘上输⼊":",就可以进⼊该模式
2(编辑模式)-->1(⼀般命令模式)按键盘上的【ESC】键
2(编辑模式)-->3 (底⾏命令模式)2-->1-->3
3(底⾏命令模式)-->1(⼀般命令模式)⽤删除键删除":"便可以
3(底⾏命令模式)-->2(编辑模式)3-->1-->2
(注意:在下⾯命令中,开头带有“:”的,就是底⾏命令模式,其余的命令则是⼀般命令模式,编辑模式的命令没有写)1、最常⽤的基本命令
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 替换操作
在光标所在⾏中,将text1替换为text2
在第n1⾏到n2⾏之间查word1,并将字word1替换为word2在第n1⾏到光标所在⾏之间查text1,并将text1替换为text2在第n1⾏到末⾏之间查string1,并将string1替换为string2
:n1,$s/string1/string2/gc :%s/text1/text2/g
:g/text1/s/text2/text3
:g/text/command
:v/text/command 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 移到⼀个字的末尾来追加⽂本
shell命令属于什么语言在状态⾏显⽰所有已定义的宏
删除该键的宏
定义⼀个缩写,使得当插⼊ string1 时,⽤ string2 替换 string1。当要插⼊⽂本时,键⼊ string1然后按 Esc 键,系统就插⼊了 string2
显⽰所有缩写
取消 string 的缩写
2.13 vim中⽂本的缩进
选项
ctrl+i或 tab :set ai
:set sw=n n>作⽤
插⼊⽂本时,插⼊移动的宽度,移动宽度是事先定义好的
打开⾃动缩进
将移动宽度设置为 n 个字符
使 n ⾏都向右移动⼀个宽度,例如 3>> 就将接下来的三⾏每⾏都向右移动⼀个移动宽度
⼤概就是这些了,如果有错误,请留⾔!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论