VIM“重装上阵” - [开源世界]

本文介绍了Vim编辑器的一些高级应用技巧,包括如何利用Vim的最新版本特性、插件如Ctags、Taglist和CScope提升编程效率,以及如何配置Snippets减少重复输入工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://bigwhite.blogbus.com/logs/33121799.html

国内很多学习 Python的人都喜欢看" A Byte of Python",这是一本由印度小伙儿 Swaroop C H写的书,之所以受到大家关注和欢迎,想必其简单而实用的写作风格是其中的重要原因吧,作为入门书很适合。我的Laptop中就有一本中文翻译版,不过书中用的还是Python 2.3.4版本。本月3日(2008-12-3) Python 3.0 Release版祭出,Swaroop C H也在其站点上增加了A Byte of Python for 3.0版。在下载新版"A Byte of Python"的同时,我又发现了Swaroop C H的另外一部作品" A Byte of VIM"。

刚工作的时候,一直用原始的 VI(非VIM)在Unix上写代码,之所以选择原始的VI是因为部门里的老同事都使用它, VIM用 的人不多,刚出校门的我还十分不适应VI的操作(在VIsual Studio上用IDE惯了),形成VI习惯还是很痛苦的,学习过程似乎没有什么成就感。看着其他一起入司的同事使用VIM的各种"奇技淫巧"分割窗口、 折叠代码、自动补齐、通过快捷键在代码文件间跳来跳去,我却仍没有一些想深入学习的感觉(也许当时将精力都投到 Java上了吧^_^)。

今年一直在努力通过各种方法( 双显示器分布式编译等) 提高自己的工作效率,提升工作效率是大势所趋,随着工作责任的增多,工作任务相应的也要多起来,时间还是那些,这就需要你在短时间内高效的完成工作。我们 能做的除了做好时间管理、理顺工作流程外,对于个体来说采用更高效的工具以及熟练掌握这些工具就是高效工作的一个突破口了。眼下对于我来说重要的就是让 VIM"重装上阵"(工作多年了,还是用使用VI的方法去使用VIM这个强大的工具,有些说不过去了^_^)。

与 VI相比,VIM显然更强大,让人惊异于网上的各种VIM的插件和辅助软件,将这些结合在一起后,似乎一个无所不能的IDE就这样诞生了,也许这就是 Unix文化的魅力所在吧。Swaroop C H的"A Byte of VIM",特别是其中的"VIM, Programmer's Editor"一节中将一个程序员应该常用到的插件和辅助软件都集中在了一起,从头到尾读一遍,你就会能体会到VIM的强大。关于如何使用VIM高效编辑 的最好的Guide类文档当属Vim的Founder Bram Moolenaar所写的" Seven habits of effective text editing" 了,目前该文档已经进化到2.0了。Bram在文中的一句话我觉得对学习Vim则是很有指导意义:"Learning every feature of Vim might make you the great award of Vim, but it will not be very effective. And it will be impossible to make everything a habit." 在VIM纷繁芜杂的功能中找到符合自己的实用功能并形成编辑习惯才是最高效的。

部门服务器上的VIM依旧停留在6.3版本,很多我需要的VIM新功能都不支持。为了不影响大家使用,我还是决定在自己的用户目录下重新编译一个VIM,最新版7.2,这样自己可以按照自己的需求定制。在SunFreeWare网站下载 Vim7.2 For SPRAC Solaris 9的 源码包,解压后发现VIM的目录组织很清晰整洁,Configure & Make,编译过程很顺利也,甚至连一个Warning都没有,10分钟编译完毕。Make install到自己指定的目录(需要在Configure的时候使用--prefix参数),修改path。再一执行Vim,版本已经变成了7.2了。

Ctags一直在使用,不过发现系统里的Ctags版本较低,为了能更好的配合Vim 7.2,我还是下载了一个Ctags 5.7版本源码,重新编译了一个自己用的CTags。在测试项目顶层Ctags -R生成tags文件,测试了一把,一切OK。

Taglist以前一直没有用过,下载其最新版taglist_45.zip,在本地$VIM_INSTALL_HOME/share/vim/vim72解压,
  inflating: plugin/taglist.vim      
  inflating: doc/taglist.txt
在测试项目里打开一个源文件,命令栏下输入: TlistToggle,Vim打开一个新的窗口,显示你当前Vim Buffer里的宏、 Typedef、 Functions、Variables等。你可以使用"Ctrl+w, Ctrl+w"在两个窗口间切换,对于函数较多较长、size较大的源文件的编辑有很大效率提升,list窗口中的内容也是普通文本,可以用各种搜索功能 定位函数或变量,然后回车跳转到主窗口的相应源码。

Ctags和Taglist都功能有限, CScope才 是集大成于一身,Vim内置了8种CScope的查询操作,比如你可以查询到当前光标下的函数被哪些方法调用,这个功能相当实用。由于我们服务器上没有 CScope,我下载了源码编译,结果很不顺利,总是报错,无法解决,无奈只能让管理员在主机上用已经做好的安装包安装一个了。然后下载
cscope_maps.vim, 将之放入.vim/plugin下面,cscope_maps.vim将冗长的cscope命令映射为热键了,便于使用。安装好后打开Vim,使用热 键,vim在状态栏中居然提示不支持cs命令。Help了一下CScope,发现Vim默认编译时是不支持CScope的,需要重新Configure, 重新Make,这次configure就要加上--enable-cscope选项了。另外CScope单独执行时会用你默认的编辑器打开相应文件,你可 以通过在shell里设置‘EDITOR’环境变量来指定编辑器。

有了CTags、Taglist和CScope,你的Vim将呈现出丰富多彩的界面。窗口多了,别晕了。

Vim新版支持了内置的补全功能,通过Ctrl+N or Ctrl+P可在补全列表中前后选择;内置的补全功能会在当前缓冲区、其它缓冲区,以及当前文件所包含的头文件中查找以光标前关键字开始的单词,也是平时用的最多的补全功能。

Snippets, 看到这个单词也许使用TextMate的人最为熟悉不过了,通过敲击几个关键字符+TAB间即可帮助你展开一些最常用的代码,减少输入的重复工作,比如 for, while, if以及C++等面向对象语言中的class结构,你只需要输入内容即可。Snippets同样是通过插件 snippetsEmu的 形式提供到Vim中的。只需要Vim网站下载两个文:snippy_bundles.vba和snippy_plugin.vba,千万不要别扩展名给蒙 住了,这两个文件不是Windows上的那个VBA脚本文件,而估计是vimball文件,下载后分别用vim打开,然后执行"source %"即可。VIM会在.vim/下的after和plugin下放入若干文件,用以支持Snippets功能。你可以打开~/.vim/after /ftplugin/c_snippets.vim,看看它对C语言都有哪些Snippets,如果觉得不符合你的习惯可以修改之。随意打开一个C源文 件,输入do+TAB,可以看到:
do
{
       
} while (<{}>);<{}>
光标停留在中央,待你输入内容;输入后,点击Tab,光标会跳到下一个<{}>中,待输入完内容,再TAB,则最后一个<{}>消失,输入完毕。是不是也很强大:)

Vim 的Quickfix模式是我以前没用到的,Quickfix这个就好比Visual Studio的“输出窗口”,build过程出现的错误都会在里面列表显示,你在这个窗口里将光标切换,主窗口就会显示对应的错误位置。前提你要在Vim 内执行Make,一般我会使用:cw打开quickfix窗口,用cn和cp在quickfix中的错误行中切换。

其实以上每一个新功能都很复杂,形成习惯需要一个过程,但是一旦形成了习惯,你的效率将会有大幅提高。

转载于:https://www.cnblogs.com/Henrya2/archive/2009/02/10/1387596.html

内容概要:本文介绍了基于SMA-BP黏菌优化算法优化反向传播神经网络(BP)进行多变量回归预测的项目实例。项目旨在通过SMA优化BP神经网络的权重和阈值,解决BP神经网络易陷入局部最优、收敛速度慢及参数调优困难等问题。SMA算法模拟黏菌寻找食物的行为,具备优秀的全局搜索能力,能有效提高模型的预测准确性和训练效率。项目涵盖了数据预处理、模型设计、算法实现、性能验证等环节,适用于多变量非线性数据的建模和预测。; 适合人群:具备一定机器学习基础,特别是对神经网络和优化算法有一定了解的研发人员、数据科学家和研究人员。; 使用场景及目标:① 提升多变量回归模型的预测准确性,特别是在工业过程控制、金融风险管理等领域;② 加速神经网络训练过程,减少迭代次数和训练时间;③ 提高模型的稳定性和泛化能力,确保模型在不同数据集上均能保持良好表现;④ 推动智能优化算法与深度学习的融合创新,促进多领域复杂数据分析能力的提升。; 其他说明:项目采用Python实现,包含详细的代码示例和注释,便于理解和二次开发。模型架构由数据预处理模块、基于SMA优化的BP神经网络训练模块以及模型预测与评估模块组成,各模块接口清晰,便于扩展和维护。此外,项目还提供了多种评价指标和可视化分析方法,确保实验结果科学可信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值