Linux 高效编程的一些总结

这篇文章总结了一些 Linux 下高效C++编程的工具。

专业

菜鸟写一天的产出可能高不过高手一个小时,工具神马的都是浮云,自身的专业才是最重要 的。

高效的核心技能——自动化

绝大部分时间,你觉得效率不高是因为你在不断的重复,把重复的东西自动化就是效率。

自动化的关键——脚本语言

脚本语言非常适合自动化的工作,可以大大的提供效率,比如说我有一个专门用于创建新的 项目的 cpds(cpp project directory structure),它可以用来初始化一个可以新项目的 完整目录结构和基本的配置文件

动静结合,动态语言 + 静态语言 = 编程效率 + 程序的效率

我个人使用 Python,非常棒的一门语言,我用它写脚本,写爬虫,写VIM插件等等

高效的 VIM

C++编程在 Linux 下没有太多好用的IDE,编辑器 + GCC + automake(或者 clang + cmake )可能是最高效的开发方式,编程的绝大部分时间都是在和编辑器打交道,善用好使用编辑 器可以极大的提高效率。编辑器无好坏之分,个人使用VIM,这里介绍高效使用VIM的一些 TIPS。

VIM 从入门到不放弃

很多人耐不住寂寞,熬不到入门的那一天就放弃了 VIM。学习曲线没有想象中的那么高,入 门只需要看 vimtutor 就够了。坚持用 VIM 两个礼拜,基本上都能入门。很多人没有办法 习惯 HJKL 的操作习惯,对自己狠一点,置之死地而后生,直接把方向键全部屏蔽掉。

1
2
3
4
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>

学会高效的使用VIM的核心功能

斧子需要磨才会锋利,但是千万不要磨错了边。急于求成是很多人死在VIM进阶路上的绊脚 石,欲速则不达,先看看《Vim实用技巧》这本书,在考虑去配置的各种各样的插件。不要 做一个无插件不能用的VIM党。

好用的插件的推荐

YouCompleteMe

需要注意的地方:

  1. 这个插件需要编译,记得在编译的时候加上 –clang-completer 选项

  2. 这个插件需要你提供 .ycm_extra_conf.py 文件,每个项目都应该单独在根目录下放 一个这样的文件。关键部分在于配置开头的 flags 选项中的中头文件路径。

这个配置文件不用手动生成,可以使用YCM-Generator自动生成,安装完成之后,在你 的编译目录下(包含 Makefile 的那个目录)运行 YcmGenerateConfig 命令即可生成 配置文件,然后调整配置文件中的相对路径(编译目录可能不是根目录)即可。

  1. 这个插件超级难以安装,因为下载 clang 需要很长时间,耐心一点,欲速则不达。

UltiSnippet + vim-snippet

代码自动生成的另外一个神器,前者是引擎,后者是脚本,他们的关系在xxx一文中有提及 ,不再赘述。

需要注意的地方:

  1. 你可以自己编辑代码块儿生成规则!你可以用它来插入你自己定制常用代码,相关教程 参考xxx

NERDTree

强大的目录树,工程管理必备

ctrlp

快速的查找文件,这个功能来自 sublime,sublime 的用户应该会非常顺手。

需要注意的地方:

  1. 你可以配置搜索程序,目前最快是不是 grep,也不是 ack,是 ag。

  2. 你可以配置 ag,来忽略掉其中的某些你不想要的文件,只要在 HOME 目录下放一个 .agignore用力配置你想要忽略的文件即可

  3. 它是一个框架有大量基于它的插件,比如 buffer,funky,mru,我自己基于它写过一个 用于引入头文件的 ctrlp-header

vim-fswitch

快速的交换头文件和实现文件

vim-multiple-cursors

来自 sublime 的功能,多行同时编辑,重命名的得力助手

ctrlsf.vim

同样是来自 sublime 的功能,配置前面的 vim-multiple-cursors 可以同时修改多个文件 中的名字。

vim-autoformat

代码格式化的工具

Ack.vim

需要注意的地方:

  1. 它只是名字脚本 Ack,但是可以配置使用 ag 来进行搜索

不要再退出vim,使用 grep 搜索之后按照行号来打开文件,你完全可以在 Vim 中完成这项 工作。

fugitive

你不要退出 vim 进行 git 操作,它的强大超乎你的想象。

高效的终端

高效的另一个关键点个人认为是:专注,心无旁骛。如果电脑只有一个终端,一个键盘,你 可能会成为最高效的程序员。

tmux

一个 tmux 顶 N 个显示屏,丢掉鼠标,你的效率会直线上升。

zsh + oh-my-zsh + antigen

需要注意的地方:

  1. zsh 是可以配置插件的,它的插件管理器有很多,比如 antigen。

  2. 非常好用的一些插件:

    • zsh-syntax-highlighting
    • zsh-autosuggestions

fzf

把模糊匹配带到你的终端上来,好用到爆