10|代码重构实验:在实战中提高编辑熟练度
该思维导图由 AI 生成,仅供参考
开始前的准备工作
- 深入了解
- 翻译
- 解释
- 总结
本文以作者吴咏炜在实战中提高编辑熟练度的实验为背景,通过一个假想的代码重构实验来复习、巩固已经学到的编辑技能。文章首先介绍了实验前的准备工作,包括签出示例程序的代码和准备工作环境。接着,作者以重命名示例的`smart_ptr`类模板为例,详细讲解了如何进行类定义和使用的修改操作,同时给出了在Vim中进行这些操作的具体命令和操作步骤。最后,作者提到了编译执行的操作,以及在编译过程中可能遇到的问题和解决方法。 文章通过实际操作的方式,帮助读者巩固Vim编辑技能,特别是在代码重构方面的应用。读者可以通过本文了解到作者的实战经验,以及在实际操作中如何运用Vim进行代码编辑和重构,对于想要提高编辑熟练度的读者具有一定的参考价值。文章还总结了编辑技巧的应用,包括使用 fzf.vim、tagbar、vim-eunuch等插件,以及替换命令、宏的使用等,强调了编辑的自动化和简单化,以及Vim作为程序员编辑器的灵活和强大。 总的来说,本文内容丰富,涵盖了丰富的编辑技巧和实战经验,对于想要提高编辑技能的读者具有很高的参考价值。
《Vim 实用技巧必知必会》,新⼈⾸单¥59
全部留言(7)
- 最新
- 精选
- 我来也老师的git submodule用的溜啊. 克隆一个仓库,出来了一大溜. 这个git子模块的功能我只是粗略知道,但还没用起来过. 另外,建议给commit:`632b067`打一个方便记的标签或分支. # 如果是我来做这次的重构,有些地方我会这么做.(仅供参考) 1. 打开文件的操作我会这么做 `grep -lr smart_ptr * | xargs -o vim` grep的`-l`参数是只显示文件名,`-r`的操作是表示递归的在子目录中查找. 后面的`|`表示管道,把第一部分的结果当做第二部分的输入. `xargs -o vim`表示在vim中打开这些找到的文件. 其实这套组合命令是非常常用的. 我甚至给`xargs -o vim`取了个别名:`alias xov="xargs -o vi"` 2. 如果是已经打开了某个文件,需要在当前目录及子目录中查找相关内容, 我会用之前创建的映射键`F3`去搜索. 如果是想批量打开quickfix列表中的所有文件,可以参考这个.(https://gist.github.com/larsthegeek/4063239) 3. 如果是批量替换`smart_ptr`为`gt::shared_ptr`,以前我也会用`.`命令或者正则替换. 但是现在,我又多了一个选择,就是用之前介绍的[vim-visual-multi](https://github.com/mg979/vim-visual-multi) 它不需要写正则(不需要考虑各种特殊字符的转义),也不用频繁的使用`n`去跳转,而且修改的过程还很直观. (不像Ctrl+v的列编辑模式,只有退出了编辑模式才能在其他地方看到效果) 另外,推荐一个以前我会用的骚操作`gn`. 配合操作符`cgn`去编辑,后面都不需要按`n`,而直接按`.`命令. 就可以实现跳转到下一处匹配,并执行刚才的修改操作. 这个方法的缺点,就是无法跳过某些不想修改的匹配处. 4. cmake我不太熟,但我习惯于写Makefile文件,把常用的编译和运行命令放在其中. 这样配合`vim-dispatch`插件,可以很方便的异步调用编译命令. 5. 在命令行的替换模式中,使用上次的搜索模式,可以偷点懒. `:help /<CR>`,其实不用输入具体的模式,也是可以直接复用上次的模式. 但是这个也存在一个问题,不便于后面复用该替换命令.(因为后面的`/`寄存器的内容已经发生了变化) 6. 在做重构前,我会习惯性的备份之前的内容.重构完成后,核对一遍本次的修改是否正确.
作者回复: 我们干的事情是在那个项目的外部,在那个项目上打标签不好。 CMake 很好,推荐。在 Unix 平台上它默认生成 Makefile,后面你仍然可以用 make 命令。
2020-08-145 - Serenity学到这一课才发现,在这个网页里使用hjkl和左下上右按键的效果是一样的!
作者回复: 没发现池老师也用 Vim 么?😝
2022-03-101 - 进击的Lancelot吴老师,您好!请教一个问题,在重构过程操作中,我在 vim 中使用 :grep -R --include="*.cpp" --include="*.h" "\<smart_ptr\>" . 进行查找,然而什么都查找不到。在 Quickfix 的窗口中什么也没有显示。这是为什么呢?我在网上搜索,很多人都是说通过 :copen 打开 Quickfix 后就可以看到查询结果,然而我这边查询却什么也查询不到
作者回复: 目录正确吗?什么平台?(Windows下默认似乎是用find。)
2022-08-29归属地:上海2 - chriscmake报错, 好像系统缺很多库, 老师能列一下依赖库吗? cmake .. -- Could NOT find Armadillo (missing: Armadillo_DIR) -- Found the following ICU libraries: -- uc (required) -- io (required) -- Could NOT find Armadillo (missing: Armadillo_DIR)
作者回复: 这好像应该算是 C++ 那边的问题?;-) 这个问题平台相关。如果你用 Ubuntu 的话,主要需要的是: libarmadillo-dev libboost-all-dev libicu-dev ibspdlog-dev libssl-dev libtbb-dev 不一定全。另外,cpprestsdk 需要自己构建。
2020-09-28 - 瀚海星尘敲了几个小时,终于敲完了。看到 c++ 本来想逃过的,看到后面有输出,于是老老实实配了环境,编译执行,做起来发现其实也非常简单。。
作者回复: 对,不复杂,做一遍就清楚了。
2020-09-06 - doge命令多敲才是王道了,反复敲了一下午,正则表达式也渐渐能看懂了。 另外就是之前按照老师说的配置的F5好像对cmake和make都没有支持,只能用AsyncRun make在build目录下执行才能实施编译。 宏录制确实有意思,想起以前该调试信息输入确实费时间啊。。
作者回复: 对的,一定要多练习。 我的<F5>会需要使用第8讲里讲到的vimrc配置,你是不是缺了那部分?
2020-08-30 - YouCompleteMe老师,怎么启动vim的,我:Files到smart_ptr。buffer number是3
作者回复: 我在 Linux 和 Mac 上都测了一下,确实打开文件后,:ls 就只看到那一个缓冲区。 你 :ls 看到的另外两个是啥?Vim 版本多少,有没有可能是某个插件搞的鬼?
2020-08-143