基本模式
- 命令模式
进入vim后, 默认就是命令模式.
input
模式
命令模式下, 输入i
进入input模式, esc
返回命令模式.
文本操作
文本选择
快捷键 | 说明 |
---|---|
V | selects entire lines |
v | selects range of text |
ctrl+v | 列选择 |
ctrl+v, :norm i# | 列选择, 增加#注释 |
gv | 重新选择上次选择的区块 |
选择 / 复制 / 粘贴 ...
快捷键 | 说明 |
---|---|
v(V for lines) -> y (yank) | 选择->复制 |
p | 粘贴 |
v -> d (delete) | |
ctrl + shift + v | paster from clipboard in input mode |
ctrl + ; | 弹出clipboard菜单, 选择一个粘贴 (input mode) |
输入
快捷键 | 说明 |
---|---|
u | undo |
ctrl + r | redo |
ctrl-p or ctrl-n | 使用当前session中的pattern来自动完成 |
a | 在光标后开始编辑 |
o | 当前行后面插入一个新行 |
O | 当前行前面插入一个新行 |
cw | 选择一个词 |
ctrl-v + 大写I + 字符 + esc | 列选择插入 |
v + gU | (变大写) |
v + gu | gu (变小写) |
ye | 复制当前光标到单词结尾的部分 |
缩进
快捷键 | 说明 |
---|---|
v or V | 区块缩进前需要选择文本 |
5> | 表示右缩进5个tab |
4< |
同理, 左向4个tab |
:set expandtab ts=4 sw=4 ai
浏览 / 移动
快捷键 | 说明 |
---|---|
ctrl + e | 向下滚屏,保持光标 |
ctrl + y | 向上滚屏, 保持光标 |
ctrl + d | 向下, 不保持光标 |
ctrl + u | 向上, 不保持光标 |
0 或 ^ | 跳至行头 |
$ | 跳至行尾 |
G | 移至档尾(最后一行的第一个非空白字元处) |
gg | 移至档首(第一行之第一个非空白字元处) |
ctrl+f | 下翻页 |
ctrl+b | 上翻页 |
w | 移至次一个字(word)字首。当然是指英文单字。 |
W | 同上,但会忽略一些标点符号。 |
) | 移至下一个句子(sentence)首。 |
( | 移至上一个句子(sentence)首。 |
} | 移至下一个段落(paragraph)首。 |
{ | 移至上一个段落(paragraph)首。 |
查找 / 替换
快捷键 | 说明 |
---|---|
/ + your-search-string | 搜索, 可以使用正则, 注意转义 |
ggn | |
GN | 最后一个 |
/ + ↑或↓ | 搜索历史 |
:%s/源字符串/目的字符串/g | 全局替换, % 表示所有行 |
:4s/源字符串/目的字符串/g | 替换从第4行 |
:1,4s/源字符串/目的字符串/g | 替换从第1行到第4行 |
多窗口
快捷键 | 说明 |
---|---|
:sp file_path(able to use tab) | 新增窗口打开 |
:vsp file_path | 新增窗口垂直打开 |
:sv | 复制分割当前窗口 |
ctrl + w, s | 复制分割当前窗口 |
ctrl + w, v | 垂直, 复制分割当前窗口 |
ctrl w, Left/Down/Up/Right | 按方向 切换窗口 |
ctrl w, w | 循环 切换窗口 |
ctrl w, h/j/k/l | 按方向 切换窗口 |
ctrl w, H/J/K/L | 按方向 移动窗口 |
ctrl w , q 或 c | 关闭窗口 |
常用命令
快捷键 | 说明 |
---|---|
:sp file_path(able to use tab) | 新增窗口打开 |
:set noautoindent | |
:set number | |
:set number! | 切换 |
:set number& | Set option to default value |
:set number? | Show value of option |
... | ... |
更多请参看另一博客,将会记录常见的配置及相关命令。
执行shell命令
1.:!command
如:
:!ls -al
执行一个命令, 但不退出vim.
2.:r !command
将shell命令command的结果插入到当前行的下一行
这个命令比较常用, 比如输入当前目录:
:r !pwd
3.:起始行号,结束行号 !command
将起始行号和结束行号指定的范围中的内容输入到shell命令command处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
4.:起始行号,结束行号 w !command
将起始行号和结束行号所指定的范围的内容作为命令command的输入。不会改变当前编辑的文件的内容
编辑root权限的文件
这个功能也经常用到, 比如编辑某个root的文件(readonly)时, 忘记了sudo, 当改了很多内容才发现, 怎么办呢 ?
:w !sudo tee %
若是sudo不能解决的, 先写到临时文件:
:w! ~/tempfile.ext
其他, 待续...
参考
[1] http://vimgifs.com/
[2] http://vimcasts.org/episodes/working-with-windows/
[3] http://blog.csdn.net/topgun_chenlingyun/article/details/8013115
[4] http://superuser.com/questions/694450/using-vim-to-force-edit-a-file-when-you-opened-without-permissions