最近一直在使用vim,这里备份下各种快捷键
1. 光标的移动
-
- 左下上右:分别对应h,jk,l。如果你想一次移动多步,只需在相应命令前加上数字即可,如2h向左移动两步。
- 开头与结尾:按G跳到最后一行,按1G or gg跳到第一行。在前面加上数字则跳转到相应的行,如50G跳到第50行。
- 跳转到下一个词:按w,如果想返回刚才的位置只需按b。和前面类似,若想移动多个词只需指定数字前缀即可。
- 跳转到下一句:按),按(返回刚才的位置。
- 跳转到下一段:按},类似的按{返回前一次的位置。
- 跳来跳去: ctrl-o跳回前一次的位置, ctrl-i跳向下一次的位置。
- 标记位置:使用ma将一段文本中某个位置标记为a,按'a跳到该位置所在的行,按`a跳到标记a所在的具体位置。可以使用的位置标记有a-zA-Z,共52个
2. 拷贝,剪切,黏贴 : d , y , p
操作对象 | 剪切 | 拷贝
----------|-------|----------
一个字符 | dl | yl (注意是小写字母L,而不是数字1)
----------|-------|-----------
一个词 | dw | yw
----------|-------|-----------
一行文本 | dd | yy (yy→ 拷贝当前行当行于 ddP)
----------|-------|-----------
一段文本 | dap | yap
----------|-------|----------
2013.5.2 add:
dd
→ 删除当前行,并把删除的行存到剪贴板里
p
→ 粘贴剪贴板 (抄自http://coolshell.cn/articles/5426.html?utm_source=feedly)
(p/P都可以,p是表示在当前位置之后,P表示在当前位置之前)
3. Undo , Redo u , ctrl+r
高级操作,earlier和later命令
:earlier 4m 回到4分钟前的操作
:later 30s 前进到30秒后的状态
以树形结构的方式组织undo list
4. 搜索 /\d\* /\d\+ ...
5. 多文档的查看与编辑
1. 在不同窗口中打开多个文档
先打开一文档,然后 :e test.c 打开第二个文档,:ls 或 :buffers 查看当前打开的文件,:b[1-9]{1}切换
2.在同一窗口中打开多个文档
同上,:new ~/path/test.c (水平打开)
:sp .. 同上(水平) :vsp (竖直) :q 关闭
3. 在不同Tab中打开多个文档
:tabnew 打开新tab gt切换tab :q 关闭
4. 关闭,保存多个文件 :qa :wa :wqa :qa! (抄自:http://www.ibm.com/developerworks/cn/linux/l-vimdiff/)
2013.5.2 add:
6.各种插入模式
a
→ 在光标后插入
o
→ 在当前行后插入一个新行
O
→ 在当前行前插入一个新行
cw
→ 替换从光标所在位置后到一个单词结尾的字符
7.简单的移动光标
0
→ 数字零,到行头
^
→ 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$
→ 到本行行尾
g_
→ 到本行最后一个不是blank字符的位置。
8.打开/保存/退出/改变文件
:e <path/to/file>
→ 打开一个文件
:w
→ 存盘
:saveas <path/to/file>
→ 另存为 <path/to/file>
:x
, ZZ
或 :wq
→ 保存并退出 (:x
表示仅在需要时保存,ZZ不需要输入冒号并回车)
:q!
→ 退出不保存 :qa!
强行退出所有的正在编辑的文件,就算别的文件有更改。
:bn
和 :bp
→ 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(陈皓注:我喜欢使用:n到下一个文件)
2013-5-19 add
9.替换本行string 将str1 替换为str2
:s/str1/str2/ →替换本行的 第一此出现的str1→str2
:s/str1/str2/g →替换本行所有 的str1 2 str2
文件检测:
source: http://easwy.com/blog/archives/advanced-vim-skills-filetype-on/
内嵌编译:
source:http://easwy.com/blog/archives/advanced-vim-skills-quickfix-mode/
设置编译指令:
:set makeprg=gcc\ -Wall\ -ohello\ hello.c
上面的命令会把hello.c编译为名hello的可执行文件,并打开了所有的Warnning。如果编译命令中有空格,需要使用’\‘对空格进行转义,上面的例子就使用了’\‘转义空格。
进行编译
:make
在使用”:make“时,vim会自动调用’makeprg‘选项定义的命令进行编译,并把编译输出重定向到一个临时文件中,当编译出现错误时,vim会从上述临时文件中读出错误信息,根据这些信息形成quickfix列表,并跳转到第一个错误出现的地方。
对于我们上面的程序来说,光标会停在第三行,也就是第一个出错的位置,vim同时会提示出错信息。如果你没看清出错信息,可以输入”:cc“命令,vim会更次显示此信息,或者干脆使用”:cw“命令,打开一个quickfix窗口,把所有的出错信息显示出来
在quickfix模式里经常用到的命令有:
:cc 显示详细错误信息 ( :help :cc ) :cp 跳到上一个错误 ( :help :cp ) :cn 跳到下一个错误 ( :help :cn ) :cl 列出所有错误 ( :help :cl ) :cw 如果有错误列表,则打开quickfix窗口 ( :help :cw ) :col 到前一个旧的错误列表 ( :help :col ) :cnew 到后一个较新的错误列表 ( :help :cnew )
单词的移动 摘自:http://easwy.com/blog/archives/advanced-vim-skills-basic-move-method/
vim中,移动光标到下一个单词的词首,使用命令”w“,移动光标到上一个单词的词首,使用命令”b“;移动光标到下一个单词的结尾,用命令”e“,移动光标到上一个单词的结尾,使用命令”ge“。
不太了解g ,:help g 查看commend started with 'g'
查询 摘自:http://easwy.com/blog/archives/advanced-vim-skills-basic-move-method/
在vim中查找非常容易,直接在Normal模式下输入”/“,然后输入你想查询的字符串,回车,就跳转到第一个匹配的地方了。”/“是向下查找,而”?“进行反方向查找。命令”n“重复上一次的查找命令,而命令”N“也重复上一次的查找命令,只不过它按相反方向查找。
vim保存了查找的历史记录,你可以在输入”/“或”?“后,用上、下光标键(或CTRL-P/CTRL-N)翻看历史记录,然后再次执行这个查找。
另外你还可以使用”q/“和”q?“命令,在vim窗口最下面打开一个新的窗口,这个窗口会列出你的查找历史记录,你可以使用任何vim编辑命令对此窗口的内容进行编辑,然后再按回车,就会对光标所在的行的内容进行查找。
vim中有许多与查找相关的选项设置,其中最常用的是’incsearch‘, ‘hlsearch‘, ‘ignorecase‘。
- ‘incsearch‘表示在你输入查找内容的同时,vim就开始对你输入的内容进行匹配,并显示匹配的位置。打开这个选项,你可以即时看到查找的结果。
- ‘hlsearch‘选项表示对匹配的所有项目进行高亮显示。
- ‘ignorecase‘选项表示在查找时忽略大小写。
2013-5-26 add 关于search的高亮 from:[http://gccfeli.cn/2009/04/vim-hlsearch.html]
set hlsearch "打开高亮搜索
set nohlsearch "关闭高亮搜索
nohl "只取消掉当前的搜索高亮
gcc -Wall (查看waring) -S(查看程序汇编指令)