vi常用命令
^ 移动到该行第一个非空格的字符处|a| N a 在光标后添加文本 (N 次)
w 向前移动一个单词,将符号或标点当作单词处理
W 向前移动一个单词,不把符号或标点当作单词处理
b 向后移动一个单词,把符号或标点当作单词处理
B 向后移动一个单词,不把符号或标点当作单词处理
0 到行首
$ 到行尾
gg 到页首
G 到页末
行号+G 跳转到指定行
Ctrl+g 查询当前行信息和当前文件信息
CTRL+U 向上滚动半屏
CTRL+D 向下滚动半屏
ZZ:退出vi并保存
ZQ: =:!q
dw:删除光标之后的单词剩余部分。
rx:将当前光标下的字符更改为x(x为任意字符)
~: 更改当前光标下的字符的大小写
u: 撤销最后执行的命令
U: 修正之前对该行的操作
Ctrl+R:Redo
/ + 字符串:即可在当前文件查找相应的字符串。
.*[]^%~$ 在Vi中具有特殊含义,若需要查找则应该加上转义字符"/"
% 查找配对的括号。
s/old/new/g:替换old为new,若没有g则表示只替换一个。
若要每个替换都向用户询问则应该用gc选项
对代码自动格式化 gg=G
|A| N A 在行末添加文本 (N 次)
|i| N i 在光标签插入文本 (N 次) (亦:
<Insert>
)
|I| N I 在当前行的第一个非空白字符前插入文本 (N 次)
|gI| N gI 在第一栏中插入文本 (N 次)
|o| N o 在当前行下方开始新行,添加文本 (N 次)
|O| N O 在当前行上方开始新行,添加文本 (N 次)
|:shell| :sh[ell] 开启一个 shell
|:!| :!{command}
通过一个 shell 执行命令{command}
|p| N p 将一个寄存器的内容放置在光标位置后 (N 次)
|P| N P 将一个寄存器的内容放置在光标位置前 (N 次)
|]p| N ]p 如 p, 但调整当前行的缩进
|[p| N [p 如 P, 但调整当前行的缩进
|gp| N gp 如 p, 但将光标留在新文本之后
|gP| N gP 如 P, 但将光标留在新文本之后
v_y vy 将加亮的文本剪切至一个寄存器
|v| v 开始加亮字符 } 移动光标或使用
|V| V 开始以行方式加亮文本 } 操作符来影响被
|CTRL-V|CTRL-V
开始以块方式加亮文本 } 加亮的文本
|v_d|{visual}
d 删除加亮的文本
|v_~|{visual}
~ 翻转高亮文本的大小写
|v_u|{visual}
u 改高亮的文本为小写 (U大 u小)
|v_aw| N aw 选择 "一个单词"
|v_iw| N iw 选择 "内含单词"
|v_aW| N aW 选择 "一个字串"
|v_iW| N iW 选择 "内含字串"
|v_as| N as 选择 "一个句子"
|v_is| N is 选择 "内含句子"
|v_ap| N ap 选择 "选择一个段落"
|v_ip| N ip 选择 "内含段落"
|v_ab| N ab 选择 "一个块" (从 "[(" 至 "])")
|v_ib| N ib 选择 "内含块" (从 "[(" 到 "])")
|v_aB| N aB 选择 "一个大块" (从 "[{" 到 "]}
")
|v_iB| N iB 选择 "内含大块" (从 "[{" 到 "]}
")
:map :ma[p]{lhs}
{rhs}
在普通及可视模式下将{rhs}
映射为{lhs}
:map! :ma[p]!{lhs}
{rhs}
在插入及命令行模式下将{rhs}
映射为{lhs}
|:set| :se[t] 显示所有被改动的选项
|:set| :se[t] all 显示所有非 termcap 选项
|:set| :se[t] termcap 显示所有 termcap 选项
|:set| :se[t]{option}
? 显示{option}
的值
|:set| :se[t]{option}
& 重置{option}
为其缺省值。
OPTIONS :
|'cindent'| |'cin'| 实现 C 程序的缩进
|'number'| |'nu'| 行前打印行号
|'smartindent'| |'si'| C 程序智能自动缩进
|:mkexrc| :mk[exrc][!] [file] 将当前的键盘映射, 缩写, 及设置
写入文件 [file] (缺省: ".exrc";
使用 ! 覆盖文件)
|:mkvimrc| :mkv[imrc][!] [file]
如 ":mkexrc", 但缺省为 ".vimrc"
:split 将窗口分割成两部分
:vsplit{file}
同上,但垂直分割
和vimdiff一样
1. Ctrl-w K(把当前窗口移到最上边)
2. Ctrl-w H(把当前窗口移到最左边)
3. Ctrl-w J(把当前窗口移到最下边)
4. Ctrl-w L(把当前窗口移到最右边)
Ctrl-w, w
复制vi里的东西:
在Select或visual模式下按 "*y 这三个键,就把你选择的内容拷到剪贴板里去了,然后<c-v>就可以了
看16进制:
:%!xxd
:%!xxd -r 回来
删除掉所有的空行:
只有一个回车 :g/^$/d
行中只有一些空格 :g/^/s*$/d