VI常用命令总结

vim有3中主要的模式:

1.normal mode:当进入vim时,默认的模式就是normal mode。在此模式下,无法输入任何文字,不过可以利用按键命令来执行许多操作命令,例如移动光标位置、复制、删除。
2.insert mode:进入vim输入a、i、或o键。即可进入insert mode,此模式下可以输入文字内容。
3.command-line mode:在norma lmode中输入“:”即会进入command-line mode,在此模式下,可以做一些与输入文字无关的事,例如搜索字符串、保存文件或结束编辑等。

在normal mode下:

w或W:将光标移到下一个字
若输入“w”,则标点符号如“.”,“,”,“/”等字符都被当成一个字

e或E:将光标移到本单字的最后一个字符;如果光标所在位置为本单子的最后一个字符,则跳到下一个单字的最后一个字符。

b:将光标移到本单词的第一个字符;如果光标所在位置为本单词的第一个字符,则跳到上一个单字的第一个字符。

在command-line mode下:
e 文件的路径及名称:打开指定文件


Vi的常用操作命令

显示光标所在的行数、移到指定的行数
^g、^G:按次组合键,则会在最下方处显示光标所造位置的行数,以及文章的总行数。
nG:n为数字,若按下20G,则可将光标移到第20行。

输入模式命令

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

还原

u:按此键就是在执行undo命令,可取消前一次的操作
^r:按此键就是执行redo命令,可以恢复刚才undo的操作

光标移动命令

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行。

d:先按d键,放开后按←键,可将光标位置前一个字符删除;按→键,则会将光标位置的字符删除;按↑键,可将当前光标所在的行与前一行一并删除。按↓键,可将当前的光标所在的行与下一行删除。

nd:n为数字,如按3d,再按下↑键,则删除光标上方的3行,再包括本身1行,共删除4行。若按下↓键,则删除光标下方3行再包括本身1行,共4行。

ndd:若按3dd键,表示删除当前光标位置的1行和下面的2行。

X:删除光标所在位置的前一个字符,与d+←键一样
nx:按4x键,表示删除光标位置后的3个字符和光标本身所在的字符
nX:按4X键,表示删除光标位置之前的4个字符(不包括光标的字符)


拷贝与粘贴命令

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

nyy:其中n为数字键,表示要复制的行数,若按3yy,则连同光标所在的位置的一行,与下面2行一起复制
yw:可复制光标所在位置到整个单词结束的字符
nyw:n表示要复制的单词数目,若按3yw,则会将目前光标所在位置到单词结束,以及后面的2个字一起复制


改变与替换操作命令

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

查询命令

</abc> 向前查询abc
<?abc> 向后查询abc
<n> 向前继续查询 将光标移到下一个找到的字符串上
<N> 向后继续查询 将光标移到上一个找到的字符串上
r:替换光标所在的位置的字符。修改内容不一定要进入insert mode,在normal mode中,只要将光标移到要更改的字符上,然后按R键,就可以输入要查找的字符了。
R:连续替换光标所在的位置的字符,按Esc键停止替换
cc:按cc键可以替换光标所在的那一行

替换字符串: 当要将文章中的某一个字符串全部替换时(例如将所有的temp替换成tmp),使用“:g/temp/s//tmp/g”或“:1,$stemp/tmp /g”命令,可立刻将所有的“temp”替换成“tmp”字符串。如果不是所有的“temp”字符串都要替换时,可用“:g/temp/s//tmp /gc”或“:1/,$stemp/tmp/gc”命令。则找到每一个“temp”字符串时,都会将整行显示在屏幕的下方,可输入“y”或“n”决定是否要替换。

文件编辑、保存及退出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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值