.交换两个字符位置
xp
.上下两行调换
ddp
.把文件内容反转
:g/^/m0/ (未通过) .上下两行合并
J
.删除所有行
dG
.从当前位置删除到行尾
d$
.从当前位置复制到行尾
y$ 如果要粘贴到其他地方 p 就可以了 由于vi 是建立在 EX 上的 所以 当键入 : 时就来到了 EX 命令状态
.
:ab string strings
例如 ":ab usa United States of America" ,
当你在文见里插入 usa 时
United States of America 就蹦出来了
.
:map keys new_seq
定义你当前 键盘命令
.
:set [all]
vi or ex 的编辑状态
如 显示每行 :set nu
.
在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,可刚复制的内容粘贴在光标处的
下面。 .
单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S . s/old_word/new_word/g
这个指令是于在整个文件中替换特定字符串 .光标控制 k:上移 nk 上移n行
j:下移 nj 下移n行 将光标移到第n行,按下 mk
将光标移到第m行,按下 "ay'k
即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等 这样就可以将你常用的需要复用的内容粘贴到不同的寄存器中以备用 想粘贴到某处,直接将光标移到某地,按下 'ap 即可,以此类推,b,c........寄存器等 在当前屏幕中
H 跳到第一行
M 跳到中间一行
L 跳到最后一行 .
表8- 删除命令
删除命令操作
d l 删除当前字符(与x命令功能相同)
d 删除到某一行的开始位置
d ^ 删除到某一行的第一个字符位置(不包括空格或TA B字符)
d w 删除到某个单词的结尾位置
d w 删除到第三个单词的结尾位置
d b 删除到某个单词的开始位置
d W 删除到某个以空格作为分隔符的单词的结尾位置
d B 删除到某个以空格作为分隔符的单词的开始位置
d B 删除到前面7个以空格作为分隔符的单词的开始位置
d) 删除到某个语句的结尾位置
d ) 删除到第四个语句的结尾位置
d( 删除到某个语句的开始位置
d } 删除到某个段落的结尾位置
d { 删除到某个段落的开始位置
d { 删除到当前段落起始位置之前的第7个段落位置
d d 删除当前行
d /t e x t 删除从文本中出现" t e x t"中所指定字样的位置,一直向前直到下一个该字样所出现的
位置(但不包括该字样)之间的内容
d fc 删除从文本中出现字符"c"的位置,一直向前直到下一个该字符所出现的位置(包括
该字符)之间的内容
d tc 删除当前行直到下一个字符" c"所出现位置之间的内容
D 删除到某一行的结尾
d $ 删除到某一行的结尾
d d 删除从当前行所开始的5行内容
d L 删除直到屏幕上最后一行的内容
d H 删除直到屏幕上第一行的内容
d G 删除直到工作缓存区结尾的内容
d G 删除直到工作缓存区开始的内容 修改命令操作
c l 更改当前字符
c w 修改到某个单词的结尾位置
c w 修改到第三个单词的结尾位置
c b 修改到某个单词的开始位置
c W 修改到某个以空格作为分隔符的单词的结尾位置
c B 修改到某个以空格作为分隔符的单词的开始位置
c B 修改到前面7个以空格作为分隔符的单词的开始位置
c 修改到某行的结尾位置
c) 修改到某个语句的结尾位置
c ) 修改到第四个语句的结尾位置
c( 修改到某个语句的开始位置
c } 修改到某个段落的结尾位置
c { 修改到某个段落的开始位置
c { 修改到当前段落起始位置之前的第7个段落位置
c tc 修改当前行直到下一个字符c所出现位置之间的内容
C 修改到某一行的结尾
c c 修改当前行
c c 修改从当前行所开始的5行内容 .重复上一次修改! 表8- 替换命令
替换命令操作
s 将当前字符替换为一个或多个字符
S 将当前行替换为一个或多个字符
s 将从当前字符开始的5个字符替换为一个或多个字符 vi替换使用规则:
:g/s1/s/s2/s3/g
第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换
s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串 . fx
往右移动到 x 字符上
Fx
往左移动到 x 字符上
tx
往右移动到 x 字符前
Tx
往左移动到 x 字符后
(注意:以上四个命令中,其中x是键入的字符)
;
分号,配合 f 和 t 使用,重复一次
,
逗号,配合 f 和 t 使用,反方向重复一次 . vi 环境选项 Solaris ksh noautoindent nomodelines noshowmode
autoprint nonumber noslowopen
noautowrite nonovice tabstop=
nobeautify nooptimize taglength=
directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
noedcompatible prompt tagstack
noerrorbells noreadonly term=vt100
noexrc redraw noterse
flash remap timeout
hardtabs= report= ttytype=vt100
noignorecase scroll= warn
nolisp sections=NHSHH HUuhsh+c window=
nolist shell=/bin/ksh wrapscan
magic shiftwidth= wrapmargin=
mesg noshowmatch nowriteany For C-Shell:
setenv EXINIT "set nu"
For Bourne or Korn Shell:
EXINIT="set nu"; export EXINIT
For Korn Shell Only (alternate method):
typeset -x EXINIT="set nu"
在 .profile 里设置 vi 的环境选项 , 以上均测试过 .标记文本   mchar   用字母char标记当前光标的位置
  `char   移至char所标记处
  'char   移至char标记所在行的开头处
  "     移至当前行上一次所在位置(在光标移动之后)――一个双引号
  ''    移至当前行上第一次所在位置的行的开头处(在光标移动之后)――两个单引号 .
同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。
但是我发现一个BUG:在用CTRL-SHIFT-6切换到上一个文件后,用:args查看多文件vi状态时,
屏幕底部仍然显示目前vi的是刚才的文件。
(在HP-UX,Solaris,AIX上通过) 也可以使用:
:e#
进行切换 .
sco 下VI 要在文本前同样的字符加用
%s/^/要加的内容/g 要在文本后同样的字符加
%s/$/要加的内容/g .
如何去掉文本中的 ^M 硬回车?不必用binary传回去再ascii传回来的方式,用shell或者unix语句实现。 cat filename |tr -d '\015' >newfile
不同的unix系统还存在一些其他不同的命令,如:doscp
sed 也可以实现这个功能. dos2unix filename filename2
反之
unix2dos filename filename2 在vi 中用:$s/^M//g
^是crtl-V crtl-M .如何在"unix命令行"下将一个文件的某字符串用另一个串换掉 sed 's/string1/string2/gp' file1 > file2 .将/etc/hosts下所有的地址都ping 2次 #/usr/bin/sh
#grad /etc/hosts and ping each address
cat /etc/hosts|grep -v '^#' | while read LINE
do
ADDR=`awk '{print $1}'`
for MACHINE in $ADDR
do
ping $MACHINE -n
done
done 到前一个函数[[ ,到下一个函数]] ,括号配对% ,交叉参考Ctrl_] (事先用ctags做索引),回来用e# ` 编辑一个函数:vi -t 函数名 ,编辑加密文本vi -X 在插入模式下ctrl+p,自动补齐剩余单词,以赖规则:tags,以有的单词等等 Vi的替换命令:
:ranges/pat1/pat2/g
其中
: 这是Vi的命令执行界面。
range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+,$-5表示当前行后两行直到全文的倒数第五行,等等。
s 表示其后是一个替换命令。 pat1 这是要查找的一个正则表达式,这篇文章中有一大堆例子。 pat2 这是希望把匹配串变成的模式的正则表达式,这篇文章中有一大堆例子。
g 可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。
. 文件加密 :X
然后系统会提示输入密码,输入密码后存盘退出。
下次编辑时请使用vi -x filename 打开被加密的文件。
. 上下两行合并 J
删除所有行 dG
交换两个字符位置xp
上下两行调换ddp
注:xp 和ddp 应该理解为删除一个字符(x)和删除一行(dd),然后在p(paste),这样便不需
记新命令了.
. 从当前位置删除到行尾d$
从当前位置复制到行尾y$
如果要粘贴到其他地方 p 就可以了
.文件移动
:line1,line2mline3: 将line1--line2 之间的内容移到line3 下 相当于word 的剪切,
:line1,line2tline3: 将line1--line2 之间的内容粘贴到line3 下,相当于word 的粘贴。
:n1,n2w filename:把行N1-N2 之间内容写入新文件filename 中。
.自动添加字符串 :ab string strings
例如 ":ab usa United States of America" 。
当你在文件里插入 usa 时 ,United States of America 就蹦出来了
. 替换命令操作 :g/s1/s/s2/s3/g
第一个g 表示对每一个包括s1 的行都进行替换,第二个g 表示对每一个包括s1 的行的
所有的s2 都用s3 替换,s 表示替换,s2 是要被替换的字符串,他可以和s1 相同(如果相同
的话用//代替),s3 是替换字符串
注:在整个文件中替换特定字符串 :%s/old_word/new_word/g
. 寄存器操作
"?nyy:将当前行及其下n 行的内容保存到寄存器?中,其中?为一个字母,n 为一个数

"?nyw:将当前行及其下n 个字保存到寄存器?中,其中?为一个字母,n 为一个数字
"?nyl:将当前行及其下n 个字符保存到寄存器?中,其中?为一个字母,n 为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是
一个数字
ndd:将当前行及其下共n 行文本删除,并将所删内容放到1 号删除寄存器中。
注:vi 还有有编号的删除缓冲区。撤消命令只能恢复上一次的删除,当且仅当这个删除
是最后一次操作。但是,vi 可以把最近9 次删除的内容都放入9 个编号从1 到9 的缓冲区内。
最近一次删除保存在缓冲区1,次近的在缓冲区2,依此类推。例如,"2p 可以放置第二个
删除缓冲区中的内容。
. 排序
如有一文件,内容为: 运行命令:%!sort 文件内容为: . vi 环境选项
noautoindent nomodelines noshowmode
autoprint nonumber noslowopen
noautowrite nonovice tabstop=
nobeautify nooptimize taglength=
directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
noedcompatible prompt tagstack
noerrorbells noreadonly term=vt100
noexrc redraw noterse
flash remap timeout
hardtabs= report= ttytype=vt100
noignorecase scroll= warn
nolisp sections=NHSHH HUuhsh+c window=
nolist shell=/bin/ksh wrapscan
magic shiftwidth= wrapmargin=
mesg noshowmatch nowriteany
For C-Shell:
setenv EXINIT "set nu"
For Bourne or Korn Shell:
EXINIT="set nu"; export EXINIT
For Korn Shell Only (alternate method):
typeset -x EXINIT="set nu"
在 .profile 里设置 vi 的环境选项 , 以上均测试过
. 重复上一次操作 .:
恢复上一次的操作 u
. :! shell-command 执行SHELL 命令的操作
举例
.删除文件中的几行
到删除的开始处 ma
到删除的结束处 d’a
.拷贝文件中的几行
到拷贝的开始处 ma
到拷贝的结束处 y’a
.替换文件中所有匹配的字符
替换文件中的 lesson 为course
s/lesson/course/g
注意:可能替换含有lesson 的其他词
.替换文件中一个区域的字符
start_line, end_line %s/lesson/course/g 或者
采用宏的方式
‘a,. %s/lesson/course/g #需要定义宏;’.’是指光标所在行
.替换一个文件中某些词
比如替换none 为nothing
查找 /none
替换 cw,输入nothing,按键盘Esc
继续查找 n
替换 .
.重复执行一个shell 命令
编译一个程序
保存编辑后的文件 :w
编译文件 :!make
修改文件后,在保存 :w
再编译 :!!
.在两个文件互拷贝
第一种方法:
编辑源文件 vi source_file
到拷贝的部分开始处 ma
到拷贝的部分结束处 :.,’a w tempfile
退出当前文件 :q
编辑目的文件 vi dest_file
到拷贝的地方 :r tempfile
第二种方法:
编辑源文件 vi source_file
到拷贝的部分开始处 ma
到拷贝的部分结束处 “ay’a
不退出源文件编辑目的文件 :e dest_file
到拷贝的地方 “ap

vi高级命令集锦的更多相关文章

  1. vi常用命令集锦

    转载,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6575232 vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分 ...

  2. vi/vim高级命令集粹

    vi/vim高级命令集粹 (ctrl +v过来 留着以后看) 1.交换两个字符位置 xp 2.上下两行调换 ddp 3.把文件内容反转 :g/^/m0/ (未通过) 4.上下两行合并 J 5.删除所有 ...

  3. vi编辑器命令

    Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功能.v ...

  4. Linux网卡高级命令、IP别名及多网卡绑定 转

    http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100065.html 本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名 ...

  5. Linux入门学习笔记1:VI常用命令

    常用命令 yy 复制 p 黏贴 shift+v 多行选中 shift+ctrl+< 左移 shift+ctrl+> 右移 ndd 删除光标所在行及其后n-1行 i 进入编辑状态 esc 退 ...

  6. gdb调试工具vi编译器命令参考网址

    vi编译器命令:参考http://www.cnblogs.com/junw_china/articles/1708967.html gbd调试命令:参考http://blog.chinaunix.ne ...

  7. Git / 程序员需要知道的12个Git高级命令

    众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强 ...

  8. 【mark】自己整合的vi/vim命令

    又发现一篇很好的 http://blog.chinaunix.net/uid-16759545-id-4891666.html 又发现一个很好的系列:有空闲要精读一下: http://www.cnbl ...

  9. vi 常用命令行

    vi 常用命令行 1.vi 模式  a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了.  b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作.等按下‘i,I ...

随机推荐

  1. memcached 经常使用命令最全总结大全

    1.首先.总结一下memcached的一些基本设置 -p 监听的port -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcached ...

  2. Blue Jeans - poj 3080(后缀数组)

    大致题意: 给出n个长度为60的DNA基因(A腺嘌呤 G鸟嘌呤 T胸腺嘧啶 C胞嘧啶)序列,求出他们的最长公共子序列 使用后缀数组解决 #include<stdio.h> #include ...

  3. js实现pdf对页面的打印

    //-------------------------------点击打印的图标--------------------------------- <div class="dcsc&q ...

  4. SQL SERVER 2000安装教程图文详解

    注意:Windows XP不能装企业版.win2000\win2003服务器安装企业版一.硬件和操作系统要求 下表说明安装 Microsoft SQL Server 2000 或 SQL Server ...

  5. Spring Hello World 实例

    Hello World 实例 让我们使用 Spring 框架开始实际的编程.在你开始使用 Spring 框架编写第一个例子之前,你必须确保已经正确地设置了 Spring 环境,正如在 Spring—— ...

  6. Eclipse 运行程序

    运行 Java 程序 我们可以在 Package Explorer 视图 可以在 Package Explorer 视图中快速运行 Java 程序. Package Explorer 视图: 鼠标右击 ...

  7. window7电脑git设置快捷命令

    平常git开发的一些命令来回重复的敲,有点麻烦,这里给git的常用的命令设置了快捷键,很方便开发. 我这个是window7环境,下面开始 1.home键 + r 打开运行窗口,点击确定进入黑窗口 2. ...

  8. HttpWatch使用教程

    一 概述: HttpWatch强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功 ...

  9. HDU4771(2013 Asia Hangzhou Regional Contest )

    http://acm.hdu.edu.cn/showproblem.php?pid=4771 题目大意: 给你一幅图(N*M)“@”是起点,"#"是墙,“.”是路,然后图上有K个珠 ...

  10. 《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?

    原创文章,欢迎转载.转载请注明:关东升的博客 使用var还是let? 在我们开发过程中啊什么时候定义关键字为var,还是定义为let呢? 其实啊都能满足我们的需求,那我们到底应该如何选择? 例如:可以 ...