1) 光标命令
k,j,h,l---上下左右光标移动命令,虽然可以在Linux中使用键盘右边的四个光标键, 但是记住这四个命令还有非常有用的,也就是右手在键盘上放置的位置部分
nG ----n为行数,该命令立即使光标跳到指定行。
Ctrl+G-----光标所在位置的行数和列数报告
w,b------使光标向前或向后跳过一个单词
2) 编辑命令
i,a,r -------在光标的前,后,上方插入字符命令(i=insert,a=append,r=replace)
cw,dw------ 改变(置换)/删除光标所在处的单词的命令 (c=change,d=delete)
x,d$,dd -----删除一个字符,光标所在处到行尾的所有字符,和整行的命令
3) 查找命令
/string, ?string-----从光标所在处向后/向前查找相应的字符串的命令
4)拷贝复制命令
yy,p -----拷贝一行到剪贴板/取出剪贴板中内容的命令
常见问题及应用技巧
1) 在一个新文件中读/etc/passwd中的内容,取出用户名部分
vi file
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分
:3r /etc/passwd 这是在指定的行号后面读入文件内容
另外一种方法删掉文件中所有的空行及以#开始的注释行
#cat squid.conf.default | grep -v '^$' | grep -v '^#'
2) 在打开一个文件编辑后才知道登录的用户对该文件没有写权,不能存盘
vi file
:w /tmp/1 既然没法存盘,不想放弃所做的所有修改,先临时存到/tmp/1
:20,59w /tmp/1 或者仅仅把第20到59行之间的内容存盘成文件/tmp/1
3) 用VI编辑一个文件,但需要删除大段大段的内容
vi file
Ctrl+G 把光标移到需要删除的行的处按ctrl+G显示行号,再到结尾处再按Ctrl+G.
:23,1045d 假定两次行号为23和1045,则把这几间的内容全删除
也可以在开始和结束两行中用ma,mb命令标记后用:'a,'bd删除.
4) 在整个文件或某几行中在行首或行尾加一些字符串
vi file
:3,$s/^/some string / 在文件的第一行至最后一行的行首前插入some string
:%s/$/ some string/g 在整个文件每一行的行尾添加 some string
:%s/string1/string2/g 在整个文件中替换string1成string2
:3,7s/string1/string2/ 仅替换文件中的第三到七行中的string1成string2
Note: s为substitute,%表示所有行,g表示global
5) 同时编辑两个文件,在两个文件中拷贝剪贴文本
vi file1 file2
yy 同时打开两个文件,在文件1的光标所在处拷贝所在行
:n 切换到文件2 (n=next)
p 在文件2的光标所在处粘贴所拷贝的行
:N 切换回文件1
6) 替换文件中的路径
:%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin
:%s//usr/bin//bin/g 在'/'前用符号指出'/'是真的单个字符'/'
7) 用 vi 多行注释
如果要给多行程序作注释,一个笨办法就是 插入 # ,然后用 j 跳到下一行用 . 命令,重复上个命令。如果要注释几百行,这样的方法恐怕太愚蠢了。一个聪明的办法是:
:.,+499 s/^/#/g
2010-11-24 16:19:41VI中的多行删除与复制法一:单行删除,:1(待删除行)d多行删除 ,:1,10d法二:光标所在行,dd光标所在行以下的N行,Ndd方法1:光标放到第6行,输入:2yy光标放到第9行,输入:p此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。方法2:命令行模式下输入6,9 co 1
熟悉
VI
是学习UNIX 系统的一个关口
vi
是
vi
sual edit 的缩写
文本编辑器是所有计算机系统
中
最常用的一种工具。UNIX下的编辑器有ex,sed和
vi
等,其
中
,使用最为广泛的是
vi
,而
vi
命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充!
进入
vi
的命令
vi
file
name :打开或新建文件,并将光标置于第一行首
vi
+n
file
name :打开文件,并将光标置于第n行首
vi
+
file
name :打开文件,并将光标置于最后一行首
vi
+/pattern
file
name:打开文件,并将光标置于第一个与pattern匹配的串处
vi
-r
file
name :在上次正用
vi
编辑时发生系统崩溃,恢复
file
name
vi
file
name....
file
name :打开多个文件,依次进行编辑
移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕
中
间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:
删除
指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行
删除
命令
ndw或ndW:
删除
光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:
删除
当前行及其后n-1行
x或X:
删除
一个字符,x
删除
光标后的,而X
删除
光标前的
Ctrl+u:
删除
输入方式下所输入的文本
搜索及替换命令
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行
中
所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行
中
所有p1均用p2替代
:g/p1/s//p2/g:将文件
中
所有p1均用p2替换
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索
中
忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式
中
,使用前面不带"\"的特殊字符
nowrapscan:禁止
vi
在搜索到达文件两端时,又从另一端开始
mesg:允许
vi
显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容
删除
:w :保存当前文件
:e
file
name:打开文件
file
name进行编辑
:x:保存当前文件并退出
:q:退出
vi
:q!:不保存文件并退出
vi
:!command:执行shell命令command
:n1,n2 w!command:将文件
中
n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行
寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?
中
,其
中
?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?
中
,其
中
?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?
中
,其
中
?为一个字母,n为一个数字
"?p:取出寄存器?
中
的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本
删除
,并将所删内容放到1号
删除
寄存器
中
。
进入
vi
vi
test
离开
vi
:q! 离开
vi
,并放弃刚在缓冲区内编辑的内容。
:wq 将缓冲区内的资料写入磁盘
中
,并离开
vi
。
:ZZ 同wq
:w 将缓冲区内的资料写入磁盘
中
,但并不离开
vi
。
:q 离开
vi
,若文件被修改过,则会被要求确认是否放弃修改的内容,此指令可与: w 配合使用。
Vi
的操作模式
Vi
提供两种操作模式:
输入模式(
insert
mode)
指令模式(command mode)
当使用者进入
vi
后,既处于指令模式下,此刻键入任何字元皆被视为指令。
输入模式:a(append) 游标之后加入资料。
A 该行之末加入资料
i (
insert
) 游标之前加入资料
I 该行之首加入资料
o (open) 新增一行与该行之下供输入资料
O 新增一行与该行之上供输入资料
指令模式:
B 移至该行第一个字符,若光标在该行第一字符则光标移至上一行第一字符。
b 由游标所在位置之前一个字串的第一个字元
cc
删除
整行,修改整行的内容。
D 以行为单位,
删除
游标在内后面的所有字符。
db
删除
该行光标前字符
dd
删除
该行
de
删除
自光标开始后面的字符
d加字符
删除
光标所在位置至字符之间的单
E 移至该行最后字符,若光标在该行最后字符则光标移至下一行最后字符
e 由游标所在位置至该字串的最后一个字元
G 移至该档案的最后一行
h 向前移一个字元
j 向下移一个字元
k 向上移一个字元
0 移至该行之首
M 移至视窗的
中
间那行
L 移至视窗的最后一行
l 向后移一个字符
0 由游标所在位置该行的第一个字元
nG 移至该档案的第n行
n+ 自游标所在位置向后移n行至该行的第一字符
n- 自游标所在位置向前移n行至该行的第一字符
R 进入取代状态,直到《ESC》为止
s
删除
游标所在字元,并进入取代模式直到《ESC》
S
删除
游标所在之该行资料,并进入输入模式直到《ESC》
w 由游标所在位置之下一个字串的第一个字元
x
删除
游标所在该字元。
X
删除
游标所在之前一字元。
r 用接于此指令之后的字元取代(replace)游标所在字元
yy yank整行,使游标所在该行
复制
到记忆体缓冲区
显示该行之行号、档案名称、档案
中
最末之行号、游标所在行号占
总行号之百分比
$ 由游标所在位置至该行的最后一个字元。
) 由游标所在位置至下一个句子的第一个字元。
( 由游标所在位置至该句子的第一个字元。
{ 由游标所在位置至该段落的最后一个字元。
} 由游标所在位置至该段落的第一个字元
yank和
delete
可将指定的资料
复制
到记忆体缓冲区,而藉有put指令可将缓冲区内的资料
复制
到荧幕上
例如:搬移一行 :在该行执行dd
游标移至目的地
复制
一行 :在该行执行yy
游标移至目的地
视窗移动:
视窗往下卷一页
视窗往上卷一页
视窗往下卷半页
视窗往上卷半页
视窗往下卷一行
视窗往上卷一行
删除
、
复制
及修改指令介绍:
d(
delete
)、c(change)和y(yank)这一类的指令在
vi
中
的指令格式为:
operation+scope=command
(运算子)(范围)
d
删除
指令。
删除
资料,但会将
删除
资料
复制
到记忆体缓冲区。
y 将资料(字组、行列、句子或段落)
复制
到缓冲区。
p 放置(put)指令,与d和y配合使用。可将最后
delete
或yank的资料放置于游标所在位置之行列下。
c 修改(change)指令,类似
delete
于
insert
的组合。
删除
一个字组、句子等资料,并插入新键入的...
1、一般模式
操作:上下移动光标、
删除
某个字符、
删除
某行以及
复制
或粘贴一行或
多行
#cp /etc/dnsmasp.conf /tmp/1.txt(
复制
到/tmp目录下)
#
vi
m /tmp/1.txt(编辑这个文件)
编辑时的操作可以有:
移动光标的位置
早期的Unix都是使用
vi
作为系统默认的编辑器。那
vi
与
Vi
m有什么区别?其实
Vi
m是
vi
的升级版。很多
Linux
系统管理员都习惯用
vi
,因为他们接触
Linux
时用的就是
vi
,
Vi
m到后来才比较流行
vi
和
Vi
m的最大区别就是编辑一个文本时
vi
不会显示颜色,而
Vi
m会显示颜色。显示颜色更便于用户进行编辑,但其他功能没有太大的区别
Vi
m有3种模式:一般模式、编辑模式和命令模式,这需要我们牢记。
1.一般模式
当我们使用命令
vi
m [文件名] 就会进入编辑的一般模式,在这种模式下我们可以做的操作有:上下移动光标、
删除
某个字符、
删除
某行以及
复制
或粘贴一行或者
多行
。
输入这行命令的时候我们就可以
linux
vi
常用命令
命令行模式(command mode)功能键 1). 插入模式 按「i」切换进入插入模式「
insert
mode」,按"i"进入插入模式后是从光标当前位置开始输入文件; 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。 2). 从插入模式切换为命令行模式 按「ESC」键。 3). 移动光标
vi
可以直接用键盘上的光标来上下左右移动,但正规的
vi
是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。 按「ctrl」+「b」:屏幕往"后"移动一页。 按「ctrl」+「f」:屏幕往"前"移动一页。 按「ctrl」+「u」:屏幕往"后"移动半页。 按「ctrl」+「d」:屏幕往"前"移动半页。 按数字「0」:移到文章的开头。 按「G」:移动到文章的最后。 按「$」:移动到光标所在行的"行尾"。 按「^」:移动到光标所在行的"行首" 按「w」:光标跳到下个字的开头 按「e」:光标跳到下个字的字尾 按「b」:光标回到上个字的开头 按「#l」:光标移到该行的第#个位置,如:5l,56l。 4).
删除
文字 「x」:每按一次,
删除
光标所在位置的"后面"一个字符。 「#x」:例如,「6x」表示
删除
光标所在位置的"后面"6个字符。 「X」:大写的X,每按一次,
删除
光标所在位置的"前面"一个字符。 「#X」:例如,「20X」表示
删除
光标所在位置的"前面"20个字符。 「dd」:
删除
光标所在行。 「#dd」:从光标所在行开始
删除
#行 5).
复制
「yw」:将光标所在之处到字尾的字符
复制
到缓冲区
中
。 「#yw」:
复制
#个字到缓冲区 「yy」:
复制
光标所在行到缓冲区。 「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的
复制
命令都必须与"p"配合才能完成
复制
与粘贴功能。 6). 替换 「r」:替换光标所在处的字符。 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。 7). 回复上一次操作 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。 8). 更改 「cw」:更改光标所在处的字到字尾处 「c#w」:例如,「c3w」表示更改3个字 9). 跳至指定的行 「ctrl」+「g」列出光标所在行的行号。 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。 Last line mode下命令简介 在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。 A) 列出行号 「set nu」:输入「set nu」后,会在文件
中
的每一行前面列出行号。 B) 跳到文件
中
的某一行 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。 C) 查找字符 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。 D) 保存文件 「w」:在冒号输入字母「w」就可以将文件保存起来。 E) 离开
vi
「q」:按「q」就是退出,如果无法离开
vi
,可以在「q」后跟一个「!」强制离开
vi
。 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
vi
命令列表 1、下表列出命令模式下的一些键的功能: h 左移光标一个字符 l 右移光标一个字符 k 光标上移一行 j 光标下移一行 ^ 光标移动至行首 0 数字"0",光标移至文章的开头 G 光标移至文章的最后 $ 光标移动至行尾 Ctrl+f 向前翻屏 Ctrl+b 向后翻屏 Ctrl+d 向前翻半屏
Ctrl+u 向后翻半屏 i 在光标位置前插入字符 a 在光标所在位置的后一个字符开始增加 o 插入新的一行,从行首开始输入 ESC 从输入状态退至命令状态 x
删除
光标后面的字符 #x
我们都会犯错,犯错是人之常情,改进它也很重要。
如果你在
Vi
m
中
出错,你可以dw在普通模式下使用
删除
一个单词。您键入dd它会
删除
当前行。
如果要在
Vi
m
中
删除
多行
,可以使用相同的 dd
Vi
m 命令,将行数添加到该命令
中
。
因此,10dd将从光标底部
删除
10 行(包括光标所在的行)。
让我们详细了解如何在以效率着称的编辑器
中
删除
一行或
多行
。
删除
单行
以下是在
Vi
m
中
删除
单行文本的步骤:
按 Escape (Esc) 键进入 Normal 模式
确保光标位于要
删除
的行上。
快速按下dd
public static void main(
String
[] args) {
for(int j=1;j<17;j++) {
LocalDateTime time = LocalDateTime.now();
time = time.plusMinutes(j*15);
LocalDateTime lastQuarter = time.truncatedTo(ChronoUnit.HOURS)
.plusMi.
### 回答2:
在
Linux
系统
中
,
vi
是一种非常常用的文本编辑器,它可以帮助用户对文本进行创建、编辑、保存、查找等操作。如果用户想要
删除
多行
,可以使用以下几种方法:
1.普通模式下
删除
多行
要在普通模式下
删除
多行
,需要先进入普通模式。接着,我们可以使用以下命令来
删除
多行
:
(1):num1,num2d
可以使用:num1,num2命令来指定行数,如果要
删除
多行
,可以将其合并,如:10,20d。其
中
,表示的是从第10行到第20行之间的所有内容都将被
删除
。
(2)ggdG
这样的命令可以
删除
整个文件,在普通模式下,使用gg命令可以跳转到文件的开头,使用dG命令可以
删除
从当前行到文件末尾的所有内容。
2.命令模式下
删除
多行
在命令模式下
删除
多行
有以下几种方式:
(1):num1,num2d
在命令模式下可以使用:num1,num2d命令,与普通模式下的命令相同,可以
删除
从第num1行到第num2行的所有内容。
(2):g/regex/d
可以使用g/regex/d命令来
删除
与正则表达式regex匹配的行。其
中
/regex/表示正则表达式。
(3):v/regex/d
与g/regex/d命令相反,v/regex/d命令可以
删除
不匹配正则表达式regex的行。
以上就是在
Linux
vi
编辑器
中
删除
多行
的几种方法,可以根据具体的情况选择合适的方法。同时要注意备份文件,避免误操作造成的数据丢失。
### 回答3:
在使用
Linux
的
vi
编辑器时,经常需要
删除
多行
,下面介绍几种方法:
1. 通过命令
删除
多行
:
可以使用 “:” 命令
删除
多行
。在
vi
编辑器的命令模式下,输入 “:” 后,再输入 “start,end d” 命令(其
中
的 start 和 end 表示要
删除
的行的起始行数和终止行数)即可
删除
多行
。例如,要
删除
第 1 到第 5 行,就可以输入:
:1,5d
这样就可以
删除
第 1 到第 5 行的文本内容。
2. 通过正则表达式
删除
多行
:
可以使用正则表达式匹配要
删除
的行,并进行
删除
。在
vi
编辑器的命令模式下,输入 “:” 后,再输入 “/pattern/n,d” 命令(其
中
的 pattern 指正则表达式,n 表示匹配行数,d 表示
删除
匹配的行)即可。例如,要
删除
以 “Hello” 开头的 5 行,可以输入:
:/^Hello/n,5d
这样就可以
删除
以 “Hello” 开头的前 5 行。
3. 通过可视化模式
删除
多行
:
在
vi
编辑器的命令模式下,按 “v” 键可以进入可视化模式。在可视化模式下,可以使用光标选择要
删除
的行,然后按 “d” 键进行
删除
。例如,可以选择第 1 行到第 5 行进行
删除
,具体操作如下:
1)进入可视化模式:按 “v” 键进入可视化模式;
2)选择要
删除
的行:按 “G” 键移到文件末尾,再按 “j” 键向下选择 4 行;
3)
删除
选
中
的行:按 “d” 键进行
删除
。
4. 通过批量
复制
粘贴
删除
多行
:
可以先将要
删除
的
多行
复制
到粘贴板
中
,然后再
删除
这些行。具体操作如下:
1)在命令模式下,将光标移到要
复制
的行的起始位置;
2)按 “v” 进入可视化模式,选择要
复制
的
多行
;
3)按 “y”
复制
选
中
的内容到粘贴板
中
;
4)将光标移到要
删除
的行的起始位置;
5)按 “p” 将粘贴板
中
的内容
复制
到当前位置;
6)移动到下一行,按 “dd”
删除
当前行。
通过上述方法,可以轻松
删除
多行
,在
vi
编辑器
中
提高工作效率。