IC 脚本之VIM 记录
1. 对于代码中空格与tab相互转换的可通过如下实现:
set tabstop = 4
set expandtab
%retab ! 以上三行命令即可实现将代码中每四个空格用一个tab来缩进。
set tabstop =4
set noexpandtab
%retab ! 以上三行命令即可实现将代码中的每个tab用四个空格来实现
tab相关参数
set shiftwidth=4 #换行自动变成空格
set autoindent #设置自动缩进,当你在第一行敲击 tab + conten, 当回车第二行开始编辑器默认增加一个tab
2 使用vim 批处理文本
setp1 : 创建一个包含所需执行vim 命令 集合的文本 test.scr
step2 : vim -es -S test.scr file1 file2 ; 这样便可以对test.scr中的命令对file1 file2 分别执行。
note: test.scr最后一行添加 :wq 保证运行结束后自动保持退出。
3.vim 的autocmd命令
autocmd FileType makefile,tck,python set noexpandtab # 对特定文件不展开tab
autocmd BufWritePre makefile :%s/\s*$//g<CR> # 默认去除makefile最后空格。
4. 自定义快捷键
nmap jj <Esc>
inmap jj <Esc>
map <C-s> <Esc>:w<CR> # ctrl-s save
imap <C-s> <Esc>:w<CR> # ctrl-s save
imap <C-S> <Esc>:w<CR> # ctrl-s save
map <C-q> <Esc>:wq<CR> # 退出
map <S-Tab> <Esc>:<<CR> # 绘图tab
mpa <Tab> <Esc>:s/^/\t/g<CR> # 增加tab
map <C-n> <Esc>:tabnew ./ <CR> # 新建
map <C-a> <Esc>ggvG # 全选
map <C-m> <Esc>:et mouse=c<CR>
map <C-f> <Esc>/
map <C-y> <Esc>:tabf ./<CR>
map <C-f> <Esc>/ # 寻找
map <C-r> <Esc>:%s/ #全局替换
vmap <C-r> :s/ #部分替换
5. vim 正则
vim 元字符
\ 元字符转义
^ 字符串开始位置
$ 字符串结束位置
* 0~∞ 次
. 任意一个字符
\{m,n} 次数匹配
\( \) 分组
\| 或
\? 0~1
\+ 1~∞
高阶用法:
\< \>单词左边界以及有边界
\{-1,} 非贪婪匹配
6. 命令
获取匹配字段的个数:
%s/pattern//gn