翱翔天空♂鹏 » 日志 » Vi 编辑器命令
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 直接编译编辑的内容(要先保存)
