初学python(03篇--vi命令)
所有的Linux发⾏版系统上都会默认内置vi编辑器,⽽不⼀定带有其他⽂本编辑器,⾮常通⽤;其次,很多软件的编辑接⼝都会默认调⽤vi;再者就是对很多热爱编程的⼤佬来说,可⼤⼤提⾼编程效率,很多⿊客也是使⽤这个编辑器来减少⾃⼰摸⿏标时间的。
VI命令的⼯作模式
vi编辑器有三种⼯作模式:命令模式、插⼊模式、末⾏模式。
VI命令的基本操作
⼀下⽂本内容的“#”为注释内容,说明功能
进⼊⽂件
vi test.py # 打开名为test.py的⽂件,若不存在则创建并打开该⽂件
如果只输⼊ vi,⽽不带⽂件名,也可以进⼊ vi。这时编辑的⽂件是没有⽂件名的,所以在退出 vi 时,需要在退出命令后输⼊⽂件名,这样才能保证该⽂件被保存在磁盘中。
修改⽂件
插⼊⽂本(i和I)
i:将⽂本插⼊到光标所在位置前
I:I 命令将⽂本插⼊当前⾏的⾏⾸
追加⽂本(a和A)
a:将新⽂本追加到光标当前所在位置之后
A:命令将新⽂本追加到所在⾏的⾏尾
空⾏插⼊命令(o和O)
o:命令将在光标所在⾏的下⾯插⼊⼀个空⾏,并将光标置于该⾏的⾏⾸
O:命令在光标所在⾏的上⾯插⼊⼀个空⾏,并将光标置于该⾏的⾏⾸。
移动光标
字符移动
移动命令意义
h左移⼀个光标
j下移⼀个光标
k上移⼀个光标
l右移⼀个光标
按字移动
w 和 W 命令将光标右移⾄下⼀个字的字⾸。
区别:
-w 所指的字是指英⽂单词、标点符号和⾮字母字符;
-W 所指的字是指两个空格之间的任何内容;
如果光标起始位置处于字内,则 e 和 E 命令将把光标移到本字字尾;
如果光标起始位置处于字尾,则 e 和 E 命令将把光标移动到下⼀个字的字尾。
区别:
-e 所指的字是指英⽂单词、标点符号和⾮字母字符;
-E 所指的字是指两个空格之间的任何内容;
如果光标处于所在字内,则 b 和 B 命令将把光标移⾄本字字⾸;如果光标处于所在字字⾸,则 b 和 B 命令将把光标移到上⼀个字的字⾸。
区别:
-b 命令所指的字是指英⽂单词、标点符号和⾮字母字符;
-B 命令所指的字是指两个空格之间的任何内容。
按⾏移动
H:将光标移⾄当前屏幕的第 1 ⾏,⽽不是整个⽂件的第 1 ⾏。若在 H 命令之前加 上数字 n,则将光标移⾄第 n ⾏的⾏⾸
M:将光标移⾄屏幕显⽰⽂件的中间⾏的⾏⾸。即如果当前屏幕已经充满,则移动到整个屏幕的中间⾏;否则,移动到显⽰⽂本的那些⾏的中间⾏。
L:将光标移⾄屏幕显⽰⽂件的最底⾏的⾏⾸。即如果⽂件内容需要超过⼀个屏幕显⽰时,该命令将光标移⾄屏幕上最底⾏的⾏⾸;否则该命令将光标移⾄⽂件最后⼀⾏的⾏⾸。
G:在全⽂的范围内移动光标,此时的光标移动范围不再受屏幕的限制。例如,在上例中,在命令模式下输⼊命令 5G 之后光标将移到第 5 ⾏的⾏⾸。
按段落移动光标
⼀个段落被定义为是以⼀个空⽩⾏开始和结束的⽚段。按段落移动光标的命令有以下两种:
{:该命令将光标向前移⾄上⼀个段落的开头。
}:该命令将光标向后移⾄下⼀个段落的开头。
⽂本移动
⽂本⾏移动
>:将指定的正⽂⾏向右移动。
>n:n表⽰光标所在位置后⾯的⽂本⾏数。也可以不写 n,此时默认为 1。
<:命令将指定的正⽂⾏向左移动。其使⽤⽅式与命令相同,但是⽅向相反。
>>:该命令将光标所在⾏右移 8 个空格。如果在>>命令之前给出⼀个数字 n,例如 4,则表⽰光标当前⾏及其下⾯的 3 ⾏(共4⾏)都右移 8 个空格。
<<:命令将光标所在⾏左移 8 个空格。其使⽤与>>命令相同,但是移动⽅向相反。
⽂本跨⾏移动(m命令)
imj:表⽰把第 i ⾏移⾄第 j ⾏的下⽅。下⾯实例演⽰了 m 命令的使⽤。例:6m2,就是将第6⾏的内容移动到第2⾏的下⽅
替换
字符替换
r: 将当前光标所指的字符替换为提供的字符。可以在该命令之前加上数字 n,表⽰将从当前字符开始的 n 个字符替换为提供的字符。下⾯实例演⽰了 r 命令的使⽤。
R:该命令会让 vi 进⼊ replace 模式。在此模式下,每个输⼊的字符都会替换当前光标下的字符,直到输⼊ <Esc> 结束该模式。
字符串替换
[range]s/s1/s2/ [option]
[range] 表⽰检索范围,省略时表⽰当前⾏;
1,10表⽰从第 1 ⾏到 10 ⾏;
;
.,
%表⽰整个⽂件,同1, 从当前⾏到⽂件尾。
s 为替换命令。
s1 要被替换的串,s2 为替换的串。
option 表⽰选项:
/g表⽰在全局⽂件中进⾏替换;
/c表⽰在每次替换之前需要⽤户进⾏确认;
省略时仅对每⾏第⼀个匹配串进⾏替换。
例如:%s/<abc/cde 表⽰将以 abc 开头的单词替换为以 cde 开头。
辅助操作
linux的vi编辑器命令字符串检索
/
String:从光标处开始向后寻字符串 string。
String:从光标处开始向前寻字符串 string。
⽂本复制和粘贴
v 命令:在命令模式下进⾏⽂本选择。在需要选择的⽂本的起始处按下 v 键进⼊块选择模式,然后移动光标到块尾处。这之间的部分被⾼亮显⽰,表⽰被选中.
V 命令:在命令模式下按⾏进⾏⽂本选择。在需要选择的⽂本的第⼀⾏按下 V 键,然后移动光标到块的最后⼀⾏。这之间的所有⾏被⾼亮显⽰,表⽰被选中。
yy :复制光标所在的整⾏。在 yy 前可加⼀个数字 n,表⽰复制当前⾏及其后 n-1 ⾏的内容。
Y 或 y$ :两命令功能⼀样,都是复制从光标所在处开始到⾏尾的内容。
yw :复制⼀个单词。若光标处在某个词的中间,则从光标所在位置开始复制⾄词尾。同 yy 命令⼀样,可在 yw 之前加⼀个数字 n,表⽰复制 n 个指定的单词。
y) :复制到下⼀句幵始的所有字符。
y} :复制到下⼀段开始的所有字符。
y<CR> (<CR> 表⽰回车):复制包括当前⾏在内的两⾏内容。
p 命令:粘贴命令,粘贴当前缓冲区中的内容
⽂本删除
删除单个字符
x 命令:删除光标处的字符。若在 x 之前加上⼀个数字 n,则删除从光标所在位置开始向右的 n 个字符
X 命令:删除光标前⾯的字符。若在 X 之前加上⼀个数字 n,则删除从光标前⾯那个字符开始向左的 n 个字符。
删除多个字符
dd 命令:该命令删除光标所在的整⾏。在 dd 前可加上⼀个数字 n,表⽰删除当前⾏及其后 n-1 ⾏的内容。
D 命令或 d$ 命令:两个命令功能⼀样,都是删除从光标所在处开始到⾏尾的内容。
d0 命令:该命令删除从光标前⼀个字符开始到⾏⾸的内容。
dw 命令:该命令删除⼀个单词。若光标处在某个词的中间,则从光标所在位置开始删⾄词尾。同 dd 命令⼀样,可在 dw 之前加⼀个数字n,表⽰删除 n 个指定的单词。
d( 命令:该命令删除到上⼀句开始的所有字符。
d) 命令:该命令删除到下⼀句开始的所有字符。
d} 命令:该命令删除到上⼀段开始的所有字符。
d{ 命令:该命令删除到下⼀段开始的所有字符。
d<CR> 命令:该命令(<CR>表⽰回车)删除包括当前⾏在内的两⾏字符。
操作撤销
u :该命令撤销上⼀次所做的操作。多次使⽤ u 命令会⼀步⼀步依次撤销之前做过的操作(在⼀次切换到⽂本输⼊模式中输⼊的所有⽂本算⼀次操作)。
U :该命令会⼀次性撤销⾃上次移动到当前⾏以来做过的所有操作,再使⽤⼀次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。
退出⽂件
:wq vi将先保存⽂件,然后退出 vi 返回到 shell。如果当前⽂件尚未取名,则需要现指定⼀个⽂件名。
:x 在末⾏模式下,若当前编辑⽂件曾被修改过,则 vi 会保存该⽂件。否则 vi 直接退出,不保存该⽂件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论