vi&&vim用法
| 命令 | 含义 | 命令 | 含义 | 
| a | 在光标后输入(进入输入模式) | A | 行尾插入(进入输入模式) | 
| i | 在光标前输入(进入输入模式) | I | 从光标所在列的第一个非空白字元前面开始插入(进入输入模式) | 
| o | 光标所在行下面新加一行(进入输入模式) | O | 光标所在行上面新加一行(进入输入模式) | 
操作:
| y | 复制选择部分 | yw | 复制单词 | 
| yy | 复制行 | p | 粘贴 | 
| d | 删除选择部分 | dd | 删除行 | 
| 数字n+dd | 删除n行 | gg | 到文件头 | 
| GG | 到文件尾 | n+yy | 复制当前开始的n行 | 
删除和复制(普通模式、可视模式)
删除:
- dd: 
删除一行  - dw: 
删除一个单词,需将光标移到单词的第一个字母。  - d$: 
删除当前光标到该行的行尾的字母  - daw: 
 删除一个单词,光标在单词任意位置 - dnw: 
 删除N个单词 - dnj: 
向下删除n行  - dnk: 
向上删除n行  - J:  
删除换行符,将光标移到改行,按shift+j删除行尾的换行符,下一行接上来了。  - 
x 删除光标下的字符 ("dl" 的缩写)
X 删除光标前的字符 ("dh" 的缩写)
D 从当前位置删除到行尾 ("d$" 的缩写)
dw 从当前位置删除到下一个单词开头
db 从当前位置删除到前一个单词的开头
diw 删除光标上的单词 (不包括空白字符)
daw 删除光标上的单词 (包括空白字符)
dG 删除到文件末
dgg 删除到文件首
"dl" 删除字符 (缩写: "x") |dl|
"diw" 删除内含单词 *diw*
"daw" 删除一个单词 *daw*
"diW" 删除内含字串 (见 |WORD|) *diW*"daW" 删除一个字串 (见 |WORD|) *daW*
"dd" 删除一行 |dd|
"dis" 删除内含句子 *dis*
"das" 删除一个句子 *das*
"dib" 删除内含 '(' ')' 块 *dib*
"dab" 删除一个 '(' ')' 块 *dab*
"dip" 删除内含段落 *dip*
"dap" 删除一个段落 *dap*
"diB" 删除内含 '{ ' ' }' 大块 *diB*
"daB" 删除一个 '{ ' ' }' 大块 *daB 
复制:
- yy: 
复制一行  - yw: 
复制一个单词,需将光标移到单词的第一个字母。  - yaw: 
 复制一个单词,光标在单词任意位置 - ynw: 
 复制N个单词 - ynj: 
向下复制n行  - ynk: 
向上复制n行  
修改:
- cl: 
更改当前字符  - cw: 
修改当前单词到结尾  - cc: 
修改当前行  
粘贴:p,粘贴用x、d、y操作的文本
光标:
| k | 上一行 | h | 左移一个字符 | 
| l | 右移一个字符 | j | 下一行 | 
0 
^ 
gg 
G 
`` 
H 
M 
L 
w: 
b: 
e: 
ge: 
%: 
CTRL+G 
向下翻页(page down): 
向上翻页(page up): 
向下移动半屏:CTRL+d
向上移动半屏:CTRL+u
'' 同`` -- 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查
找到某个单词后, 再输入此命令则回到上次停留的位置.
'. -- 此命令相当好使, 它移动光标到上一次的修改行.
`. -- 此命令相当强大, 它移动光标到上一次的修改点.
| ctrl+d | 向下翻半屏 | ctrl+f | 向下翻屏 | 
| ctrl+b | 向上翻屏 | ctrl+u | 向上翻半屏 | 
| 0(零);^ | 行首 | $ | 行尾 | 
| GG | 到文件尾 | gg | 到文件头 | 
查找替换:
| N | 找到上一个匹配字符 | n | 找到下一个匹配字符 | 
| :s/vivian/sky/ | 替换当前行第一个 vivian 为 sky | 
| :s/vivian/sky/g | 替换当前行所有 vivian 为 sky | 
| :n,$s/vivian/sky/ | 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky | 
| :n,$s/vivian/sky/g | 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky | 
| :%s/vivian/sky/ | 等同于 :g/vivian/s//sky/ 替换每一行的第一个 vivian 为 sky | 
| :%s/vivian/sky/g | 等同于 :g/vivian/s//sky/g 替换每一行中所有 vivian 为 sky | 
| :s#vivian/#sky/# | 替换当前行第一个 vivian/ 为 sky/ ;可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符 | 
推出保存:
| 命令 | 含义 | 命令 | 含义 | 
| esc | 重新进入命令模式 | esc + “:” | 进入vi行末模式 | 
| q | 退出 | q! | 强制退出 | 
| wq | 保存并退出 | w | 保存 | 
| ls | 执行系统命令 | ZZ | 保存退出 | 
| ZQ | 不保存退出 | :x | 保存退出 | 
寄存器下的操作:
在复制前可以先指定一个寄存器,方法是在双引号后跟一个字母,例如"a指定了寄存器a,"B指定了寄存器B。所以,"ayy把当前行放进了寄存器a,以后就可以用"ap来粘贴寄存器a里的内容了。如果不确定寄存器里放了什么内容,可以使用:reg来查看。
Vim提供了一个很有用的特殊寄存器"+,它的内容就是系统剪贴板的内容。可以在Vim里用"+p粘贴出来。
多文件操作
 :ls 
- :bn 
转到下一个buffer 
:bp转到上一个buffer 
:b 3转到编号为 3 的buffer 
:b index.html转到名为index.html的buffer  

                    
                
                
            
        
浙公网安备 33010602011771号