Github 备忘清单
===

Github.com 上 80 个键盘快捷键和一些搜索技巧的备忘清单

键盘快捷键
--------

### 站点范围的快捷方式

快捷键 | 说明
:- | -
`S`  | 聚焦搜索栏
`G` `N`  | 转到您的通知
`H`  | 打开并关注用户、问题或拉取请求悬浮卡
`Esc`  | 当专注于上面时，关闭 hovercard
<!--rehype:className=shortcuts-->

### 资料库

快捷键 | 说明
:- | -
`G` `C`  | 转到 `Code` 选项卡
`G` `I`  | 转到 `Issues` 选项卡
`G` `P`  | 转到拉取请求选项卡
`G` `B`  | 转到 `Projects` 选项卡
`G` `W`  | 转到 `Wiki` 选项卡
<!--rehype:className=shortcuts-->

### 源码浏览

快捷键 | 说明
:- | -
`T`  | 激活文件查找器
`L`  | 跳转到代码中的一行
`W`  | 切换到新的分支或标签
`Y`  | 将 URL 扩展为其规范形式
`I`  | 显示或隐藏对差异的评论
`B`  | 打开责备视图
<!--rehype:className=shortcuts-->

### 源代码编辑

快捷键 | 说明
:- | -
`Ctrl` `F`  | 开始在文件编辑器中搜索
`Ctrl` `G`  | 找下一个
`Ctrl` `Shift` `G`  | 查找上一个
`Ctrl` `Shift` `F`  | 代替
`Ctrl` `Shift` `R`  | 全部替换
`Alt` `G`  | 跳转到行
`Ctrl` `Z`  | 撤消
`Ctrl` `Y`  | 重做
<!--rehype:className=shortcuts-->

### 注释

快捷键 | 说明
:- | -
`Ctrl` `B`  | 为粗体文本插入 Markdown 格式
`Ctrl` `I`  | 插入斜体文本的 Markdown 格式
`Ctrl` `K`  | 插入 Markdown 格式以创建链接
`Ctrl` `Shift` `P`  | 在编写和预览评论选项卡之间切换
`Ctrl` `Enter`  | 提交评论
`Ctrl` `.`  | 打开已保存的回复菜单，然后使用已保存的回复自动填充评论字段
`Ctrl` `G`  | 插入一个建议
`R`  | 在回复中引用所选文字
<!--rehype:className=shortcuts-->

### 项目板
<!--rehype:wrap-class=row-span-4-->

快捷键 | 说明
:- | -
`Enter/Space`  | 开始移动焦点列
`Esc`  | 取消正在进行的移动
`Enter`  | 完成正在进行的移动
`Left/H`  | 向左移动列
`Ctrl` `Left/H`  | 将列移动到最左边的位置
`Right/L`  | 向右移动列
`Ctrl` `Right/L`  | 将列移动到最右边的位置
`Enter/Space`  | 开始移动聚焦卡
`Esc`  | 取消正在进行的移动
`Enter`  | 完成正在进行的移动
`Down/J`  | 向下移动卡片
`Ctrl` `Down/J`  | 将卡片移动到列的底部
`Up/K`  | 向上移动卡片
`Ctrl` `Up/K`  | 将卡片移动到列的顶部
`Left/H`  | 将卡片移动到左侧列的底部
`Shift` `Left/H`  | 将卡片移动到左侧列的顶部
`Ctrl` `Left/H`  | 将卡片移动到最左边一列的底部
`Ctrl` `Shift` `Left/H`  | 将卡片移至最左侧列的顶部
`Right`  | 将卡片移动到右侧列的底部
`Shift` `Right/L`  | 将卡片移动到右侧列的顶部
`Ctrl` `Right/L`  | 将卡片移动到最右侧列的底部
`Ctrl` `Shift` `Right/L`  | 将卡片移至最右侧列的顶部
<!--rehype:className=shortcuts-->

### 问题和拉取请求列表
<!--rehype:wrap-class=row-span-2-->

快捷键 | 说明
:- | -
`C`  | 创建问题
`Ctrl` `/`  | 将光标聚焦在问题或拉取请求搜索栏上
`U`  | 按作者过滤
`L`  | 按标签过滤或编辑标签
`M`  | 按里程碑过滤或编辑里程碑
`A`  | 按受让人过滤或编辑受让人
`O`  | 打开问题
<!--rehype:className=shortcuts-->

### 问题和拉取请求

快捷键 | 说明
:- | -
`Q`  | 请求审稿人
`M`  | 设定一个里程碑
`L`  | 应用标签
`A`  | 设置受让人
<!--rehype:className=shortcuts-->

### 通知

快捷键 | 说明
:- | -
`E/L/Y`  | 标记为已读
`Shift` `M`  | 静音线程
<!--rehype:className=shortcuts-->

### 拉取请求的变化

快捷键 | 说明
:- | -
`C`  | 打开拉取请求中的提交列表
`T`  | 打开拉取请求中已更改文件的列表
`J`  | 在列表中向下移动选择
`K`  | 在列表中向上移动选择
`Ctrl` `Shift` `Enter`  | 在拉取请求差异上添加单个评论
`Alt` `(click)`  | 在拉取请求中折叠和展开所有过时的审阅评论之间切换
<!--rehype:className=shortcuts-->

### 网络图

快捷键 | 说明
:- | -
`Left/H`  | 向左滚动
`Right/L`  | 向右滚动
`Up/K`  | 向上滑动
`Down/J`  | 向下滚动
`Shift` `Left/H`  | 一直向左滚动
`Shift` `Right/L`  | 一直向右滚动
`Shift` `Up/K`  | 一直向上滚动
`Shift` `Down/J`  | 一直向下滚动
<!--rehype:className=shortcuts-->

搜索技巧
---

### 范围搜索
<!--rehype:wrap-class=row-span-2-->

:-- | --
:-- | --
`org:rails language:ruby` | 指定组织 <pur>`rails`</pur> 和编程语言 <pur>`ruby`</pur>
`repo:torvalds/linux io_uring` | 指定仓库 <pur>`torvalds/linux`</pur> 搜索 <pur>`io_uring`</pur>
`owner:tpope path:*.vim` | 指定拥有者 <pur>`tpope`</pur> 和文件后缀为 <pur>`*.vim`</pur>
`created:"> 2022-10-22" language:C#` | 创建于 <pur>`2022-10-22`</pur> 以后，语言为 <pur>`C#`</pur> 的条件
<!--rehype:className=style-list-->

### 文件路径
<!--rehype:wrap-class=row-span-2-->

:-- | --
:-- | --
`path:__init__.py` | 文件为 <pur>`__init__.py`</pur> 里面的内容搜索
`path:/.*shrc$/` | 文件路径包含 <pur>`.*shrc`</pur> 结尾的文件中搜索内容
`path:/src/*.js` | <pur>`src`</pur> 目录中的 <pur>`.js`</pur> 后缀的文件中搜索内容
`path:/(^\|\/)README\.md$/` | 使用正则，仅匹配特定文件名(而不是路径的一部分)
<!--rehype:className=style-list-->

### 完全符合

:-- | --
:-- | --
`out of memory` | 文本匹配 <pur>`out of memory`</pur>

### 布尔运算符

:-- | --
:-- | --
`io_uring (language:c OR language:cpp)` | 语言为 <pur>`c`</pur> 或者 <pur>`cpp`</pur> 的文件中搜索 <pur>`io_uring`</pur>
`org:kubernetes NOT repo:kubernetes/api` | 组织为 <pur>`kubernetes`</pur> 排除里面的 <pur>`api`</pur> 仓库进行搜索
<!--rehype:className=style-list-->

### 基于仓库的条件
<!--rehype:wrap-class=row-span-2-->

:-- | --
:-- | --
`stars:100..8000 stars:>10000` | 星星为 <pur>100 ~ 8000</pur> 或 <pur>10000</pur> 以上的
`forks:50..100 forks:200 forks:<5` | fork 为 <pur>50 ~ 100</pur> 或者 <pur>200</pur> 或者小于 <pur>5</pur>
`size:35` | 大小为 `35kb`
`pushed:<2022-11-23` | 推送代码时间 <pur>2022-11-23</pur> 之前
`fork:true`, `fork:only` |
`license:mit` | 基于协议 <pur>`mit`</pur> 条件
<!--rehype:className=style-list-->

### 基于 issue 的条件
<!--rehype:wrap-class=row-span-2-->

:-- | --
:-- | --
`state:open`, `state:closed` | <pur>`关闭`</pur> / <pur>`打开`</pur> 的 `issue`
`reason:completed` | <pur>`"not planned"`</pur>, <pur>`reopened`</pur>, <pur>`completed`</pur>
`label:bug` | 标签为 `bug` 的条件
`author:jaywcjlove` | 作者 <pur>`jaywcjlove`</pur> 打开
`mentions:jaywcjlove` | 提及 <pur>`jaywcjlove`</pur> 用户
`assignee:jaywcjlove` | 分配给 <pur>`jaywcjlove`</pur> 用户
`updated:<2022-11-23` | 更新日期之前
<!--rehype:className=style-list-->

### 基于用户的条件

:-- | --
:-- | --
`fullname:jaywcjlove` | 全名 <pur>jaywcjlove</pur>
`location:China` | 位置 <pur>China</pur>
`followers:20..50 followers:>200 followers:<2` | 追随者
`repos:0 repos:<40 repos:>5` | 仓库数量
<!--rehype:className=style-list-->

### Symbol 限定符

搜索 `go` 语言中的 `WithContext` 符号

```
language:go symbol:WithContext
```

查询将查找在 `Rust` 中实现的 `String` 类型转换：

```
language:rust symbol:/^String::to_.*/
```

### 使用布尔运算
<!--rehype:wrap-class=col-span-2-->

查询将匹配包含 `sparse` 或 `index` 的文档

```js
sparse OR index
```

排除 `__testing__` 目录中的文件，您可以搜索：

```js
"fatal error" NOT path:__testing__
```

您可以使用括号来表达更复杂的布尔表达式

```js
(language:ruby OR language:python) AND NOT path:"/tests/"
```

使用运算符 `AND`、`OR` 和 `NOT` 来组合搜索词

### is 限定符

- `archived`: 限制搜索`已存档`的版本库
- `fork`: 限制搜索已`分叉`的版本库
- `vendored`: 限制搜索被检测为 vendored 的内容
- `generated`: 限制搜索检测为`已生成`的内容

示例

:-- | --
:-- | --
`path:/^MIT.txt$/ is:archived` | 已归档存储库，中包含名为 <pur>MIT.txt</pur> 的文件
`log4j NOT is:archived` | 限定符 <pur>is:</pur> 可以与 <pur>NOT</pur> 运算符反转
`log4j NOT is:fork` | 从结果中排除<pur>分叉</pur>
<!--rehype:className=style-list-->

另见
-----

- [Keyboard shortcuts for Github](https://help.github.com/articles/using-keyboard-shortcuts/) _(help.github.com)_
