vi高级命令集锦
.交换两个字符位置
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高级命令集锦的更多相关文章
- vi常用命令集锦
转载,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6575232 vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分 ...
- vi/vim高级命令集粹
vi/vim高级命令集粹 (ctrl +v过来 留着以后看) 1.交换两个字符位置 xp 2.上下两行调换 ddp 3.把文件内容反转 :g/^/m0/ (未通过) 4.上下两行合并 J 5.删除所有 ...
- vi编辑器命令
Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功能.v ...
- Linux网卡高级命令、IP别名及多网卡绑定 转
http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100065.html 本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名 ...
- Linux入门学习笔记1:VI常用命令
常用命令 yy 复制 p 黏贴 shift+v 多行选中 shift+ctrl+< 左移 shift+ctrl+> 右移 ndd 删除光标所在行及其后n-1行 i 进入编辑状态 esc 退 ...
- gdb调试工具vi编译器命令参考网址
vi编译器命令:参考http://www.cnblogs.com/junw_china/articles/1708967.html gbd调试命令:参考http://blog.chinaunix.ne ...
- Git / 程序员需要知道的12个Git高级命令
众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强 ...
- 【mark】自己整合的vi/vim命令
又发现一篇很好的 http://blog.chinaunix.net/uid-16759545-id-4891666.html 又发现一个很好的系列:有空闲要精读一下: http://www.cnbl ...
- vi 常用命令行
vi 常用命令行 1.vi 模式 a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了. b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作.等按下‘i,I ...
随机推荐
- Android Studio--NDK编译C代码为.so文件,JNI调用
前言: 从Android Studio开始,就支持jni和.so库调用了. 环境: Windows 7+Android Studio2.1.2+NDK版本:android-ndk-r10e 准备工作: ...
- opus 规范 与参数解析
bytestream_put_buffer(&p, "OpusHead", 8); bytestream_put_byte(&p, 1); /* Version * ...
- Redis特性和应用场景
Redis特性 速度快 Redis使用标准C编写实现,而且将所有数据加载到内存中,所以速度非常快.官方提供的数据表明,在一个普通的Linux机器上,Redis读写速度分别达到81000/s和11000 ...
- js instanceof (2)
instanceof运算符可以用来判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上.实例一:普遍用法 A instanceof B :检测B.prototype是否存在于参 ...
- PHPthinking邀请您一起赚Money
原文地址:http://bbs.phpthinking.com/thread-790-1-1.html 为了让大家工作或者学习之余.可以赚些money,PHPthinking为大家推荐一个赚钱的站点! ...
- Nginx 的多站点配置
当我们有了一个 VPS 主机以后,为了不浪费 VPS 的强大资源(相比共享主机1000多个站点挤在一台机器上),往往有想让 VPS 做点什么的想法,银子不能白花啊:).放置多个网站或者博客是个不错的想 ...
- 一个fork的面试题——fork + 缓存区
update : 20140512 题目:请问下面的程序一共输出多少个“-”? #include <stdio.h> #include <sys/types.h> #inclu ...
- 《从零开始学Swift》学习笔记(Day 40)——析构函数
原创文章,欢迎转载.转载请注明:关东升的博客 与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程.在析构过程中也会调用一种特殊的方法deinit,称为析构函数.析构函数dein ...
- 巨蟒python全栈开发linux之centos3
1.作业讲解 (1)递归创建文件夹/tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng} 下面中的路径没有必要换,在哪里创建都行,根目录下或者tmp目录下或者其 ...
- Springboot中jar 重复冲突 导致 静态资源加载问题!
这个jar 其实在common 中也是存在的 ,当时没注意看,就导入进来了,然后 css js 等一些静态资源全部不能加载!具体原因我没去深挖!后面找个时间深挖下,先填坑!