字号:大 中 小 有道是工欲善其事, 必先利其器, 没有一个好的程序编辑器对于编写程序以及浏览别人的代码时往往会
事倍功半.在Windows编辑浏览程序文件较多, 知道一些比较不错的编辑器 UtralEdit, EditPlus, Notepad+
+, 以及Source Insight, 以我个人观点来看, SI是款比较不错的编辑软件,很喜欢它的关键字跟踪功能,可以
方便在众多的代码文件中找到某个关键字比如类,函数所对应的声明,对于庞大的面向对象项目代码的浏览提供了
很大的方便.
今天听同事说vim已经够强大了为什么要用这些, 对于我这个见少识狭的小菜来说觉得挺不平的, vim,我用过
不过一般都是用它浏览一个文件, insert插入, backspace删除, esc恢复非插入状态, 这算强大?同事, 随后
的关于vim的演示让我对vim有了新的看法, 在此把我目前知道的总结下, 方便我参考也方便大家学习,呵呵:
vim 打开多个文件: vim a b c ... n
vim 在多个文件中任意切换: 在底行模式下输入 n dir/filename
vim 在多个文件中从当年文件切换到上一文件: 在底行模式中输入 e#
vim 设置智能语法缩进: 在底行模式下输入 set smartindent
vim 显示工程文件行号: 在底行模式下输入 set number
vim 取消显示文件行号: 在底行模式下输入 set nonnumber
vim 分屏显示: 横向分屏/在底行模式下输入split 纵向分屏/在底行模式下输入vsplit
vim 迅速将光标移至文件首: 在命令模式下连续输入gg
vim 某行迅速匹配指定字符: 在命令模式下输入fx x为匹配字符 F用于向左匹配
vim 某行将指定字符串替换为另一个字符串: 在底行模式下输入s/string1/string2/g
vim 删除光标所在行: 在命令模式下输入dd
vim 复制光标所在行并粘贴于另一位置: 在命令行模式下输入yy , 移动光标到预期位置 输入p
vim 分屏后将光标在多屏间切换: 在命令行模式下输入ctrl+ww
vim 撤消修改: 在命令行模式下输入u
vim 多文件切换时返回之前的文件: ctrl+o
vim 文件中左移 ,右移, 下行, 上行: 在命令模式下输入h, l, j, k
vim 文件中跳转至指定行: 在命令模式下先输入行编号, 然后输入shift+g
vim 文件中{ } 匹配: 在命令模式下将光标定位于{ } 其中一个, 然后输入%
vim 保存文件中部分内容: 在底行模式下输入#,# w filename xx (xx为与原文件名区分的标志)
vim 搜索当前文件中包含指定字符串的字符串: /string 扩展功能/\<string /string\> 分别表示
string仅在头或是尾出现, 如故结合起来用就相当于仅匹配string而不是把string作为子串
vim 高亮/非高亮搜索到的字符串: set hlsearch / set nohlsearch
vim 在文件右下角显示当前光标所在行以及文件浏览百分率: set ruler
vim 代码补全效果: 在底行模式输入inoremap <F8> <C-x> <C-o> Enter后, 在程序文件中输入信息之后按Ctrl+p 代码补全功能出现...
vim 全篇自动缩进: 在命令行模式下输入gg=G
vim 单行缩进: 在命令行模式下输入=G 或 ==
vim 缩写(通常用于定义固定得语句过长的注释): 在底行模式下输入iabbrev 缩写 原句或单词
vim 删除指定缩写定义: 在底行模式下输入unabbrev 缩写名
vim 删除全部缩写定义: 在底行模式下输入abclear
vim 跳转到关键字定义处并水平分屏: 在底行模式下输入stag 关键字名
vim 编译程序: 在底行模式下输入make atlas_digit 2>&1 | tee build.log (暂以某个项目为例)
vim 设置C++注释识别: 在底行模式下输入set comments=://
vim 设置缩进统一为n个空格: autocmd FileType=c,cpp set shiftwidth=n | set expandtab
vim 排版注释: 在命令行模式下输入gq]/ (在C++注释风格上未看到效果,可能多支持C)
vim 撤消树: 在底行模式下输入undo 结点编号 恢复到这个撤消树结点对应的内容
vim 时空之旅: 在底行模式下输入undolist 查看撤消树, 可以根据编号任意恢复到某一结点内容
下面这个功能是我最喜欢的, 也是浏览大规模代码的利器, SI就提供了这个功能, 没想到vim早都想到了, 呵呵
vim 在多个文件中智能搜索光标所在关键字所对应的声明或是实现同时打开对应的文件为当前文件: 将光标定位到所要查询的关键字, 在命令行模式下输入ctrl + l + ] , 怎么样, 是不是和Source Insight效果一样,呵呵, 美不胜收吧, 呵呵 (注:前提需要结合ctags使用, 在工程文件目录下输入此命令ctags -R)
vim 的高级功能inoremap实现:
inoremap ( ()<ESC>i
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap { {}<ESC>i
inoremap } <c-r>=ClosePair('}')<CR>
inoremap [ []<ESC>i
inoremap ] <c-r>=ClosePair(']')<CR>
inoremap < <><ESC>i
inoremap > <c-r>=ClosePair('>')<CR>
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endf
享受vim给你带来的欢乐吧,呵呵
先写这么多, 等学到新的再补充, 呵呵
事倍功半.在Windows编辑浏览程序文件较多, 知道一些比较不错的编辑器 UtralEdit, EditPlus, Notepad+
+, 以及Source Insight, 以我个人观点来看, SI是款比较不错的编辑软件,很喜欢它的关键字跟踪功能,可以
方便在众多的代码文件中找到某个关键字比如类,函数所对应的声明,对于庞大的面向对象项目代码的浏览提供了
很大的方便.
今天听同事说vim已经够强大了为什么要用这些, 对于我这个见少识狭的小菜来说觉得挺不平的, vim,我用过
不过一般都是用它浏览一个文件, insert插入, backspace删除, esc恢复非插入状态, 这算强大?同事, 随后
的关于vim的演示让我对vim有了新的看法, 在此把我目前知道的总结下, 方便我参考也方便大家学习,呵呵:
vim 打开多个文件: vim a b c ... n
vim 在多个文件中任意切换: 在底行模式下输入 n dir/filename
vim 在多个文件中从当年文件切换到上一文件: 在底行模式中输入 e#
vim 设置智能语法缩进: 在底行模式下输入 set smartindent
vim 显示工程文件行号: 在底行模式下输入 set number
vim 取消显示文件行号: 在底行模式下输入 set nonnumber
vim 分屏显示: 横向分屏/在底行模式下输入split 纵向分屏/在底行模式下输入vsplit
vim 迅速将光标移至文件首: 在命令模式下连续输入gg
vim 某行迅速匹配指定字符: 在命令模式下输入fx x为匹配字符 F用于向左匹配
vim 某行将指定字符串替换为另一个字符串: 在底行模式下输入s/string1/string2/g
vim 删除光标所在行: 在命令模式下输入dd
vim 复制光标所在行并粘贴于另一位置: 在命令行模式下输入yy , 移动光标到预期位置 输入p
vim 分屏后将光标在多屏间切换: 在命令行模式下输入ctrl+ww
vim 撤消修改: 在命令行模式下输入u
vim 多文件切换时返回之前的文件: ctrl+o
vim 文件中左移 ,右移, 下行, 上行: 在命令模式下输入h, l, j, k
vim 文件中跳转至指定行: 在命令模式下先输入行编号, 然后输入shift+g
vim 文件中{ } 匹配: 在命令模式下将光标定位于{ } 其中一个, 然后输入%
vim 保存文件中部分内容: 在底行模式下输入#,# w filename xx (xx为与原文件名区分的标志)
vim 搜索当前文件中包含指定字符串的字符串: /string 扩展功能/\<string /string\> 分别表示
string仅在头或是尾出现, 如故结合起来用就相当于仅匹配string而不是把string作为子串
vim 高亮/非高亮搜索到的字符串: set hlsearch / set nohlsearch
vim 在文件右下角显示当前光标所在行以及文件浏览百分率: set ruler
vim 代码补全效果: 在底行模式输入inoremap <F8> <C-x> <C-o> Enter后, 在程序文件中输入信息之后按Ctrl+p 代码补全功能出现...
vim 全篇自动缩进: 在命令行模式下输入gg=G
vim 单行缩进: 在命令行模式下输入=G 或 ==
vim 缩写(通常用于定义固定得语句过长的注释): 在底行模式下输入iabbrev 缩写 原句或单词
vim 删除指定缩写定义: 在底行模式下输入unabbrev 缩写名
vim 删除全部缩写定义: 在底行模式下输入abclear
vim 跳转到关键字定义处并水平分屏: 在底行模式下输入stag 关键字名
vim 编译程序: 在底行模式下输入make atlas_digit 2>&1 | tee build.log (暂以某个项目为例)
vim 设置C++注释识别: 在底行模式下输入set comments=://
vim 设置缩进统一为n个空格: autocmd FileType=c,cpp set shiftwidth=n | set expandtab
vim 排版注释: 在命令行模式下输入gq]/ (在C++注释风格上未看到效果,可能多支持C)
vim 撤消树: 在底行模式下输入undo 结点编号 恢复到这个撤消树结点对应的内容
vim 时空之旅: 在底行模式下输入undolist 查看撤消树, 可以根据编号任意恢复到某一结点内容
下面这个功能是我最喜欢的, 也是浏览大规模代码的利器, SI就提供了这个功能, 没想到vim早都想到了, 呵呵
vim 在多个文件中智能搜索光标所在关键字所对应的声明或是实现同时打开对应的文件为当前文件: 将光标定位到所要查询的关键字, 在命令行模式下输入ctrl + l + ] , 怎么样, 是不是和Source Insight效果一样,呵呵, 美不胜收吧, 呵呵 (注:前提需要结合ctags使用, 在工程文件目录下输入此命令ctags -R)
vim 的高级功能inoremap实现:
inoremap ( ()<ESC>i
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap { {}<ESC>i
inoremap } <c-r>=ClosePair('}')<CR>
inoremap [ []<ESC>i
inoremap ] <c-r>=ClosePair(']')<CR>
inoremap < <><ESC>i
inoremap > <c-r>=ClosePair('>')<CR>
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endf
享受vim给你带来的欢乐吧,呵呵
先写这么多, 等学到新的再补充, 呵呵