距离前两次写完日志又有一段时间了,用的越来越多,慢慢又发现了几个小功能
前两次的日志,大家喜欢VIM的可以看下,
VI 编程1 http://www.cnblogs.com/amaoxiaozhu/archive/2012/03/23/2414007.html
VI 编程2 http://www.cnblogs.com/amaoxiaozhu/archive/2012/04/05/2423009.html
好了不多说,开始新的旅程:
1. 编辑篇:
H M L 屏幕的顶、中、底部 [不用再费心去想是8j 还是12j 了,一键搞定~]
gf 编辑光标处的文件名 [最推荐这个了~ 很强大的功能!]
'. 上次修改位置
ctrl + o | i 光标位置回溯
ls |vi - 编辑管道输出
2. 模块篇:
前提是安装了NERDTree~
使用某个模块:vi -c NERDTree
直接打开文件夹可以使用 vi . 或 vi 文件夹路径
3. 进制篇
:%!xxd 将当前的文本转换为16进制。大端法
:%!od 将当前的文本转换为8进制。
:%!xxd -r将当前的文本转换回文本格式。
:%!hexdump将当前的文本转换回16进制,小端法显示。
注:小端法可以理解的内存显示模式(不准确)。大端法可以理解为实际模式。
4. 其他命令篇
%表示文件的所有行,!xxd表示外部命令,结合在一起,就是当把当前vim上显示的所有的行传递给xxd,xxd处理后的结果重新显示在vim上。
整理文件:gg=G
G 跳到文件末尾
vim 编辑加密文件vi -x file 会指定加密密码
g; 上次修改位置
ctrl-c 或[ : 直接退出编辑模式 [神一般的快捷键啊]
@: 重复上次的执行命令
"2p: 拷贝从第二次到刚才复制过的内容
5. 查找篇
f 同一行内查找字符 f( 查找(
; 重复上次查找 c;修改到下一个查找的字符
df 删除同一行内到某个字符的内容
:g/waf 显示所有的包含waf行的内容
:g/waf/# 同时显示行号
/<ctrl - r><ctrl -f> 查找光标处的单词
/keyword/1 光标定位在查找单词的下一行
/keyword/e+1 光标定位在查找单词的结束位置右侧+1
/keyword/s-1 光标定位在查找单词的开始位置左侧 -1
/<ctrl -r > / else 上次搜索单词+else
3ft 查找行内的第三个't'
6. python代码的tags生成
在tools/scripts 路径下,有python专门为VI提供的tags生成器 ptags.py
在我的环境中我按照这个方式配置了tags:
1. 在自己的开发目录下生成python库的
python ptags.py $(find . /usr/lib/python2.5/ -name '*.py'|grep -v 'git')
【很少会查到git的库,leave it】
2. 编辑.vimrc
set tags=tags; set autochdir
首先使用当前目录获取tags【后续开发,可以在新目录中生成子tags】
否则就继续向上搜索
附: 如果你也是一个python coder ~ 握个爪
set autoindent set syntax=on set nocp set softtabstop=4 filetype plugin on colorscheme IDLE let g:pydiction_location='/root/conf/vi/complete-dict' let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window = 1 set tags=tags; set autochdir map <silent> <F5> mz?(*)<CR>yyggpA;<ESC>'z " 创建函数原型 imap <silent> <F5> <ESC>mz?(*)<CR>yyggpA;<ESC>'zA map <F6> :call Test()<CR> " 调试 imap <F6> <ESC>:call Test()<CR> map <silent> <F7> :Grep<CR><CR><CR> " 全局搜索 imap <silent> <F7> <ESC>:Grep<CR><CR><CR> map <F8> i#<ESC>j0 " 注释 imap <F8> <ESC>i#<ESC>j0 map <F9> 0Ji<CR><ESC> "对齐 平级 imap <F9> <ESC>0Ji<CR><ESC> map <F10> 0Ji<CR> <ESC> "对齐 增加缩进 imap <F10> <ESC>0Ji<CR> <ESC> map <F11> 0Ji<CR><ESC>XXXX<ESC> "对齐 减少缩进 imap <F11> <ESC>0Ji<CR><ESC>XXXX<ESC> function Python_Test() let mp = &makeprg let ef = &errorformat let exeFile = expand("%:t") setlocal makeprg=python\ -u set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m silent make % copen let &makeprg = mp let &errorformat = ef endfunction function C_Test() let cmd = "!gcc " let option = "-O2 " if search("math\.h") != 0 let option .= " -lm " endif exec cmd. " % " .option endif exec "!./a.out" copen endfunction function Test() exec "w" if &filetype == "c" exec "call C_Test()" elseif &filetype == "python" exec "call Python_Test()" endif endfunction
Enjoy VI Enjoy Code!