注册 登录
编程论坛 Linux教室

在VIM中怎样执行外部命令,另存文件,保存文件

槿儿 发布于 2012-09-25 19:16, 5287 次点击
在VIM中怎样执行外部命令,另存文件,保存文件
13 回复
#2
zklhp2012-09-25 21:58
等vim大神来给我们长知识
#3
外部三电铃2012-09-25 22:18
保存文件
:w newfile.txt

执行外部命令
:!ls

:!cd /usr/local

:!rm newfile.txt
#4
madfrogme2012-09-25 22:26
好像
:sav newfile
也可以
#5
pangding2012-09-25 22:53
三电铃 已经回答了一部分了。我再补充一些:

最基本的执行外部命令方法是
:!{cmd}
就会在 shell 里执行 {cmd} 这个命令。{cmd} 可以不止一条指令,管道也可以使用,比如:
:!ls | less

如果想获取某个命令的输出,方法是用 :r 指令,比如:
:r !ls
会把 ls 的输出,插入到当前缓冲区光标所在的行下。

如果当前缓冲区的内容是 bash 指令。比如你的缓冲区内容是单独一行的 ls。那么执行:
:w !bash
可以直接把缓冲区的内容送去执行。这里相当于执行一下 ls 命令。

以上是执行外部指令的一些常用方法。
其实要想截获内部命令的输出,或者将当前缓冲区的内容作为内部命令执行,会需要更多技巧。好在楼主没问。


保存文件的最基本指令是
:w
可以指定一个文件名,就相当于另存为了,比如:
:w abc.txt
会将当前文件保存成一个名为 abc.txt 的文件。

也可以用 :f abc.txt 来开辟一个新的缓冲区,并以 abc.txt 为名。
这和 :w 命令有一些区别。详细情况请自行
:h :w
:h :f
察看。

另外 :wq 或 :x 是存盘并退出(助记符是 Write and Quit 和 eXit)。
如果有多个编辑缓冲区,可以用 :wqa 或 :xa 来全部保存退出(助记符是 Write and Quit All 和 eXit All)。
鉴于存盘退出或不存盘退出使用极为频繁,分别有非冒号命令 ZZ 和 ZQ 对应存和不存盘退出。
#6
madfrogme2012-09-25 23:30
想请教,没看懂这条
如果当前缓冲区的内容是 bash 指令。比如你的缓冲区内容是单独一行的 ls。那么执行:
:w !bash
可以直接把缓冲区的内容送去执行。这里相当于执行一下 ls 命令。

我怎样知道缓冲区里是什么?
#7
槿儿2012-09-26 09:37
回复 3楼 外部三电铃
谢谢了
#8
槿儿2012-09-26 09:39
回复 5楼 pangding
谢谢
#9
pangding2012-09-26 11:09
以下是引用madfrogme在2012-9-25 23:30:40的发言:

想请教,没看懂这条
如果当前缓冲区的内容是 bash 指令。比如你的缓冲区内容是单独一行的 ls。那么执行:
:w !bash
可以直接把缓冲区的内容送去执行。这里相当于执行一下 ls 命令。
 
我怎样知道缓冲区里是什么?

是说你有一个文件本身就是个脚本,按说你不是可以直接在 bash 里 $ bash script.sh 或者 $ ./script.sh 执行吗?
如果你已经用 vi 打开了这个脚本呢?又做了一些改动,那么就可以用 :w !bash 来执行这个脚本。执行之后文件内容不变,如果有输出,会直接输出在 bash 里。

我之前的例子是说,如果你有一个文件,或者是尚未保存的文件(即是一个 vim 缓冲区)也可以,全部内容就是单独的一行 ls。
此时你如此执行,外部 bash 里打印了 ls 输出的结果。这个文件还是单独的一行 ls。


[ 本帖最后由 pangding 于 2012-9-26 11:10 编辑 ]
#10
madfrogme2012-09-26 11:30
以下是引用pangding在2012-9-26 12:09:31的发言:


是说你有一个文件本身就是个脚本,按说你不是可以直接在 bash 里 $ bash script.sh 或者 $ ./script.sh 执行吗?
如果你已经用 vi 打开了这个脚本呢?又做了一些改动,那么就可以用 :w !bash 来执行这个脚本。执行之后文件内容不变,如果有输出,会直接输出在 bash 里。

我之前的例子是说,如果你有一个文件,或者是尚未保存的文件(即是一个 vim 缓冲区)也可以,全部内容就是单独的一行 ls。
此时你如此执行,外部 bash 里打印了 ls 输出的结果。这个文件还是单独的一行 ls。


试了一下,果然如此,谢谢指点了
#11
LShang2012-09-29 13:31
唔 执行外部文件貌似是:!
vimtutor里边有说啊
#12
zhu2240392012-10-02 01:04
linux下 也有像记事本一样的 东西
用那个写程序 1鸟百鸟
反正有 GCC 和 GDB
#13
Zr00ts2012-11-02 21:00
看了 ,最近才想来学linux  买了本鸟哥的linux私房菜
#14
有容就大2012-11-02 22:53
学习到了 好多东西。
1