linuxvi打开文件全部是'@'

linuxvi打开文件全部是'@',第1张

一、打开文件
vi testsh
vi 打开文件后有三种模式
命令行模式:vi 打开文件后即进入命令行模式,此时可输入下文中的各种快捷键。
编辑模式:常在命令行模式下输入 i 进入编辑模式,该模式下可进行修改文件内容 *** 作。
底行模式: / 或 : 进入,进行查找移动替换内容,特殊显示等 *** 作。
二、移动光标
--上下左右键移动
↑ ↓ ← →
--移动到第n行行首
:n
--移动到第1行行首
gg
--移动到最后一行行首
G
--移动到当前行行首
0
--移动到当前行行尾
$
三、进入编辑模式
--当前行首进入编辑模式
i
--当前行尾进入编辑模式
A
--下一行插入空行并进入编辑模式
o
--上一行插入空行并进入编辑模式
O
--清空当前行并进入编辑模式
cc
--清空当前位置到行尾的内容并进入编辑模式
C
四、批量 *** 作内容
--复制当前行
yy
--剪切当前行(不粘贴时也可当做删除用)
dd
--粘贴
p
--粘贴 n 次
np
--删除当前行到文件结尾的内容
dG
--第1行移动到第5行后面
:1mo5
--第1行复制到第5行后面
:1co5
-第1到3行移动到第5行后面
:1,3mo5
--第1到3行复制到第5行后面
:1,3co5
--当前行的 a 替换为 b
:s#a#b#g
--当前行到第 n 行的 a 替换为 b
:,ns#a#b#g
--当前行到文件结尾的 a 替换为 b
:,$s#a#b#g
--第 n 到 m 行的 a 替换为 b
:n,ms#a#b#g
--文件中所有行的 a 替换为 b
:%s#a#b#g
五、其他
--显示行号
:set nu
--取消显示行号
:set nonu
--查找 a
/a
继续向下查找
Enter/n
继续向上查找
N
--撤销当前 *** 作
u
--恢复刚才的 *** 作
ctrl + r
六、退出
--退出编辑模式
Esc
--退出底行模式
Enter
--保存修改并退出
:wq
无权限执行时强制保存退出
:wq!
--不保存修改并退出
:q
无权限执行时强制不保存退出
:q!

步骤一

vi进入文件编辑模式,如图

2

步骤二比如:删除第六行

21、将光标移至要删除的第六行;

22、连续输入两次小写的d,即dd,就可以成功删除第6行,如图

1、首先vi命令打开要修改的文件
2、在打开文件后,默认的是浏览模式,即非编辑模式
3、在非编辑模式下输入斜杠:/
4、在/后输入你要找的那个字符,例如:/baidu ,输入完成后回车
5、如果文件中存在baidu这个关键字,那么光标会自动定位到这个关键字上
6、此时文件还是处于非编辑模式,连续按两次键盘上的 “d”键,即可删除baidu所在的行
7、然后按键盘上的字母“n”键,可以继续在文件中查找baidu这个关键字,查到后,重复步骤6删除行的 *** 作即可

进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个和pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filenamefilename :打开多个文件,依次进行编辑
移动光标类命令
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 filename:打开文件filename进行编辑
: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
同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
游标移至目的地
执行p
复制一行 :在该行执行yy
游标移至目的地
执行p
视窗移动:
视窗往下卷一页
视窗往上卷一页
视窗往下卷半页
视窗往上卷半页
视窗往下卷一行
视窗往上卷一行
删除、复制及修改指令介绍:
d(delete)、c(change)和y(yank)这一类的指令在vi 中的指令格式为:
operation+scope=command
(运算子)(范围)
运算子:
d 删除指令。删除资料,但会将删除资料复制到记忆体缓冲区。
y 将资料(字组、行列、句子或段落)复制到缓冲区。
p 放置(put)指令,和d和y配合使用。可将最后delete或yank的资料放置于游标所在位置之行列下。
c 修改(change)指令,类似delete于insert的组合。删除一个字组、句子等资料,并插入新键入的

vi非正常退出都会在相应的位置保留swp文件。每次再vi 的时候就会出现告警信息并且导致无法编辑。这个时候如果想要保存,那么先:revover--->编辑--->wq!-->删除对应的swp文件(用rm -rf /swp)。如果不想保存,那么直接删除swp文件就可以了 。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13329931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-16
下一篇 2023-07-16

发表评论

登录后才能评论

评论列表(0条)

保存