{"id":17296595,"url":"https://github.com/chen3feng/devenv","last_synced_at":"2025-06-25T13:04:15.327Z","repository":{"id":8218641,"uuid":"9655726","full_name":"chen3feng/devenv","owner":"chen3feng","description":"Put develop tools here, such as style check and editing","archived":false,"fork":false,"pushed_at":"2025-04-28T09:01:26.000Z","size":306,"stargazers_count":26,"open_issues_count":5,"forks_count":23,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-25T13:04:04.200Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chen3feng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-24T19:19:11.000Z","updated_at":"2025-04-28T09:01:33.000Z","dependencies_parsed_at":"2023-09-22T20:44:51.916Z","dependency_job_id":"69ebdbd0-4883-4fbe-943f-d538fd7520e9","html_url":"https://github.com/chen3feng/devenv","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chen3feng/devenv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chen3feng%2Fdevenv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chen3feng%2Fdevenv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chen3feng%2Fdevenv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chen3feng%2Fdevenv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chen3feng","download_url":"https://codeload.github.com/chen3feng/devenv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chen3feng%2Fdevenv/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261879271,"owners_count":23223736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T11:13:15.518Z","updated_at":"2025-06-25T13:04:15.294Z","avatar_url":"https://github.com/chen3feng.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 我的开发环境配置\n\n这里是我的一些开发环境相关的配置和辅助工具。我平时开发的代码主要运行在 Linux 下，但是开发机则有\niMac、MacBook、Windows 7、Linux 服务器等多种不同环境。除了 Linux 服务器环境是公司内使用的外，其余\n的个人使用较多，这部分配置主要是针对这些环境服务的。\n\n我平时编辑代码虽然也在增加用 VS Code 的时间，但是由于强大的习惯力量，还是以 vim 为主，zsh 也是最近\n刚开始使用。\n\n这些配置主要是给 Linux（包括 docker 里的 Linux）使用，但是大部分功能也适用于 Mac 下的终端。\n\n`_` 开头的文件都是原本应该以`.`开头的放在 HOME 目录下的，由于某些 git 平台的限制，改为了下划线 `_`。\n使用时需要恢复成正确的文件名，或者用符号链接的方式使用，更方便。\n`git pull` 即可升级。方法如下：\n\n## 安装\n\n在你自己的开发机上 clone 本仓库：\n```bash\ngit clone https://github.com/chen3feng/devenv.git\n```\n\n然后，创建你自己的配置文件：\n\n- 你的 ~/.bashrc（如果你用 zsh）：\n  ```bash\n  source /path/to/this/devenv/_bashrc\n  ```\n- 你的 ~/.inputrc（如果你用 bash）：\n  ```inputrc\n  $include /path/to/this/devenv/_inputrc\n  ```\n- 你的 ~/.zshrc（如果你用 zsh）：\n  ```zsh\n  source /path/to/this/devenv/_zshrc\n  ```\n- 你的 ~/.vimrc（如果你用 vim）：\n  ```vim\n  source /path/to/this/devenv/_vimrc\n  ```\n\n我也提供了一个简单的 `install` （Windows: `install.bat`）命令以自动安装。\n\n## Shell\n\n### .bashrc\n\nbash 基本配置。\n\n### .zshrc\n\n最近在试用 zsh，配合 zinit，开启了语法高亮和智能补全，感觉还不错（试过 oh-my-zsh 感觉太慢，放弃了），\n也配置了以上的按键支持。\n\n### 一些自定义的便利的命令\n\n#### trash\\_rm\n\n对 `rm` 命令增加回收站功能，根据系统不同，被删除的文件或者目录会被移到不同的回收站目录里：\n\n- MacOS：系统垃圾篓，也就是 `~/.Trash` 目录，可以用 `Finder.app` 查看\n- 其他系统：`~/.local/trash` 目录\n\n使用 `-D` 参数绕过回收站直接删除。\n\n#### find\\_sources\n\n对 `find` 命令的包装，用于搜索源代码文件：\n```bash\n# 查找所有的 c/c++ 源代码（包括头文件）\nfindallcc | xargs grep '#include'\n```\n\n#### 常用命令的设置\n\ngrep 自动带彩色，排除 `.svn`、`.git` 目录。\n\n#### mkcd 命令\n\n创建并立即进入目录，支持 `mkdir` 的各种参数，比如 `-p` 等，只允许支持一个目录名参数。\n\n示例：\n\n```\nmkcd 123\nmkcd -p 1/2/3\n```\n\n#### mytop 命令\n\n在 top 命令中只显示自己用户的进程。\n\n#### pinstall 命令\n\n统一的包管理命令别名，根据系统的不同，实际可能是 `apt install`、`yum install`、`brew install`。\n此命令仅为减少一点输入量，没有任何其他功能。\n（当前为实验状态）\n\n## .inputrc\n\n这是 bash，python 交互环境等用的 [readline](https://zh.wikipedia.org/zh-cn/GNU_Readline) 库的配置文件。\n功能：\n- 输入命令的前缀，然后按\u003ckbd\u003e↑\u003c/kbd\u003e\u003ckbd\u003e↓\u003c/kbd\u003e箭头就只出匹配前缀的历史命令。\n- 输入 \u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003e←\u003c/kbd\u003e 和 \u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003e→\u003c/kbd\u003e 以词为单位移动光标\n- 同上，只是换为 \u003ckbd\u003eCtrl\u003c/kbd\u003e 键，因为 Windows 上的 XShell 默认无法输入以上组合键\n- Mac 上支持 \u003ckbd\u003e Delete\u003c/kbd\u003e 键和 \u003ckbd\u003eHome\u003c/kbd\u003e 和 \u003ckbd\u003eEnd\u003c/kbd\u003e 键\n\n修改后输入 \u003ckbd\u003eCtrl\u003c/kbd\u003e-\u003ckbd\u003eX\u003c/kbd\u003e \u003ckbd\u003eCtrl\u003c/kbd\u003e-\u003ckbd\u003eR\u003c/kbd\u003e 或者执行 `bind -f  ~/.inputrc`\n生效，如果不行，尝试重新登录。\n\n## .vimrc\n\nVIM 的配置文件，功能：\n* 设置基于 [google 代码规范](http://google.github.io/styleguide/)的格式控制\n* 创建 c++ 头文件时自动插入符合 google代码规范的 inclusion guard\n* 创建 C++ test 文件时，自动插入 #include gtest 头文件的包含\n* 打开文件时自动识别GNU代码风格的路径，采用 gnu 代码风格\n* 打开文件时插入符自动跳到上次退出时的位置\n* 显示 80/100 列标尺，防止代码行太长\n* 自动识别不同文件的中文编码，避免解码错误导致的乱码\n* 自动识别终端编码，避免显示乱码\n* 高亮显示代码中的 TAB 字符\n* 以彩色高亮显示 glog 日志文件中的错误，警告等信息\n* 编辑时，\u003ckbd\u003eCtrl\u003c/kbd\u003e-\u003ckbd\u003eP\u003c/kbd\u003e触发代码补全\n* 多Tab编辑文件时，\u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003e←\u003c/kbd\u003e 到上一个文件，\u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003e→\u003c/kbd\u003e 到下一\n  个文件\n* 修改过的文件自动备份到 `~/.vimbackup` 目录下\n* 保存时，自动删除行尾空白字符，对unix格式文本文件自动删除多余的 `\\r` 字符\n* [QuickFix模式](http://vimcdoc.sourceforge.net/doc/quickfix.html)快捷键：\u003ckbd\u003eF5\u003c/kbd\u003e 构建代码\n  (执行blade build命令)，\u003ckbd\u003eF3\u003c/kbd\u003e 上一个错误，\u003ckbd\u003eF4\u003c/kbd\u003e 下一个错误，\u003ckbd\u003eF9\u003c/kbd\u003e 切换\n  QuickFix 窗口\n* `:Build` 自定义命令，不离开 vim，编译代码，并进入 QuickFix 模式，比如 `:Build blade build ...`\n* `:PlaybackBuildlog` 自定义命令，用于加载任意类似编译错误的代码构建检查日志文件，进入 QuickFix 模式\n\n### QuickFix模式\n\n是指 Vim 里自动分析编译错误信息，在不离开 Vim 的情况下，定位到各个出错行的一种快速代码修复模式。\n\n### PlaybackBuildlog\n\n这里的 `build.log` 是指任何类似编译器错误信息格式的文本文件，包含文件名，行号，（列号），错误信息，\n除了编译器，`grep` 带上 `-n` 参数，以及很多代码检查工具，都能生成这种格式。\n\n## XShell 的问题\n\n我在 Windows 上主要使用 XShell，但是发现它不能输入 \u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003e←\u003c/kbd\u003e 和\n\u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003e→\u003c/kbd\u003e 组合键，用以下方法可以解决：\n\n- 点击打开【工具/按键对应】菜单\n- 按【新建】按钮\n- 输入需要增加的组合键，就会弹出【编辑】窗口\n- 在【操作/类型】里选择【发送字符串】\n- 在【字串】编辑框里输入要发送的内容，如何知道应该发送什么按键呢？也许可以查表，但是我用的是更直接的方式：\n  - 在其他能输入该组合键的终端（比如 Mac 上的 iTerm）里输入 `cat` 命令，按键就会以\n    [ANSI 转义序列](https://zh.wikipedia.org/wiki/ANSI%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97)的方式显示出来\n  - 比如如果输入 \u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003e←\u003c/kbd\u003e 就会显示 `^[[1;2D`\n  - 如果你真照着输入就错了，因为开头的 `^[` 实际上是 [\u003ckbd\u003eESC\u003c/kbd\u003e](https://zh.wikipedia.org/wiki/%E9%80%80%E5%87%BA%E9%94%AE)\n    字符，需要通过按\u003ckbd\u003eAlt\u003c/kbd\u003e+小键盘“27”来输入\n  - 但是 XShell 的这个编辑框不支持这么输入特殊字符，所以得换个编辑器，比如【记事本】，输入后复制过来\n- 输入完成后，点击【确定】生效\n\n## 目录结构\n\n### [bin 目录](bin)\n\n一些便利的辅助工具，通过本仓库初始化 shell 后就会被自动纳入 `PATH` 环境变量，可以直接使用。\n\n### [docker 目录](docker)\n\n基于 docker 的 Linux 开发环境，方便在 Mac/Windows 下进行 Linux 开发，并确保使用相同的工具集合。\n\n### [shell 目录](shell)\n\nshell 辅助函数等，使用时无需关心。\n\n### [vscode 目录](vscode)\n\n由于 VS Code 支持了远程开发，我就在学习和逐渐转移到上面去，记录一些相关的信息。\n\n### [xshell 目录](xshell)\nxshell 的一些配置文件，主要是一些主题。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchen3feng%2Fdevenv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchen3feng%2Fdevenv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchen3feng%2Fdevenv/lists"}