linux vi 的一些基本操作

跳行

跳转到第n行
:n

字符串搜索和替换

从当前往右移动到有str的地方
:/str/

从当前往左移动到有str的地方
: ?str?

将包含有str的行写到文件file中
:/str/w file

将从str1开始到str2结束的内容写入到file文件中
:/str1/,/str2/w file

将找到的第一个str1替换为str2
:s/str1/str2/

将当前行找到的所有str1替换为str2
:s/str2/str2/g

将从n1行至n2行找到的所有的str1替换为str2
:n1,n2s/str1/str2/g

将从第1行至当前行的所有str1替换为str2
:1,.s/str1/str2/g

将从当前行至最后一行的所有str1替换为str2
:.,$s/str1/str2/g

将从第1行至最后一行的所有str1替换为str2,并在替换前询问
:1,$s/str1/str2/gc

文本的复制、移动和删除

将n1行至n2行复制到n3后面
:n1,n2 co n3

将n1行至n2行移动到n3后面
:n1,n2 m n3

删除当前行
:d

删除第n行
:nd

删除n1行至n2行
:n1,n2 d

删除当前行至最后一行
:.,$d

删除从str1开始至str2为止的内容
:/str1/,/str2/d

文件相关命令

当前编辑的内容存盘
:w

当前编辑的内容写到file中
:w file

从n1行至n2行写到file中
:n1,n2w file

第n行写到文件file中
:nw file

从第1行至当前行写到file中
:1,.w file

从当前行至最后一行写到file中
:.,$w file

打开另一个文件file
:r file

新建file文件
:e file

当前文件改名为file
:f file

执行Shell命令

运行Shell命令Cmd
:!Cmd        

将n1行至n2行做为Cmd命令的输入,若不指定行则整个文件做为Cmd的输入
:n1,n2 w !Cmd

将命令运行的结果写入光标所在行的下一行(命令不能是别名)
:r !Cmd

设置Vi环境

自动缩进
:set autoindent

取消自动缩进
:set noautoindent

在编辑文件时显示行号
:set number

不显示行号
:set nonumber      

在屏幕底部显示光标所在的行,列位置
:set ruler         

不显示行,列位置
:set noruler       

设置显示制表符的空格字符个数
:set tabstop=value

设置显示器的右页边。当输入进入所设置的页边时,编辑器自动回车换行
:set wrapmargin=value

显示设置的所有选项
:set 

显示所欲可以设置的选项
:set all

退出Vi

退出
:q   

保存并退出
:qw  

不保存退出
:q!   

Comments are closed.