有几个很实用的vim技巧,不是很常用,但是很实用。当需要的时候,可能一句命令就完事。
- :ab a b
当输入a时,结束后立即变成b,这个可以用于缩写,很有用 - :w !sudo tee %
当编辑一个文件保存时,突然没了权限,这个就是sudo - vimdiff afile bfile
用vim比较两个文件 - :%!xxd 把文件变成十六进制。当观察bin文件或其它需要时实用
:%!xxd -r 恢复原来状态 - zz,zb,zt将光标处放到屏幕的中间,上下;HML注意这三个大写的定位是移动光标
- :TOhtml
把当前文本变居html,这个神奇 - ctrl+o/ctrl+i 在改动的地方跳转,可跨越文件跳转,很实用。
- dt 标记
删除光标和标记间的内容 - di{ / di" / di[可用来删除括号或者引号间的内容
- :earlier 1m 回到1m之前的状态
:later相反 - ggVGg? 相当于不想让人看到你的内容
将文件内容编码成另外一个模式,恢复是u - 插入模式下ctrl+r = 再输入一个数学表达式,就会在原地插入所计算的值
- vim +n file 打开第n行,vim + file最后一行
- vim +/pattern file直接定位到pattern处
- 在插入模式下alt+j/k/l/h来移动光标,这个在zsh中好像已经有了,不过可这样
noremap! <M-j> <Down> ------------- 在插入模式下,用 ALT+j 来移动 noremap! <M-k> <Up> noremap! <M-h> <left> noremap! <M-l> <Right>
-
m<标记名称> 定义标记。标记名称为一个字符
'(单引号)<标记名称> 移到光标到<标记名称>行的首字符。
`(反引号) <标记名称> 移动光标到<标记名称>所标记的字符。
`` 返回到移动前的上一标记或上下文的确切位置
'' 返回到上一标记或上下文所在行的开始。
- n% 到文章的百分之行数位置
- ctrl+y/e克隆上下行内容
- ~大小写转换
- 宏操作
qa
q
@q - 插入模式下ctrl+r+寄存器名,则输入寄存器内容
- :e!放弃本次任何修改
- :new新建一个窗口;:split将当前文件分成两栏;:vnew, :vsplit
- :tabnew, :tabe file新标签,:tabc关闭当前,:tabn下一个,:tabp上一个
- xp,ddp交换字符和行
- :%s/^M//g替换文件末尾的^M, ctrl+v ctrl+M得到^M
- u和ctrl+r撤销和恢复
- 替换中:%s/a/b/gc后面的c表示询问
- gu/gU/guU
- :r!cmd插入命令输出
- :Ex开启目录
:Sex分隔窗口 - Ctrl+a/x数字加减
- :make执行makefile :cw查看出错 :cn :cp查看出错地方
- :g/^/m0/行反转
- map imap vmap nmap