Vi 编辑器命令

翱翔天空♂鹏 发表于 2008-11-11 14:46:46

本文约定:
# vim 表示在 shell 下输入 vim
大写字母如 A 表示键入Shift+a
^g 表示 Ctrl+g
:x 表示在命令模式键入'冒号'与x
普通命令如 i 都是在命令模式键入直接响应

【帮助】
:help   
(帮助我还不大会使用,以后补上 :)

【命令模式与插入模式】
vim 刚打开时处于命令模式,此时任何输入被解释为命令。
要进入插入模式, 输入 i 命令(插入模式在后面详细说明)


打开:
# vim                          打开一个新的编辑
# vim file                    打开 file
# vim +n file               打开 file 并将将光标移动到第n行
# vim +/word file        打开 file 并定位于word第一次出现处

退出:
在命令模式下键入
:q               退出
:q!              强制退出(丢失修改)
:w              保存
:w!             强制写入
:w file        保存为file
:x               保存并退出, 等效命令为 :wq

读入文件:
:r file           读入file
:nr file         读入file放入第n行之后


在文本中移动:
h = 前, j = 下, k = 上, l = 后。 (也可在命令前加数字,如 3h 为前移3格)
                 (Tips: vim 许多命令可以在前面加上数字来表示执行次数,试试看哦)
G                跳到文件尾
nG              跳到第n行 (同命令 :n)
^g              显示行号
0或^           跳到行首
$                跳到行尾
w               跳到下个单词首字符
e                跳到下个单词尾字符
b                跳到前一个单词首字符
-                 跳到上一行行首
+                跳到下一行行首
n|               跳到当前行第n列
L                跳到本页最后一行行首
M                跳到本页中间一行行首
H                跳到本页首行行首

光标定位:
f$               跳至本行下一个 $ 处
F$              跳至本行前一个 $ 处
t$               跳至本行下一个 $ 前一个字符
T$               跳至本行前一个 $ 后一个字符

显示调整:(光标自动做相应移位)
^D               下翻半页
^U               上翻半页
^F               下翻一页
^B               上翻一页

显示设置:(几个常用的)
:set number               显示行号
:set showmode          显示当前模式
:set showmatch         指示匹配括号
:set autoindent          自动缩进
:set tabstop=value    设置 tab 宽度,默认是8

插入模式:
i                在当前字符前插入 (试试看 4i hello 的效果 :)
I                在行首插入
a               在当前字符后插入
A               在行末插入
o               在下插入新行
O              在上插入新行
J                把下一行并入当前行

删除(剪切):
x                删除当前字符
X                删除前一个字符
dw            删除当前字符所在单词包括词尾空格(只删除光标后的部分)
dd             删除当前行
d$             删除当前字符到本行尾 (同命令 D)
:m,n d       删除 m~n行
:nd            删除第n行

修改:
R               从当前字符开始改写
cw             修改当前单词 (从当前字符开始修改)
s                修改当前字符
r                修改当前字符(只修改一个字符)
S                修改当前行 (同命令 cc)
C                修改从当前字符到行尾的内容
c + 任何光标定位命令,修改目标内容, 如 cfa 修改当前字符到下一个 a 间的内容


Undo:
u                撤销前一步操作(此命令在各种系统实现有所不同,在我使用的FreeBSD 4.11上功能同windows下撤销)
U               撤销本行所有操作

Redo:
^R              重做前次 undo 的操作 (同 :redo)


查找:
:/word            向下查找word
:?word           向上查找word
n                     以当前查找方向同向查找下一个word
N                    以当前查找方向反向查找下一个word
                 例: :?love 查找光标前出现的第一个love,按 n 查找
                 更前一个love。
%                  查找匹配的括号(程序员最爱啊)

替换:
:s/src/dst               将本行搜索到的第一个 src 替换为 dst
:%s/src/dst            将全文所有的 src 替换为 dst
:s/src/dst/g            将本行的 src 替换为 dst
:$,$... s/src/dst/g      在指定范围内替换src为dst,其中
                 $,$... 为指定行号,例: :2,5,6 s/hi/hello/g

复制与粘贴:
yy               复制当前行
yw              复制单词(从当前字符开始复制)
y + 光标定位命令,复制目标内容,如 yFa
任何删除命令删除的内容都在buffer中,可以进行粘贴。
p                在前粘贴
P                在后粘贴
                  注意:在以行为单位粘贴时与字符是不同的
:m,n copy x   将m~n行内容复制到 x 行之后   #copy可以简写为cp
:m,n move x 将m~n行内容移动到 x 行之后   #move可以简写为mo

映射,缩写和标记:
m$               用$字母标记当前行
'$                 跳到 $ 标记的行
:map $ command        将command命令或键映射到$
:ab $ char-string         给char-string一个缩写$,在文本中插入$会自动展开

在vim中运行shell命令:
:! command 如:
:! ls
:! tcsh
:! gcc test.c     直接编译编辑的内容(要先保存)

关键词(Tag): vi


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定