[Linux] VIM 常用快捷键
标签
* :tabnew 打开新标签页.
* :tabe <file> 在新标签页打开文件.
* <ctrl> + PageUp, PageDown 切换标签页.
* :tabnext, tabprev 切换标签页,Putty 下只能用这个.
文件
* :e <file> 打开文件.
* :enew 新文件.
* :w 保存.
* :wa 全部保存.
* :w <file> 另存为.
* :wq 保存并退出.
* :x 保存并退出.
* :q 退出.
* :qa 全部退出.
* :q! 强制退出.
文本
* esc 切换命令模式 (距离太遥远了,用 Ctrl+C 代替吧).
* i 插入模式.
* I 在当前行开头插入.
* R 替换模式.
* a 在光标后插入.
* A 在当前行尾部插入.
* v Visual 模式按字符选择.
* V Visual 模式按行选择.
光标
* h 左移光标.
* j 下移光标.
* k 上移光标.
* l 右移光标.
fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。
tx:和上面的命令类似,但是是移动到 x 的左边一个位置。
Fx:和 fx 类似,不过是往回找。
w:光标往前移动一个词。
b:光标往后移动一个词。
0:移动光标到当前行首。
^:移动光标到当前行的第一个字母位置。
$:移动光标到行尾。
):移动光标到下一个句子。
( :移动光标到上一个句子。
* gg 将光标移到文件头部.
* G 将光标移到文件尾部.
* #G 移动光标到指定行#. 例如: 5G
编辑
* u 撤销.
* . 重做.
* dd 删除当前行.
* #dd 删除几行. 例如: 3dd
* d^ 删除到行首.
* d$ 删除到行尾.
* :#,&d 删除 # 到 & 行. 例如: 3,5d
* Ctrl + w 删除光标之前的词
* Ctrl + u 删除当前行光标左边的所有内容
* yy 拷贝当前行到剪贴板.
* #yy 拷贝 # 行到剪贴板.
* y^ 从文件头开始拷贝.
* y$ 拷贝到文件尾部.
* :#,&y 拷贝 # 到 & 行. 例如: 4,5y
* p 在光标后粘贴.
* P 粘贴到光标前.
* >> 增大缩进.
* << 减少缩进.
* == 自动缩进.
查找替换
* /# 查找 #. 例如: /printf
* ?# 反向查找 #.
* n 查找下一个.
* N 反向查找下一个.
* :s/old/new/g 当前行无提示替换.
* :%s/old/new/g 无提示替换.
* :%s/old/new/gc 确认替换.
* :#,&s/old/new/g 从 # 到 & 行无提示替换.
书签跳转
* :marks 查看所有书签, 输入 ":<num>" 可跳转.
* m<name> 定义书签, 如 ma 在当前行定义名为 a 的书签.
* `<name> 跳转到某书签, "`" 为键盘 Tab 上一行第一键.
* :jumps 查看所有跳转记录, 输入 ":<num>" 可跳转.
* <ctrl> + o 返回上一次跳转处.
* <ctrl> + i 和 <ctrl> + o 反向转处.
Ctags
* :! ctags -R . 生成 ctags 文件.
* <ctrl> + ] 查看函数定义.
* <ctrl> + T 返回.
* shift + k 查看函数 man 帮助信息.
Code
* gg=G 源码格式化
窗口操作
:split <filename> 按拆分模式打开文件,默认为上下拆分
:vsplit <filename> 左右拆分
Ctrl-w w 切换活动窗口
Ctrl-w Ctrl-w 切换活动窗口
Ctrl-w h/j/k/l 切换活动窗口为 左/上/下/右 边的窗口
整篇文章大写转化为小写
打开文件后,无须进入命令行模式。
键入:ggguG
解释一下:
ggguG分作三段gg gu G
gg=光标到文件第一个字符
gu=把选定范围全部小写
G=到文件结束
整篇文章小写转化为大写
打开文件后,无须进入命令行模式。
键入:gggUG
解释一下:gggUG分作三段gg gU G
gg=光标到文件第一个字符
gU=把选定范围全部大写
G=到文件结束
只转化某个单词
guw 、gue、gUw、gUe
这样,光标后面的单词便会进行大小写转换
想转换5个单词的命令如下:
gu5w、gu5e、gU5w、gU5e
转换几行的大小写
将光标定位到想转换的行上,键入:1gU
从光标所在行往下一行都进行小写到大写的转换
10gU,则进行11行小写到大写的转换
以此类推,就出现其他的大小写转换命令
gU0 :从光标所在位置到行首,都变为大写
gU$ :从光标所在位置到行尾,都变为大写
gUG :从光标所在位置到文章最后一个字符,都变为大写
gU1G :从光标所在位置到文章第一个字符,都变为大写
其他
* ! <command> 执行命令.
* :r <file> 插入文件内容.
* :r !<command> 插入命令输出结果.
* :cd <path> 修改默认工作目录.
Ctrl+Z 把当前环境放入后台
bg - 列出已停止或后台的作业
fg - 将最近的作业带到前台
fg n - 将作业n带到前台
如果不小心按了Ctrl + s,vim 好象死掉了一样,试试下面这个吧~_~!
Crtl + s 停止输入(这两个好象是bash的原因)
Crtl + q 恢复输入
去掉MS下文件的^M
:%s/^M//g # 去掉所有的^M (注意:“^M”要使用“CTRL-V CTRL-M”生成)
改变窗口大小
输入次序: Ctrl-w 行数 +
Ctrl-w+ 把当前窗口高度增加”行数”行(如不指定行数,默认为1)
Ctrl-w- 把当前窗口高度减少”行数”行(如不指定行数,默认为1)
Ctrl-w= 让所有窗口一样高
Ctrl-w_ 把当前窗口的高度设为”行数“,如不指定则把它最大化。
从VIM复制到系统剪贴板clipboard
:!pbcopy
:[n,n] !pbcopy
:[n,n] w !pbcopy
加入.vimrc配置
vmap <C-x> :!pbcopy<CR>
vmap <C-c> :w !pbcopy<CR><CR>
VIM忽略语法错误
配置文件中加入:
let g:syntastic_quiet_messages = {'regex': ['line too long', 'colon', 'too many blank lines'] }