VIM常用命令介绍

vi 之使用方法
============================


..指令模式
=========
游标之移动
h       向左移一个字元。
j       向上移一个字元。
k       向下移一个字元。
l       向右移一个字元。
0       移至该行之首
$       移至该行之末。
^       移至该行的第一个字元处。
H       移至视窗的第一列。
M       移至视窗的中间那列。
L       移至视窗的最後一列。
G       移至该档案的最後一列。
+       移至下一列的第一个字元处。
-       移至上一列的第一个字元处。
(       移至该句之首。 (注一)
)       移至该句之末。
{       移至该段落之首。 (注二)
}       移至该段落之末。
nG      移至该档案的第 n 列。
n+      移至游标所在位置之後的第 n 列。
n-      移至游标所在位置之前的第 n 列。
<Ctrl><g>       会显示该行之行号、档案名称、档案中最末行之行号、游标
所在行号占总行号之百分比。

注一:句子(sentence)在vi中是指以『!』、『.』或『?』结束的一串字。
注二:段落(paragraph)在vi中是指以空白行隔开的文字。

..视窗的移动
===========
<Ctrl><f>       视窗往下卷一页。
<Ctrl><b>       视窗往上卷一页。
<Ctrl><d>       视窗往下卷半页。
<Ctrl><u>       视窗往上卷半页。
<Ctrl><e>       视窗往下卷一行。
<Ctrl><y>       视窗往上卷一行。

..删除、复制及修改指令介绍 (此单元较少使用)
=========================
d(delete)、c(change)和y(yank)这一类的指令在 vi 中的指令格式为:
Operator + Scope = command
(运算子)   (范围)
运算子:
d       删除指令。删除资料,但会将删除资料复制到记忆体缓冲区。
y       将资料(字组、行列、句子或段落)复制到缓冲区。
p       放置(put)指令,与 d 和 y 配和使用。可将最後delete或yank的资
料放置於游标所在位置之行列下。
c       修改(change)指令,类似delete与insert的组和。删除一个字组、句
子等之资料,并插入新键资料。

范围:
e       由游标所在位置至该字串的最後一个字元。
w       由游标所在位置至下一个字串的第一个字元。
b       由游标所在位置至前一个字串的第一个字元。
$       由游标所在位置至该行的最後一个字元。
0       由游标所在位置至该行的第一个字元。
)       由游标所在位置至下一个句子的第一个字元。
(       由游标所在位置至该句子的第一个字元。
{       由游标所在位置至该段落的最後一个字元。
}       由游标所在位置至该段落的第一个字元。

整行动作
dd      删除整行。
D       以行为单位,删除游标後之所有字元。
cc      修改整行的内容。
yy      yank整行,使游标所在该行复制到记忆体缓冲区。

..删除与修改
===========
x       删除游标所在该字元。
X       删除游标所在之前一字元。
dd      删除游标所在该行。
r       用接於此指令之後的字元取代(replace)游标所在字元。
如: ra 将游标所在字元以 a 取代之。
R       进入取代状态,直到《ESC》为止。
s       删除游标所在之字元,并进入输入模式直到《ESC》。
S       删除游标所在之该行资料,并进入输入模式直到《ESC》。

..搬移与复制
==========
利用 delete 及 put 指令可完成资料搬移之目的。
利用 yank 及 put 指令可完成资料复制之目的。
yank 和 delete 可将指定的资料复制到记忆体缓冲区,而藉由 put 指令
可将缓冲区内的资料复制到萤幕上。
例:
搬移一行        .在该行执行 dd
.游标移至目的地
.执行 p
复制一行        .在该行执行 yy
.游标移至目的地
.执行 p

..指令重复
=========
在指令模式中,可在指令前面加入一数字 n,则此指令动作会重复执行 n
次。
例:
删除10行                .10dd
复制10行                .10yy
.游标移至目的地
.p
指标往下移10行  .10j

..取消前一动作(Undo)
===================
即复原执行上一指令前的内容。

u       恢复最後一个指令之前的结果。
U       恢复游标该行之所有改变。

..搜寻
=====
在vi中可搜寻某一字串,使游标移至该处。

/字串           往游标之後寻找该字串。
?字串           往游标之前寻找该字串。
n               往下继续寻找下一个相同的字串。
N               往上继续寻找下一个相同的字串。

..环境的设定
===========
:set nu                设定资料的行号。
:set nonu              取消行号设定。
:set ai                自动内缩。
:set noai              取消自动内缩。

自动内缩(automatic indentation)
在编辑文件或程式时,有时会遇到需要内缩的状况,『:set ai』即提供自
动内缩的功能,用下例解释之:
.vi test
.(进入编辑视窗後)
this is the test for auto indent
《Tab》start indent           ← :set ai (设自动内缩)
《Tab》data
《Tab》data
《Tab》data                   ← :set noai (取消自动内缩)
the end of auto indent.
.注:<Ctrl><d> 可删除《Tab》字元。


分屏编辑

==============================================

水平切割:
:split
:split xxx(要打开的文件名)
:new(在新窗口创建文件)

<CTRL+W> k:跳转到上面的窗口 (若为大写K,则是把当前窗口调至上方)
<CTRL+W> j:跳转到下面的窗口 (类似于上)

垂直切割:
:vsplit
:vsplit xxx(要打开的文件名)
:vnew(在新窗口创建文件)

<CTRL+W> h:跳转到左边的窗口 (若为大写H,则是把当前窗口调至左方)
<CTRL+W> l:跳转到右边的窗口 (类似于上)

<CTRL+W> w:在窗口之间跳转
<CTRL+W> +:扩大窗口 (或在当前窗口位置,输入命令:res +9)
<CTRL+W> -:缩小窗口



Tab多文档编辑

============================================

操作标签页的基本命令如下:

* :tabnew : 打开一个新的标签页。
* :tabprevious : 回到上一个标签页。
* :tabnext : 到下一个标签页。


每次新建或者切换标签,都要手动键入相关命令效率不是很高,于是我们可以设置快捷键,贴上我的配置:

1. :map  <F6> :tabprevious<CR>
2. :map  <F7> :tabnext<CR>
3. :map  <F5> :tabnew<CR>
4. :imap  <F6> <ESC>:tabprevious<CR>i
5. :imap  <F6> <ESC>:tabnext<CR>i
6. :imap  <F5> <ESC>:tabnew<CR>i

注意:配置文件一般在/etc/vimrc,或者~/.vimrc具体情况自己把握。这样设置之后F5就就是新建一个标签页,F6切换到前一个标签,F7切换到下一个标签。当然具体哪个键看自己习惯了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值