Vim
选项:
-b 打开二进制文件文件. 虽然不使用此参数也能打开二进制文件, 但是在保存的时候会有转换, 导致难以想象的问题。
命令:
:wq 保存并退出
:q! 不保存并退出, 同 ZQ
:x 退出,如果文件更改则保存
ZZ 退出,如果文件更改则保存(按住Shift,再按两次z)
h 左
j or (Ctrl + n) 下 (只有后者可以用在 Ctrl + n 的自动补齐功能里)
k or (Ctrl + p) 上 (只有后者可以用在 Ctrl + n 的自动补齐功能里)
l 右
(Ctrl + h/j/k/l/t/b) 在 split 窗口中向 上/下/左/右/顶部/底部 切换
i 在光标前插入 I 在行首插入
a 在光标后插入 A 在行末插入
o 在下一行插入 O 在上一行插入
x 删除当前字符 X 删除前一个字符
w 前进到下一单词首字母
W 前进到下一个单词首字母(忽略标点)
b 退回前一个单词首字母
B 退回前一个单词首字母(忽略标点)
e 前进到下一单词末字母
E 前进到下一单词末字母(忽略标点)
ge 退回到下一单词末字母
0 移动光标至行首
^ 移动光标之行首字母
$ 移动光标至行尾
( 移动到上一句首字母(每句一 '. ' 点号后加一个空格分隔).
) 移动到下一句首字母.
{ 移动到上一段落之前的一个空行(段落是以一个空行下面开始的一段文字).
} 移动到下一段落之前的一个空行.
[{ 移动到上一层对应大括号的 { 处. 对于编程来说, 就是跳到嵌套的外层开括号处.
]} 移动到上一层对应大括号的 } 处. 对于编程来说, 就是跳到嵌套的外层闭括号处.
[[ 移动少上一顶层大括号 { 处. 对于编程来说, 就是跳到上一个函数定义的开始.
]] 移动到下一顶层大括号 } 处. 对于编程来说, 就是跳到下一个函数定义的开始.
xzz (x 是数字) 将第 x 行翻滚到屏幕中央, 并将光标设置在该行首.
gg 移动光标之文件开头
G 移动光标之文件最后一行首
H 移动光标到屏幕上的第一行
M 移动光标到屏幕的中间行
L 移动光标到屏幕上的最后一行
% 移动光标到匹配的括号上. ( ), { }, [ ], < >
(Ctrl+g) 获得光标当前行位置等信息
(Ctrl+f) 向下翻页
(Ctrl+b) 向上翻页
(Ctrl+d) 将光标向下移动半个屏幕
(Ctrl+u) 将光标向上移动半个屏幕
'. 移动光标至上次修改的行首
`. 移动光标至上次修改的点
fx(x是一个字符) 在当前行从光标处向右查找字符 x , 并将光标移至 x
Fx(x是一个字符) 在当前行从光标处向左查找字符 x , 并将光标移至 x
tx(x是一个字符) 在当前行从光标处向右查找字符 x , 并将光标移至 x 的左一个字符
Tx(x是一个字符) 在当前行从光标处向左查找字符 x , 并将光标移至 x 的右一个字符
; 在当前行沿着同样的方向查找字符 x , 并将光标移至 x
, 在当前行沿着相反的方向查找字符 x , 并将光标移至 x
>> 将当前行向右缩进一个单位
<< 将当前行向左缩进一个单位
= 自动缩进
(Ctrl + v) 标记块操作起点(什么是块操作? 答: 对一个 "方块" 的文字的操作.)
移动光标产生文字块
I 在块首插入字符
A 在块尾插入字符
vi/va 对一行内的成对出现的符号所包含的内容进行选择
假设有如下字符串: int fun(char *f1(int a, int b), int c) ;
此时, 光标在绿色背景字符处, 则
命令 所选择的文字
vi) int a, int b
v2i) char *f1(int a, int b), int c
v3i) 无
va) (int a, int b)
v2a) (char *f1(int a, int b), int c)
/xxx 向下查找 xxx (支持正则表达式)
?xxx 向上查找 xxx (支持正则表达式)
* 向下查找光标所在单词(无论光标在单词什么位置)
# 向上查找光标所在单词(无论光标在单词什么位置)
g* 向上查找光标所在单词, 可以匹配在字串中的单词(无论光标在单词什么位置)
g# 向下查找光标所在单词, 可以匹配在字串中的单词(无论光标在单词什么位置)
:set tabstop=4 设置 Tab 键缩进为4个空格
:set shiftwidth=4 设置 >> 或 << 操作缩进为4个空格
:set ai 设置自动缩进
:split newfile(文件名) 横向切分或打开新窗口
:vsplit newfile(文件名) 纵向切分或打开新窗口
(Ctrl+w)- 水平方向减小窗口
(Ctrl+w)+ 水平方向增加窗口
(Ctrl+w)_ 垂直方向最大化
(Ctrl+w)| 水平方向最大化
:bn 进入下一序号窗口
:bp 进入前一序号窗口
:bd 关闭当前窗口
:ls 查看当前所有打开窗口序号等信息
26个具名寄存器 a-z
系统全局寄存器 +/* , 可用于与外界交换信息
qx(x是寄存器) 开始/结束记录宏
@x(x是寄存器) 运行宏
@@ 最后一次记录的宏
100@x(x是寄存器) 重复执行宏100次
"x(x是寄存器) 引用当前寄存器
:reg 查看所有寄存器内容
例如: 1) qa ... 开始将操作记录与 a 寄存器
2) dd ... 删除单行
3) q ... 结束记录
4) @a ... 执行寄存器 a 的内容
5) "ap .. 将寄存器 a 中的内容粘贴出来
6) "*p .. 从系统剪贴板中粘贴内容
:ab a aaa 设置缩写 a 为 aaa
:nmap <Fn> x 设置 normal 模式下 Fn(n为2~12的整数) 为操作 x 的快捷键
:imap <Fn> x 设置 insert 模式下 Fn(n为2~12的整数) 为操作 x 的快捷键
例如: 1) nmap <F2> :w ... 将 F2 设置 normal 模式下为 :w 操作的快捷键
:%!xxd 将文本模式内容以二进制形式展示。(编辑二进制值才有效, 编辑最右边的文本没用)
:%!xxd -r 将二进制形式的内容转换为文本模式。
:daw 删除当前光标所在单词(无论光标在单词的什么位置)
:yaw 复制当前光标所在单词(无论光标在单词的什么位置)
:xp 快速调换两个字母
:cw 替换当前字符后到单词结尾(不包括但此后的空格)
:dw 删除当前字符到单词结尾(包括单词后的空格)
:de 删除当前字符到单词结尾(包括但此后的空格)
4h 向左移动4个位置
4j 向下移动4个位置
4k 向上移动4个位置
4l 向右移动4个位置
参数:
-b: 打开二进制文件。
2013/5/10 补充
进阶:
编辑状态中 (Ctrl + p/n) 自动补全. 如果你定义过该变量或者函数, 就会进行自动补全.
编辑状态中 (Ctrl + r) = 输入数学表达式, 将计算的结果作为输入.
gf 跳转到光标所在文件名的文件中.
ga 显示光标所在字符的内码
:copen 打开 quickfix window
:cp 跳转到上一条提示信息
:cn 下一条
:cclose 关闭 quickfix window
另外在附上一张更详细的:
最后:
User 的 配置文件一般放是 $HOME/.vimrc
参考 : http://www.cnblogs.com/facingwaller/archive/2011/02/26/1965894.html
http://www.cnblogs.com/jianyungsun/archive/2010/12/07/1899347.html
http://coolshell.cn/articles/5426.html
http://www.ibm.com/developerworks/cn/linux/l-tip-vim1/index.html