vim常用技巧

来源:互联网 发布:淘宝业务员提成怎么算 编辑:程序博客网 时间:2024/04/29 20:54
ps:转,收藏备忘
1 全局替换
%s/old/new/g

2 多文件替换
多文件替换,比如要替换所有.c文件中a_value为a_value,可以使用如下方法:
vi *.c
:argdo %s/a_value/b_value/ge | update
其中update是直接替换覆盖原文件,若需要确认,则可使用
:argdo %s/a_value/b_value/gec | update
我自己测试不能家argdo 和 | update

3 增加多行注释
方法一:
Ctrl+v; 选定所需行; I; #|//; Esc两次
比如需要增加#或者是//这种注释。 Ctrl + v 定位到开始行,然后选定需要的行,然后执行 I 命令,然后输入 # 或 //,然后按 Esc键两次,即可把注释操作应用到所有选定的行,记住选定不能使用v指令,而应该使用Ctrl + v (清除注释请参考上面的方法)(v是按行选定,Ctrl + v 是按照列选定)
方法二:
:起始行,终止行s/要替换字符/替换为新字符/g
比如::1,20s/^/\/\//g

4 ab技巧
:ab 替代符 原始信息
比如::ab mail abc@gmail.com

5 分割窗口功能

分割窗口:
:split [filename] (水平分割)
:vsplit [filename] (垂直分割)
:new (打开一个窗口编辑新文件)
窗口跳转:
CTRL+W w (循环跳转)
CTRL+W (h|j|k|l) (上下左右)
关闭(当前)窗口:
:close
关闭所有其它窗口:
:only
增减窗口大小
CTRL+W +/-
缓冲区跳转:
:bnext (下一缓冲区)
:blast (上一缓冲区)
退出所有窗口
:qall
保存所有窗口:
:wall
保存并退出所有窗口:
:wqall

6 改变颜色配置

:colorscheme mycolors
Vim自带多种配色方案,可以根据需要自己选用。若不知道系统有哪些配色方案,可以在输入:colorscheme(空格)后用Shift+Tab键选择。

8 更好的状态行

通过设置statusline可以设置更好的状态行,我选择的设置是:
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [ASCII=\.3b]\
[POS=%4l,%3v][%p%%]\ [LEN=%L]
它可以显示当前文件的路径和文件名以及整个文件的长度。

9 光标行和光标列

:set cursorline (设置光标行)
:set cursorcolumn (设置光标列)
其中我觉得光标行更有用些。Vim默认设置,要找到光标所在位置不是很方便。

10 语言拼写检查

set spell
set spelllang=en,de,it
中文需要语言包支持,不过最常用的还是英文检查吧

11 键绑定

map 对Normal, Insert, Visual和Command-line模式均有效
imap Insert模式有效
cmap Command-line模式有效
nmap Normal模式有效
vmap Visual模式有效
键绑定可以定义一些键的组合为一个快捷键,如:
imap :wa

12定位功能
{ 段首
} 段尾
g, 前一修改处
g; 后一修改处
( 句首
) 句尾
w 下一单词头
b 前一单词头
% 跳至匹配括号
[[ 和 ][ 向后|前至下一区段开始
[] 和 ]] 向后|前至下一区段结束
[{ 跳至块开始
]} 跳至块结束
[/ 跳至注释块开始
]/ 跳至注释块结束
gd (Goto Declaration) 跳至定义处
gD 跳至全局变量定义处
gj 跳至长行下一段
gk 跳至长行上一段
gf (Goto File) 打开文件
?向前查找
/ 向后查找
?? 重复上一向前查找
// 重复上一向后查找
# 向前查找光标下词(整词匹配)
* 向后查找光标下词(整词匹配)
g# 向前查找光标下字符串(不必是整词)
g* 向后查找光标下字符串(不必是整词)
vimgrep /pattern/[j][g] file file2 … fileN 多文件查找
使用标志(mark)定位:
0~9 系统自用
a-z 本文件mark (使用方法: 标志:ma, 调至标志 `a)
A-Z 跨文件的mark
:marks 查看所有标志
:delmarks 删除标志

13 自动补全
Ctrl+p 自动补全单词
Ctrl+n 自动补全单词(向前查找)两者一般感觉不到区别
Ctrl+x Ctrl+k 通过字典补全单词
Ctrl+x Ctrl+t 从同义词典(thesaurus)补全
Ctrl+x Ctrl+f 文件名自动完成(很有用)
Ctrl+x Ctrl+l 自动完成整行
Ctrl+x Ctrl+i 从当前和包含文件补全
Ctrl+x Ctrl+o 全能自动补全,需要set omnifunc
说明:
设置字典的方式:在.vimrc中增加以下语句(借用look命令的字典库)
set dictionary+=/usr/share/dict/words
即可使用Ctrl+x Ctrl+k功能,很好很强大!

14 使用宏
qx (开始录制宏至寄存器x,x可以为任何字母,但是最常见的是q)
command1
q (结束录制)
@x (引用宏)
@@ (重复上次宏使用)
2.15读写文件或命令内容
:r filename (读入文件内容)
:m,nw filename (将m~n行内容写入文件)
r!command (插入command命令结果)

16使用寄存器
无名寄存器 “”
数字寄存器 “0 “1 … “9
有名寄存器(Named Registers) “a~”z “A~”Z (大写寄存器内容追加,而不是覆盖)
只读寄存器:
“% 当前活动缓冲区文件名
“# 前一文件的文件名,替换文件
“. 最后插入的文本
“: 最后命令行运行的命令
黑洞寄存器: “- 进入的永远消失
搜索模式寄存器 “/
表达式寄存器: “= (使用:输入表达式后ENTER, p粘贴)

17折迭
zfa{ 创建折迭
zc 折迭
zo 打开折迭
zM 折迭所有
zR 打开所有折迭

18文件比较vimdiff
:vimdiff file1 file2
:diffsplit filename
或命令行下 vim –d file1 file2 可进行文件比较
[c 前一差别
]c 后一差别

19缩进
>% 缩进块中内容
原创粉丝点击