VI指令大全

zz:http://topic.csdn.net/t/20051019/11/4336142.html

输入模式命令

输入

命令作用
<a>         在光标后输入文本
<A>         在当前行末尾输入文本
<i>         在光标前输入文本
<I>         在当前行开始输入文本
<o>         在当前行后输入新一行
<O>         在当前行前输入新一行

光标移动命令

光标移动

命令作用
0 移动到光标所在列的最前面 [Home]  
$ 移动到光标所在列的最後面 [End]  
[CTRL][d] 向下半页 [PageDown]  
[CTRL][f] 向下一页      
[CTRL][u] 向上半页&#63733;      
[CTRL][b] 向上一页 [PageUp]    
H 移动到视窗的第一列  
M 移动到视窗的中间列  
L 移动到视窗的最後列                                  
b 移动到下个字的第一个字母  
w 移动到上个字的第一个字母                    
e 移动到下个字的最後一个字母  
^ 移动到光标所在列的第一个非空白字元  
n- 减号移动到上一列的第一个非空白字元前面加上数字可以指定移动到以上   n   列        
n+ 加号移动到下一列的第一个非空白字元前面加上数字可以指定移动到以下   n   列  
nG 直接用数字   n   加上大写   G   移动到第   n   列  
) 光标所在位置到下个句子的第一个字母
( 光标所在位置到该句子的第一个字母
} 光标所在位置到该段落的最後一个字母
{ 光标所在位置到该段落的第一个字母
<h>         向前移动一个字符
<j>         向上移动一行
<k>         向下移动一行
<l>         向后移动一个字符

fx
往右移动到   x   字符上
Fx
往左移动到   x   字符上
tx
往右移动到   x   字符前
Tx
往左移动到   x   字符后
(注意:以上四个命令中,其中x是键入的字符)
;
分号,配合   f   和   t   使用,重复一次  
,
逗号,配合   f   和   t   使用,反方向重复一次
%   -   移至匹配的括号
shift   +G   跳到文件尾

交换两个字符位置
xp
上下两行调换
ddp
把文件内容反转
:g/^/m0/

删除操作命令

删除操作

命令作用
<x>         删除光标所在的字符
<dw>         删除光标所在的单词
<d$>         删除光标至行尾的所有字符
<D>         同 <d$>
<dd>         删除当前行

可在删除命令前加上数字,如 <5x> 表示删除5行。


改变与替换操作命令

改变与替换操作

命令作用
<r>         替换光标所在的字符
<R>         替换字符序列
<cw>         替换一个单词
<ce>         同 <cw>
<cb>         替换光标所在的前一字符
<c$>         替换自光标位置至行尾的所有字符
<C>         同 <c$>
<cc>         替换当前行
全文替换:“g/被替换字符串/s//替换字符串/g”
  > >
  < <


查询命令

查询

命令作用
</abc>         向前查询abc
<?abc>         向后查询abc
<n>         向前继续查询
<N>         向后继续查询


拷贝与粘贴命令
命令作用
/yw         将光标所在单词拷入剪贴板
y$         将光标至行尾的字符拷入剪贴板
Y       同 <y$>
yy         将当前行拷入剪贴板
p         将剪贴板中的内容粘贴在光标后
P         将剪贴板中的内容粘贴在光标前


文件编辑、保存及退出vi命令
命令作用
:q         不包存退出
:q!         不保存强制性退出
:w         保存编辑
:wfilename         存入文件filename中
:w!filename         强制性存入文件filename中
:wq   /   :x   /   ZZ     保存退出
       
编辑数个文件(利用vi   filename(s))进入vi后)
:args     显示编辑名单中的各个文件名
:n&#58853; 读入编辑名单中的下一个文件
:rew&#58853; 读入编辑名单中的第一个文件
:e#&#58853; 读入编辑名单内的前一个文件
:e   file   &#58853; 读入另一个文件进vi(此文件可不在编辑名单内),
若原文件经修改还没有存档,则应先以:   w   存档。  
:e!   file 强迫读入另一个文件进入vi,原文件不作存档动作。
:!command 暂时退出vi并执行shell指令,执行完毕后再回到vi。
:sh 暂时退出vi到系统下,结束时按Ctrl   +   d则回到vi。
vi   filename 进入vi并读入指定名称的文件(新、旧文件均可)。
vi   +n   filename 进入vi并且由文件的第几行开始。
vi   +filename 进入vi并且由文件的最后一行开始。
vi   +   /word   filename   &#58853; 进入vi并且由文件的word这个字开始。
vi   filename(   s   )   进入vi并且将各指定文件列入名单内,第一个文件先读入。


清理掉DOS文本中的^M,可以在:1,$s/^M//g,其中^是用CTRL+v上去的M是回车形成的

正则表达式
在查找、替换命令   使用以下正则表达式元字符,功能强大。
也可用在:g/命令中

&   代表最近匹配串
~   代表最近替换串
.   任一字符
^   行首   或   表示   非  
$   行末
\ <   词首
\>   词尾
*                         0次或多次
\(   \)     分节指定与其中正则式匹配的部分,在替换时候可以用   \1   \2   \3     ...   引用匹配部分
[]   表示选择
-   表示范围   ,例如   [0-9]代表数字,[a-z]代表小写字母   [^0-9a-zA-Z]   代表非数字和大小写字母
\{m,n\}   前面部分的从   m   次   至   n   次出现,m   n   为数值
\{m\}                                 精确m次出现
\{m,\}                               大于等于m次出现

以下举几例子,欢迎大家提出问题来共同探讨。
1.在20列后插入串
:%s/^.\{20\}/&insert   something   here/g

2.把C++语言里   //注释   修改为   /*   */   格式
:%s/\/\/\(.*\)$/\/\*\1\*\//g

3.在建存储过程的sql文本里,在每个create   procedure   procname()  
    前加上drop   procedure     procname   ;     [     ]里输入的是一个空格和TAB键。
:%s/^[   ]*[cC][rR][eE][Aa][tT][eE][   ]*[pP][Rr][oO][cC][eE][dD][uU][rR][eE][  

]*\([^()*\]/drop   procedure   \1;Ctrl_VCtrl_Mcreate   procedure   \1/g


宏命令
首先,宏的实质是将命令存储在寄存器中,如下是错误的
qa
"ayw
q
寄存器a冲突,宏挺有用的


vi的配置文件
另一方面,用户可以在主目录中创建.exrc环境文件,用set打入  
选项,每次调用vi时,就会读入.exrc中的指令与设置。下面是  
.exrc环境文件的实例:  

set   wrapmarging=8  

set   showmode  

set   autoindent  

set   number


vim配置文件:
set   nobackup
set   directory=$VIM/swp   "There   stores   all   vim   swap   files
set   ignorecase   smartcase   "\C   to   force   vim   to   search   case   sensibly.
set   linebreak   "let   vim   don 't   split   a   word   when   linewrap,   note:   line   doesn 't   be   split   really
if   has( 'multi_byte_ime ')
        highlight   Cursor   guibg=Green   guifg=NONE
        highlight   CursorIM   guibg=Purple   guifg=NONE
endif

set   autoindent
set   smartindent
set   tabstop=4   "treat   <TAB>   as   four   spaces,   stores   <TAB>   instead   of   spaces
set   shiftwidth=4   "be   used   only   when   " < < "   command   is   pressed

"Turn   off   IME   when   insert   mode   and   search   mode
set   iminsert=0
set   imsearch=-1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值