Skip to content

chen3feng/devenv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

我的开发环境配置

这里是我的一些开发环境相关的配置和辅助工具。我平时开发的代码主要运行在 Linux 下,但是开发机则有 iMac、MacBook、Windows 7、Linux 服务器等多种不同环境。除了 Linux 服务器环境是公司内使用的外,其余 的个人使用较多,这部分配置主要是针对这些环境服务的。

我平时编辑代码虽然也在增加用 VS Code 的时间,但是由于强大的习惯力量,还是以 vim 为主,zsh 也是最近 刚开始使用。

这些配置主要是给 Linux(包括 docker 里的 Linux)使用,但是大部分功能也适用于 Mac 下的终端。

_ 开头的文件都是原本应该以.开头的放在 HOME 目录下的,由于某些 git 平台的限制,改为了下划线 _。 使用时需要恢复成正确的文件名,或者用符号链接的方式使用,更方便。 git pull 即可升级。方法如下:

安装

在你自己的开发机上 clone 本仓库:

git clone https://github.com/chen3feng/devenv.git

然后,创建你自己的配置文件:

  • 你的 ~/.bashrc(如果你用 zsh):
    source /path/to/this/devenv/_bashrc
  • 你的 ~/.inputrc(如果你用 bash):
    $include /path/to/this/devenv/_inputrc
  • 你的 ~/.zshrc(如果你用 zsh):
    source /path/to/this/devenv/_zshrc
  • 你的 ~/.vimrc(如果你用 vim):
    source /path/to/this/devenv/_vimrc

我也提供了一个简单的 install (Windows: install.bat)命令以自动安装。

Shell

.bashrc

bash 基本配置。

.zshrc

最近在试用 zsh,配合 zinit,开启了语法高亮和智能补全,感觉还不错(试过 oh-my-zsh 感觉太慢,放弃了), 也配置了以上的按键支持。

一些自定义的便利的命令

trash_rm

rm 命令增加回收站功能,根据系统不同,被删除的文件或者目录会被移到不同的回收站目录里:

  • MacOS:系统垃圾篓,也就是 ~/.Trash 目录,可以用 Finder.app 查看
  • 其他系统:~/.local/trash 目录

使用 -D 参数绕过回收站直接删除。

find_sources

find 命令的包装,用于搜索源代码文件:

# 查找所有的 c/c++ 源代码(包括头文件)
findallcc | xargs grep '#include'

常用命令的设置

grep 自动带彩色,排除 .svn.git 目录。

mkcd 命令

创建并立即进入目录,支持 mkdir 的各种参数,比如 -p 等,只允许支持一个目录名参数。

示例:

mkcd 123
mkcd -p 1/2/3

mytop 命令

在 top 命令中只显示自己用户的进程。

pinstall 命令

统一的包管理命令别名,根据系统的不同,实际可能是 apt installyum installbrew install。 此命令仅为减少一点输入量,没有任何其他功能。 (当前为实验状态)

.inputrc

这是 bash,python 交互环境等用的 readline 库的配置文件。 功能:

  • 输入命令的前缀,然后按箭头就只出匹配前缀的历史命令。
  • 输入 Shift-Shift- 以词为单位移动光标
  • 同上,只是换为 Ctrl 键,因为 Windows 上的 XShell 默认无法输入以上组合键
  • Mac 上支持 Delete 键和 HomeEnd

修改后输入 Ctrl-X Ctrl-R 或者执行 bind -f ~/.inputrc 生效,如果不行,尝试重新登录。

.vimrc

VIM 的配置文件,功能:

  • 设置基于 google 代码规范的格式控制
  • 创建 c++ 头文件时自动插入符合 google代码规范的 inclusion guard
  • 创建 C++ test 文件时,自动插入 #include gtest 头文件的包含
  • 打开文件时自动识别GNU代码风格的路径,采用 gnu 代码风格
  • 打开文件时插入符自动跳到上次退出时的位置
  • 显示 80/100 列标尺,防止代码行太长
  • 自动识别不同文件的中文编码,避免解码错误导致的乱码
  • 自动识别终端编码,避免显示乱码
  • 高亮显示代码中的 TAB 字符
  • 以彩色高亮显示 glog 日志文件中的错误,警告等信息
  • 编辑时,Ctrl-P触发代码补全
  • 多Tab编辑文件时,Shift- 到上一个文件,Shift- 到下一 个文件
  • 修改过的文件自动备份到 ~/.vimbackup 目录下
  • 保存时,自动删除行尾空白字符,对unix格式文本文件自动删除多余的 \r 字符
  • QuickFix模式快捷键:F5 构建代码 (执行blade build命令),F3 上一个错误,F4 下一个错误,F9 切换 QuickFix 窗口
  • :Build 自定义命令,不离开 vim,编译代码,并进入 QuickFix 模式,比如 :Build blade build ...
  • :PlaybackBuildlog 自定义命令,用于加载任意类似编译错误的代码构建检查日志文件,进入 QuickFix 模式

QuickFix模式

是指 Vim 里自动分析编译错误信息,在不离开 Vim 的情况下,定位到各个出错行的一种快速代码修复模式。

PlaybackBuildlog

这里的 build.log 是指任何类似编译器错误信息格式的文本文件,包含文件名,行号,(列号),错误信息, 除了编译器,grep 带上 -n 参数,以及很多代码检查工具,都能生成这种格式。

XShell 的问题

我在 Windows 上主要使用 XShell,但是发现它不能输入 Shift-Shift- 组合键,用以下方法可以解决:

  • 点击打开【工具/按键对应】菜单
  • 按【新建】按钮
  • 输入需要增加的组合键,就会弹出【编辑】窗口
  • 在【操作/类型】里选择【发送字符串】
  • 在【字串】编辑框里输入要发送的内容,如何知道应该发送什么按键呢?也许可以查表,但是我用的是更直接的方式:
    • 在其他能输入该组合键的终端(比如 Mac 上的 iTerm)里输入 cat 命令,按键就会以 ANSI 转义序列的方式显示出来
    • 比如如果输入 Shift- 就会显示 ^[[1;2D
    • 如果你真照着输入就错了,因为开头的 ^[ 实际上是 ESC 字符,需要通过按Alt+小键盘“27”来输入
    • 但是 XShell 的这个编辑框不支持这么输入特殊字符,所以得换个编辑器,比如【记事本】,输入后复制过来
  • 输入完成后,点击【确定】生效

目录结构

一些便利的辅助工具,通过本仓库初始化 shell 后就会被自动纳入 PATH 环境变量,可以直接使用。

基于 docker 的 Linux 开发环境,方便在 Mac/Windows 下进行 Linux 开发,并确保使用相同的工具集合。

shell 辅助函数等,使用时无需关心。

由于 VS Code 支持了远程开发,我就在学习和逐渐转移到上面去,记录一些相关的信息。

xshell 的一些配置文件,主要是一些主题。