在shell中如何使用vi命令

发表于:2007-07-04来源:作者:点击数: 标签:
请教各位高人如何在shell中使用vi命令向一个文件中写入内容??!!:o 寂寞烈火 回复于:2005-04-05 12:38:42 vifile 衍水狂客 回复于:2005-04-05 12:49:41 [quote:71856dafa1="寂寞烈火"]vifile[/quote:71856dafa1] vifilename flyfax 回复于:2005-04-05

请教各位高人如何在shell中使用vi命令向一个文件中写入内容??!! :o

 寂寞烈火 回复于:2005-04-05 12:38:42
vi file

 衍水狂客 回复于:2005-04-05 12:49:41
[quote:71856dafa1="寂寞烈火"]vi file[/quote:71856dafa1]

vi filename

 flyfax 回复于:2005-04-05 13:07:41
不是吧。。。。。
在shell中你只用vi打开一个文件如果不关闭它会报错的!!!!!

 寂寞烈火 回复于:2005-04-05 13:15:39
man vi

 衍水狂客 回复于:2005-04-05 13:42:34
按ESC

然后输入

:wq

 flyfax 回复于:2005-04-05 13:44:01
vi /root/dm/dm.txt  >/dev/null <<PDH
#:%s/aaa/123/g
o qwert
^[
:wq
PDH

那你看这个问题在哪呢

 yidou 回复于:2005-04-05 14:20:00
不明白什么问题

 sakulagi 回复于:2005-04-05 14:39:23
echo "oqwert^[:wq" > test.script
vi -s test.script /root/dm.txt

 gusu 回复于:2005-04-07 13:29:57
应该是 ESC 转义问题

 恋家的老鼠 回复于:2005-04-07 13:36:17
ls | rm -rf

 chjan33 回复于:2005-04-13 15:19:25
vi  file 

   在要改动的地方  按 a 键 
 就可以插入要写的东西了 
 Esc 
后  :wq
 保存并退出

 长夜飞翔 回复于:2005-04-13 15:25:50
我以前也用VI在SHELL中进行文件操作,后来发现可以用ed替代,
除非必须,一般对文件的操作用 sed 、awk、 cut、 grep 能完成文件过滤的功能。

到现在为止,还没有那个文本转换能难倒我。

 qyfeng2002 回复于:2005-04-13 22:49:30
这位同学,如果在shell中单是向一个文件中追加内容用
echo “jkdfal” >>filename
即可。
如果需要修改,删除某个文件的内容,则需要用到
sed、ed 等编辑工具。

 qiulm990228 回复于:2005-04-18 20:15:44
vi filename - - << EOF
:g/,/s///g     #将文件中的,号取消
:4              #到文件第4行
:r /tmp/tepfile1  #读/tmp/tmpfile1文件
(凡是可以在vi的冒号下使用的命令都可以这样使用)
:x              #存盘退出
!
EOF
这样就可以了,可以把这段话放到shell中执行(qiulm990228@sina.com)

 zhuangxu 回复于:2005-04-20 01:04:32
明显没看过书,看看书就知到!

进入
vi filename

Esc进入命令模式
i or I 进入文本模式

:wq 退出

 duriantang 回复于:2005-04-22 08:47:55
晕,楼主应该是说VI命令应该在SHELL编程中怎么写,可以使它自动化完成一点任务

 采风 回复于:2005-04-22 09:54:50
vi与shell命令结合不是一个很好的问题解决思路,想想有没有其他替代vi的办法 :roll:

 Lanma 回复于:2005-04-24 12:03:09
[quote:1f19b5696a="长夜飞翔"]我以前也用VI在SHELL中进行文件操作,后来发现可以用ed替代,
除非必须,一般对文件的操作用 sed 、awk、 cut、 grep 能完成文件过滤的功能。

到现在为止,还没有那个文本转换能难倒我。[/quote:1f19b5696a]


同意这位兄弟的说法,复杂的文本自动化处理的话是要看看sed,awk,grep,cut等工具。

 双眼皮的猪 回复于:2005-04-24 12:18:26
[quote:6d4985945c="zhuangxu"]明显没看过书,看看书就知到!

进入
vi filename

Esc进入命令模式
i or I 进入文本模式

:wq 退出[/quote:6d4985945c]
最讨厌的就是没看明白楼主的帖子就乱说一气的人...

 verybigcat 回复于:2005-04-26 12:39:21
可以将需要编辑的命令放入一文件,用ex执行。
如需要在文件后插入一行,可以先编辑一文本文件app,其内容为
$a
blackman:x:0:0::/:
.
x
再用ex执行:
ex - /etc/passwd <app
就可以了。

 lanjing913 回复于:2005-05-19 22:50:26
:D 一、vi编辑器的使用

格式: vi 文件名

各个工作模式的互相切换:
                ----从命令模式切换到插入模式
                    按:i键
                    按:s键
                    按:insert键
                    按:a键
                    按:o键

                ----从插入模式切换到命令模式
                    按:esc键

                ----从命令模式切换到命令行模式
                    按:shift+":"

                ----从插入模式切换到命令行模式
                    按:esc  ---->   shift + :
 
                ----从命令行模式切换到插入模式
                    按:esc  ---->   按插入指定i

3.>命令模式下常用命令:
x---删除当前光标所在字符
dd--删除当前光标所在整行
u---恢复删除(按一次u恢复一次)
yy--复制整行
p---粘贴/放置
                  r---修改光标所在字符
                  R---进入替换状态
                  s---删除光标所在字符,并进入编辑模式
                  S----删除光标所在行,并进入编辑模式

4.>命令行模式常用命令:

:q--不保存退出(如果对文件进行了修改而没有保存,会警告,且无法离开。)
:q!-强制退出(如果对文件进行了修改而没有保存,不会警告而退出。)
:wq-保存退出
                  :wq!--对只读文件强行保存退出
:w filename--另存为某文件名
:w--保存文件
                  ZZ---等价于:wq[b:21dbfe2917][/b:21dbfe2917]

原文转自:http://www.ltesting.net