Compare commits
42 Commits
Author | SHA1 | Date | |
---|---|---|---|
63e5cd5109 | |||
f21715f172 | |||
2bd72b4c05 | |||
10a4fe3f5b | |||
0a5373796d | |||
64a2fba903 | |||
a9f661f87f | |||
dcd6d5bdbe | |||
d25eaebcd2 | |||
501c7d757e | |||
8db7257b7a | |||
4c0c1c95e8 | |||
7e263a21e7 | |||
54eba6ebd8 | |||
97cda7ec9f | |||
746a387005 | |||
93e23d581f | |||
44711bf9a1 | |||
e251179751 | |||
bf114d2ccf | |||
5877c04e57 | |||
cb64b52cda | |||
396037f90a | |||
3ad1e261c2 | |||
915a802060 | |||
b9ca744978 | |||
c514341b29 | |||
9562c34876 | |||
91190ec29a | |||
7b5e77dd30 | |||
a41ec2693e | |||
f915f4c155 | |||
e1bf0f9655 | |||
5728ac71f9 | |||
39fef5e856 | |||
d1b87b9de9 | |||
026dc585a8 | |||
d09737fcda | |||
029e2751c4 | |||
0a4bd03900 | |||
fe7782a0c4 | |||
9751df06b9 |
25
.github/workflows/ci.yml
vendored
@ -6,6 +6,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
if: github.repository == 'jaywcjlove/reference'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
@ -44,6 +45,13 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
package-path: ./package.json
|
package-path: ./package.json
|
||||||
|
|
||||||
|
- name: gh-pages README.md
|
||||||
|
working-directory: dist
|
||||||
|
run: |
|
||||||
|
cat > README.md << EOF
|
||||||
|
Website: https://jaywcjlove.github.io/reference
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
uses: peaceiris/actions-gh-pages@v3
|
||||||
with:
|
with:
|
||||||
@ -58,7 +66,6 @@ jobs:
|
|||||||
filter-author: (小弟调调™)
|
filter-author: (小弟调调™)
|
||||||
filter: (^[\s]+?[R|r]elease)|(^[R|r]elease)
|
filter: (^[\s]+?[R|r]elease)|(^[R|r]elease)
|
||||||
|
|
||||||
|
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
uses: ncipollo/release-action@v1
|
uses: ncipollo/release-action@v1
|
||||||
if: steps.create_tag.outputs.successful
|
if: steps.create_tag.outputs.successful
|
||||||
@ -69,26 +76,26 @@ jobs:
|
|||||||
body: |
|
body: |
|
||||||
Documentation ${{ needs.build.outputs.create_tag_version }}: https://raw.githack.com/jaywcjlove/reference/${{ steps.changelog.outputs.gh-pages-short-hash }}/index.html
|
Documentation ${{ needs.build.outputs.create_tag_version }}: https://raw.githack.com/jaywcjlove/reference/${{ steps.changelog.outputs.gh-pages-short-hash }}/index.html
|
||||||
Comparing Changes: ${{ steps.changelog.outputs.compareurl }}
|
Comparing Changes: ${{ steps.changelog.outputs.compareurl }}
|
||||||
|
|
||||||
${{ steps.changelog.outputs.changelog }}
|
${{ steps.changelog.outputs.changelog }}
|
||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
[](https://hub.docker.com/r/wcjiang/reference) [](https://hub.docker.com/r/wcjiang/reference) [](https://hub.docker.com/r/wcjiang/reference)
|
[](https://hub.docker.com/r/wcjiang/reference) [](https://hub.docker.com/r/wcjiang/reference) [](https://hub.docker.com/r/wcjiang/reference)
|
||||||
|
|
||||||
轻松通过 `docker` 部署 `Quick Reference` 网站。
|
轻松通过 `docker` 部署 `Quick Reference` 网站。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker pull wcjiang/reference
|
docker pull wcjiang/reference
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --name reference --rm -d -p 9667:3000 wcjiang/reference:latest
|
docker run --name reference --rm -d -p 9667:3000 wcjiang/reference:latest
|
||||||
# Or
|
# Or
|
||||||
docker run --name reference -itd -p 9667:3000 wcjiang/reference:latest
|
docker run --name reference -itd -p 9667:3000 wcjiang/reference:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
在浏览器中访问以下 URL
|
在浏览器中访问以下 URL
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
http://localhost:9667/
|
http://localhost:9667/
|
||||||
```
|
```
|
||||||
@ -144,8 +151,6 @@ jobs:
|
|||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
tags: ghcr.io/jaywcjlove/reference:${{steps.changelog.outputs.version}}
|
tags: ghcr.io/jaywcjlove/reference:${{steps.changelog.outputs.version}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# # Create Docker Image in Github
|
# # Create Docker Image in Github
|
||||||
# - name: Login to GitHub registry
|
# - name: Login to GitHub registry
|
||||||
# run: echo ${{ github.token }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
# run: echo ${{ github.token }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
||||||
@ -166,7 +171,7 @@ jobs:
|
|||||||
# # Create Docker Image
|
# # Create Docker Image
|
||||||
# - name: Docker login
|
# - name: Docker login
|
||||||
# run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }}
|
# run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
# - name: Build reference image
|
# - name: Build reference image
|
||||||
# run: docker image build -t reference .
|
# run: docker image build -t reference .
|
||||||
|
|
||||||
@ -181,4 +186,4 @@ jobs:
|
|||||||
# run: |
|
# run: |
|
||||||
# echo "outputs.tag - ${{ steps.changelog.outputs.version }}"
|
# echo "outputs.tag - ${{ steps.changelog.outputs.version }}"
|
||||||
# docker tag reference ${{ secrets.DOCKER_USER }}/reference:${{steps.changelog.outputs.version}}
|
# docker tag reference ${{ secrets.DOCKER_USER }}/reference:${{steps.changelog.outputs.version}}
|
||||||
# docker push ${{ secrets.DOCKER_USER }}/reference:${{steps.changelog.outputs.version}}
|
# docker push ${{ secrets.DOCKER_USER }}/reference:${{steps.changelog.outputs.version}}
|
||||||
|
3
.github/workflows/win.yml
vendored
@ -6,6 +6,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
if: github.repository == 'jaywcjlove/reference'
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
@ -24,4 +25,4 @@ jobs:
|
|||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
path: ${{ github.workspace }}\dist\**\*
|
path: ${{ github.workspace }}\dist\**\*
|
||||||
|
@ -184,8 +184,8 @@ REF_LABEL=网站首页
|
|||||||
<a href="https://github.com/Brid9e" title="Brid9e">
|
<a href="https://github.com/Brid9e" title="Brid9e">
|
||||||
<img src="https://avatars.githubusercontent.com/u/85558909?v=4" width="42;" alt="Brid9e"/>
|
<img src="https://avatars.githubusercontent.com/u/85558909?v=4" width="42;" alt="Brid9e"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/CharlotteZeng" title="Chart">
|
<a href="https://github.com/CharlotteZeng" title="hanchZ">
|
||||||
<img src="https://avatars.githubusercontent.com/u/19461184?v=4" width="42;" alt="Chart"/>
|
<img src="https://avatars.githubusercontent.com/u/19461184?v=4" width="42;" alt="hanchZ"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/DaiNing810" title="DaiN">
|
<a href="https://github.com/DaiNing810" title="DaiN">
|
||||||
<img src="https://avatars.githubusercontent.com/u/94962339?v=4" width="42;" alt="DaiN"/>
|
<img src="https://avatars.githubusercontent.com/u/94962339?v=4" width="42;" alt="DaiN"/>
|
||||||
@ -193,6 +193,9 @@ REF_LABEL=网站首页
|
|||||||
<a href="https://github.com/demigodliu" title="DemigodLiu">
|
<a href="https://github.com/demigodliu" title="DemigodLiu">
|
||||||
<img src="https://avatars.githubusercontent.com/u/30372735?v=4" width="42;" alt="DemigodLiu"/>
|
<img src="https://avatars.githubusercontent.com/u/30372735?v=4" width="42;" alt="DemigodLiu"/>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="https://github.com/eeeeeio" title="EEEEE">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/20723545?v=4" width="42;" alt="EEEEE"/>
|
||||||
|
</a>
|
||||||
<a href="https://github.com/jasnzhuang" title="Jason Zhuang">
|
<a href="https://github.com/jasnzhuang" title="Jason Zhuang">
|
||||||
<img src="https://avatars.githubusercontent.com/u/16612921?v=4" width="42;" alt="Jason Zhuang"/>
|
<img src="https://avatars.githubusercontent.com/u/16612921?v=4" width="42;" alt="Jason Zhuang"/>
|
||||||
</a>
|
</a>
|
||||||
@ -259,6 +262,9 @@ REF_LABEL=网站首页
|
|||||||
<a href="https://github.com/onewesong" title="onewesong">
|
<a href="https://github.com/onewesong" title="onewesong">
|
||||||
<img src="https://avatars.githubusercontent.com/u/17920822?v=4" width="42;" alt="onewesong"/>
|
<img src="https://avatars.githubusercontent.com/u/17920822?v=4" width="42;" alt="onewesong"/>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="https://github.com/Mowmowj" title="shelton">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/24759562?v=4" width="42;" alt="shelton"/>
|
||||||
|
</a>
|
||||||
<a href="https://github.com/wjjwkwindy" title="wjjwkwindy">
|
<a href="https://github.com/wjjwkwindy" title="wjjwkwindy">
|
||||||
<img src="https://avatars.githubusercontent.com/u/9508591?v=4" width="42;" alt="wjjwkwindy"/>
|
<img src="https://avatars.githubusercontent.com/u/9508591?v=4" width="42;" alt="wjjwkwindy"/>
|
||||||
</a>
|
</a>
|
||||||
|
46
README.md
@ -16,7 +16,7 @@ Quick Reference
|
|||||||
|
|
||||||
## 正在建设中...
|
## 正在建设中...
|
||||||
|
|
||||||
坑已挖,需要您的参与完善和贡献!🙏
|
坑已挖,需要您的参与完善和[贡献](./docs/quickreference.md)!🙏
|
||||||
<!--rehype:style=padding-bottom: 23px;-->
|
<!--rehype:style=padding-bottom: 23px;-->
|
||||||
|
|
||||||
[Ansible](./docs/ansible.md)<!--rehype:style=background: rgb(238 0 0);&class=contributing tag&data-lang=RedHat&data-info=👆看看还缺点儿什么?-->
|
[Ansible](./docs/ansible.md)<!--rehype:style=background: rgb(238 0 0);&class=contributing tag&data-lang=RedHat&data-info=👆看看还缺点儿什么?-->
|
||||||
@ -27,7 +27,7 @@ Quick Reference
|
|||||||
[Flutter](./docs/flutter.md)<!--rehype:style=background: rgb(150 220 254);&class=contributing tag&data-lang=Dart-->
|
[Flutter](./docs/flutter.md)<!--rehype:style=background: rgb(150 220 254);&class=contributing tag&data-lang=Dart-->
|
||||||
[Gitlab CI/CD](./docs/gitlab-ci.md)<!--rehype:style=background: rgb(226 67 41);&class=contributing-->
|
[Gitlab CI/CD](./docs/gitlab-ci.md)<!--rehype:style=background: rgb(226 67 41);&class=contributing-->
|
||||||
[LaTeX](./docs/latex.md)<!--rehype:style=background: rgb(0 128 128);&class=contributing-->
|
[LaTeX](./docs/latex.md)<!--rehype:style=background: rgb(0 128 128);&class=contributing-->
|
||||||
[Lua](./docs/lua.md)<!--rehype:style=background: rgb(3 3 128);-->
|
[Lua](./docs/lua.md)<!--rehype:style=background: rgb(3 3 128);&class=contributing-->
|
||||||
[NestJS](./docs/nestjs.md)<!--rehype:style=background: rgb(237 21 67);&class=contributing-->
|
[NestJS](./docs/nestjs.md)<!--rehype:style=background: rgb(237 21 67);&class=contributing-->
|
||||||
[MATLAB](./docs/matlab.md)<!--rehype:style=background: rgb(0 118 168);&class=contributing-->
|
[MATLAB](./docs/matlab.md)<!--rehype:style=background: rgb(0 118 168);&class=contributing-->
|
||||||
[Oracle](./docs/oracle.md)<!--rehype:style=background: rgb(255 0 0);&class=contributing tag&data-lang=SQL-->
|
[Oracle](./docs/oracle.md)<!--rehype:style=background: rgb(255 0 0);&class=contributing tag&data-lang=SQL-->
|
||||||
@ -84,7 +84,9 @@ Quick Reference
|
|||||||
[HTML](./docs/html.md)<!--rehype:style=background: rgb(228 77 39);-->
|
[HTML](./docs/html.md)<!--rehype:style=background: rgb(228 77 39);-->
|
||||||
[JavaScript](./docs/javascript.md)<!--rehype:style=background: rgb(203 183 31);-->
|
[JavaScript](./docs/javascript.md)<!--rehype:style=background: rgb(203 183 31);-->
|
||||||
[Less.js](./docs/lessjs.md)<!--rehype:style=background: rgb(29 54 93);&class=tag&data-lang=CSS-->
|
[Less.js](./docs/lessjs.md)<!--rehype:style=background: rgb(29 54 93);&class=tag&data-lang=CSS-->
|
||||||
|
[Next.js](./docs/nextjs.md)<!--rehype:style=background: rgb(0 0 0);&class=tag&data-lang=React-->
|
||||||
[React](./docs/react.md)<!--rehype:style=background: rgb(34 143 173);-->
|
[React](./docs/react.md)<!--rehype:style=background: rgb(34 143 173);-->
|
||||||
|
[React Native](./docs/react-native.md)<!--rehype:style=background: rgb(34 143 173);&class=tag&data-lang=React-->
|
||||||
[RegEx 正则表达式](./docs/regex.md)<!--rehype:style=background: rgb(149 36 155);-->
|
[RegEx 正则表达式](./docs/regex.md)<!--rehype:style=background: rgb(149 36 155);-->
|
||||||
[TypeScript](./docs/typescript.md)<!--rehype:style=background: rgb(49 120 198);-->
|
[TypeScript](./docs/typescript.md)<!--rehype:style=background: rgb(49 120 198);-->
|
||||||
[Vue 2](./docs/vue2.md)<!--rehype:style=background: rgb(64 184 131);-->
|
[Vue 2](./docs/vue2.md)<!--rehype:style=background: rgb(64 184 131);-->
|
||||||
@ -99,6 +101,7 @@ Quick Reference
|
|||||||
[Lerna](./docs/lerna.md)<!--rehype:style=background: rgb(192 132 252);-->
|
[Lerna](./docs/lerna.md)<!--rehype:style=background: rgb(192 132 252);-->
|
||||||
[npm](./docs/npm.md)<!--rehype:style=background: rgb(203 2 0);-->
|
[npm](./docs/npm.md)<!--rehype:style=background: rgb(203 2 0);-->
|
||||||
[NestJS](./docs/nestjs.md)<!--rehype:style=background: rgb(237 21 67);&class=contributing-->
|
[NestJS](./docs/nestjs.md)<!--rehype:style=background: rgb(237 21 67);&class=contributing-->
|
||||||
|
[PM2](./docs/pm2.md)<!--rehype:style=background: rgb(73 117 241);&class=contributing-->
|
||||||
[package.json](./docs/package.json.md)<!--rehype:style=background: rgb(132 132 132);-->
|
[package.json](./docs/package.json.md)<!--rehype:style=background: rgb(132 132 132);-->
|
||||||
[Yarn](./docs/yarn.md)<!--rehype:style=background: rgb(33 136 182);-->
|
[Yarn](./docs/yarn.md)<!--rehype:style=background: rgb(33 136 182);-->
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
@ -106,16 +109,11 @@ Quick Reference
|
|||||||
## 工具
|
## 工具
|
||||||
|
|
||||||
[Emacs](./docs/emacs.md)<!--rehype:style=background: rgb(98 36 134);-->
|
[Emacs](./docs/emacs.md)<!--rehype:style=background: rgb(98 36 134);-->
|
||||||
[Gmail](./docs/gmail.md)<!--rehype:style=background: rgb(234 67 54);-->
|
[Github](./docs/github.md)<!--rehype:style=background: rgb(36 41 47);-->
|
||||||
[nginx](./docs/nginx.md)<!--rehype:style=background: rgb(0 153 0);-->
|
[nginx](./docs/nginx.md)<!--rehype:style=background: rgb(0 153 0);-->
|
||||||
[Semver](./docs/semver.md)<!--rehype:style=background: rgb(106 111 141);-->
|
[Semver](./docs/semver.md)<!--rehype:style=background: rgb(106 111 141);-->
|
||||||
[Sketch](./docs/sketch.md)<!--rehype:style=background: rgb(223 148 0);&class=tag&data-lang=macOS-->
|
|
||||||
[Sublime Text](./docs/sublime-text.md)<!--rehype:style=background: rgb(223 148 0);-->
|
|
||||||
[VSCode](./docs/vscode.md)<!--rehype:style=background: rgb(91 163 230);-->
|
|
||||||
[Vim](./docs/vim.md)<!--rehype:style=background: rgb(9 150 8);-->
|
[Vim](./docs/vim.md)<!--rehype:style=background: rgb(9 150 8);-->
|
||||||
[WebStorm](./docs/webstorm.md)<!--rehype:style=background: rgb(32 148 220);-->
|
|
||||||
[XPath](./docs/xpath.md)<!--rehype:style=background: rgb(91 163 230);-->
|
[XPath](./docs/xpath.md)<!--rehype:style=background: rgb(91 163 230);-->
|
||||||
[Xcode](./docs/xcode.md)<!--rehype:style=background: rgb(24 151 233);&class=tag&data-lang=macOS-->
|
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
## 命令
|
## 命令
|
||||||
@ -153,6 +151,21 @@ Quick Reference
|
|||||||
[tar](./docs/tar.md)<!--rehype:style=background: rgb(215 89 62);-->
|
[tar](./docs/tar.md)<!--rehype:style=background: rgb(215 89 62);-->
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
|
## 快捷键
|
||||||
|
|
||||||
|
[Adobe Photoshop](./docs/adobe-photoshop.md)<!--rehype:style=background: rgb(16 185 129);-->
|
||||||
|
[Android Studio](./docs/android-studio.md)<!--rehype:style=background: rgb(16 185 129);-->
|
||||||
|
[Firefox](./docs/firefox.md)<!--rehype:style=background: rgb(253 53 76);-->
|
||||||
|
[Gmail](./docs/gmail.md)<!--rehype:style=background: rgb(234 67 54);-->
|
||||||
|
[Gitlab](./docs/gitlab.md)<!--rehype:style=background: rgb(226 67 41);-->
|
||||||
|
[Google Chrome](./docs/google-chrome.md)<!--rehype:style=background: rgb(29 116 232);-->
|
||||||
|
[Sketch](./docs/sketch.md)<!--rehype:style=background: rgb(223 148 0);&class=tag&data-lang=macOS-->
|
||||||
|
[Sublime Text](./docs/sublime-text.md)<!--rehype:style=background: rgb(223 148 0);-->
|
||||||
|
[VSCode](./docs/vscode.md)<!--rehype:style=background: rgb(91 163 230);-->
|
||||||
|
[WebStorm](./docs/webstorm.md)<!--rehype:style=background: rgb(32 148 220);-->
|
||||||
|
[Xcode](./docs/xcode.md)<!--rehype:style=background: rgb(24 151 233);&class=tag&data-lang=macOS-->
|
||||||
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
## 其它
|
## 其它
|
||||||
|
|
||||||
[Quick Reference](./docs/quickreference.md)<!--rehype:style=background: rgb(16 185 129);&class=tag&data-lang=排版说明-->
|
[Quick Reference](./docs/quickreference.md)<!--rehype:style=background: rgb(16 185 129);&class=tag&data-lang=排版说明-->
|
||||||
@ -179,7 +192,7 @@ Quick Reference
|
|||||||
## 感谢所有贡献者
|
## 感谢所有贡献者
|
||||||
<!--rehype:wrap-style=text-align: center;max-width: 650px;margin: 0 auto;&class=home-title-reset-->
|
<!--rehype:wrap-style=text-align: center;max-width: 650px;margin: 0 auto;&class=home-title-reset-->
|
||||||
|
|
||||||
请参阅 [Quick Reference](./docs/quickreference.md) 了解如何开始。一如既往,感谢我们出色的贡献者!
|
请参阅 [Quick Reference](./docs/quickreference.md) 了解如何开始。一如既往,感谢我们出色的[贡献者](https://github.com/jaywcjlove/reference/graphs/contributors)!
|
||||||
<!--rehype:style=padding-bottom:1rem;-->
|
<!--rehype:style=padding-bottom:1rem;-->
|
||||||
|
|
||||||
<!--GAMFC--><a href="https://github.com/jaywcjlove" title="小弟调调™">
|
<!--GAMFC--><a href="https://github.com/jaywcjlove" title="小弟调调™">
|
||||||
@ -221,8 +234,8 @@ Quick Reference
|
|||||||
<a href="https://github.com/Brid9e" title="Brid9e">
|
<a href="https://github.com/Brid9e" title="Brid9e">
|
||||||
<img src="https://avatars.githubusercontent.com/u/85558909?v=4" width="42;" alt="Brid9e"/>
|
<img src="https://avatars.githubusercontent.com/u/85558909?v=4" width="42;" alt="Brid9e"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/CharlotteZeng" title="Chart">
|
<a href="https://github.com/CharlotteZeng" title="hanchZ">
|
||||||
<img src="https://avatars.githubusercontent.com/u/19461184?v=4" width="42;" alt="Chart"/>
|
<img src="https://avatars.githubusercontent.com/u/19461184?v=4" width="42;" alt="hanchZ"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/DaiNing810" title="DaiN">
|
<a href="https://github.com/DaiNing810" title="DaiN">
|
||||||
<img src="https://avatars.githubusercontent.com/u/94962339?v=4" width="42;" alt="DaiN"/>
|
<img src="https://avatars.githubusercontent.com/u/94962339?v=4" width="42;" alt="DaiN"/>
|
||||||
@ -230,6 +243,9 @@ Quick Reference
|
|||||||
<a href="https://github.com/demigodliu" title="DemigodLiu">
|
<a href="https://github.com/demigodliu" title="DemigodLiu">
|
||||||
<img src="https://avatars.githubusercontent.com/u/30372735?v=4" width="42;" alt="DemigodLiu"/>
|
<img src="https://avatars.githubusercontent.com/u/30372735?v=4" width="42;" alt="DemigodLiu"/>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="https://github.com/eeeeeio" title="EEEEE">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/20723545?v=4" width="42;" alt="EEEEE"/>
|
||||||
|
</a>
|
||||||
<a href="https://github.com/jasnzhuang" title="Jason Zhuang">
|
<a href="https://github.com/jasnzhuang" title="Jason Zhuang">
|
||||||
<img src="https://avatars.githubusercontent.com/u/16612921?v=4" width="42;" alt="Jason Zhuang"/>
|
<img src="https://avatars.githubusercontent.com/u/16612921?v=4" width="42;" alt="Jason Zhuang"/>
|
||||||
</a>
|
</a>
|
||||||
@ -296,6 +312,9 @@ Quick Reference
|
|||||||
<a href="https://github.com/onewesong" title="onewesong">
|
<a href="https://github.com/onewesong" title="onewesong">
|
||||||
<img src="https://avatars.githubusercontent.com/u/17920822?v=4" width="42;" alt="onewesong"/>
|
<img src="https://avatars.githubusercontent.com/u/17920822?v=4" width="42;" alt="onewesong"/>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="https://github.com/Mowmowj" title="shelton">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/24759562?v=4" width="42;" alt="shelton"/>
|
||||||
|
</a>
|
||||||
<a href="https://github.com/wjjwkwindy" title="wjjwkwindy">
|
<a href="https://github.com/wjjwkwindy" title="wjjwkwindy">
|
||||||
<img src="https://avatars.githubusercontent.com/u/9508591?v=4" width="42;" alt="wjjwkwindy"/>
|
<img src="https://avatars.githubusercontent.com/u/9508591?v=4" width="42;" alt="wjjwkwindy"/>
|
||||||
</a>
|
</a>
|
||||||
@ -315,7 +334,7 @@ Quick Reference
|
|||||||
<img src="https://avatars.githubusercontent.com/u/53617305?v=4" width="42;" alt="芦荟柚子茶"/>
|
<img src="https://avatars.githubusercontent.com/u/53617305?v=4" width="42;" alt="芦荟柚子茶"/>
|
||||||
</a><!--GAMFC-END-->
|
</a><!--GAMFC-END-->
|
||||||
|
|
||||||
贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成
|
[贡献者](https://github.com/jaywcjlove/reference/graphs/contributors)列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 根据提交次数的先后顺序自动生成
|
||||||
<!--rehype:style=padding-top:1rem;-->
|
<!--rehype:style=padding-top:1rem;-->
|
||||||
|
|
||||||
## 国内镜像网站
|
## 国内镜像网站
|
||||||
@ -331,9 +350,10 @@ Quick Reference
|
|||||||
[liujiapeng.com](https://www.liujiapeng.com/)<!--rehype:target=_blank&style=background: rgb(16 185 129);height: 2.6rem;border-radius: 2rem;font-weight: bold;-->
|
[liujiapeng.com](https://www.liujiapeng.com/)<!--rehype:target=_blank&style=background: rgb(16 185 129);height: 2.6rem;border-radius: 2rem;font-weight: bold;-->
|
||||||
[dbyun.net](https://www.dbyun.net/reference/index.html)<!--rehype:target=_blank&style=background: rgb(16 185 129);height: 2.6rem;border-radius: 2rem;font-weight: bold;-->
|
[dbyun.net](https://www.dbyun.net/reference/index.html)<!--rehype:target=_blank&style=background: rgb(16 185 129);height: 2.6rem;border-radius: 2rem;font-weight: bold;-->
|
||||||
[dc6.fun](https://dc6.fun/reference/)<!--rehype:target=_blank&style=background: rgb(16 185 129);height: 2.6rem;border-radius: 2rem;font-weight: bold;-->
|
[dc6.fun](https://dc6.fun/reference/)<!--rehype:target=_blank&style=background: rgb(16 185 129);height: 2.6rem;border-radius: 2rem;font-weight: bold;-->
|
||||||
|
[if010.com](https://quickref.if010.com/)<!--rehype:target=_blank&style=background: rgb(16 185 129);height: 2.6rem;border-radius: 2rem;font-weight: bold;-->
|
||||||
<!--rehype:class=home-card&style=margin:2.2rem 0;display: flex;justify-content: center;gap: 1rem;flex-wrap: wrap;-->
|
<!--rehype:class=home-card&style=margin:2.2rem 0;display: flex;justify-content: center;gap: 1rem;flex-wrap: wrap;-->
|
||||||
|
|
||||||
如果你有资源,可以很方便部署 web 版,这非常简单,只需要克隆 gh-pages 分支代码到你的静态服务就可以了,还可以使用 [docker](https://hub.docker.com/r/wcjiang/reference) 快捷部署 web 版。
|
如果你有资源,可以很方便部署 web 版,这非常简单,只需要克隆 [gh-pages](https://github.com/jaywcjlove/reference/tree/gh-pages) 分支代码到你的静态服务就可以了,还可以使用 [docker](https://hub.docker.com/r/wcjiang/reference) 快捷部署 web 版。
|
||||||
|
|
||||||
<!--rehype:ignore:start-->
|
<!--rehype:ignore:start-->
|
||||||
## License
|
## License
|
||||||
|
3
assets/adobe-photoshop.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em">
|
||||||
|
<path d="M9.85 8.42c-.37-.15-.77-.21-1.18-.2-.26 0-.49 0-.68.01-.2-.01-.34 0-.41.01v3.36c.14.01.27.02.39.02h.53c.39 0 .78-.06 1.15-.18.32-.09.6-.28.82-.53.21-.25.31-.59.31-1.03.01-.31-.07-.62-.23-.89a1.45 1.45 0 0 0-.7-.57zM19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.899c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm-7.391 11.65c-.399.56-.959.98-1.609 1.22-.68.25-1.43.34-2.25.34-.24 0-.4 0-.5-.01s-.24-.01-.43-.01v3.209c.01.07-.04.131-.11.141H5.52c-.08 0-.12-.041-.12-.131V6.42c0-.07.03-.11.1-.11.17 0 .33 0 .56-.01.24-.01.49-.01.76-.02s.56-.01.87-.02c.31-.01.61-.01.91-.01.82 0 1.5.1 2.06.31.5.17.96.45 1.34.82.32.32.57.71.73 1.14.149.42.229.85.229 1.3.001.86-.199 1.57-.6 2.13zm7.091 3.89c-.28.4-.671.709-1.12.891-.49.209-1.09.318-1.811.318-.459 0-.91-.039-1.359-.129-.35-.061-.7-.17-1.02-.32-.07-.039-.121-.109-.111-.189v-1.74c0-.029.011-.07.041-.09.029-.02.06-.01.09.01.39.23.8.391 1.24.49.379.1.779.15 1.18.15.38 0 .65-.051.83-.141.16-.07.27-.24.27-.42 0-.141-.08-.27-.24-.4-.16-.129-.489-.279-.979-.471-.51-.18-.979-.42-1.42-.719a2.625 2.625 0 0 1-.761-.85 2.158 2.158 0 0 1-.229-1.021c0-.43.12-.84.341-1.21.25-.4.619-.72 1.049-.92.469-.239 1.059-.349 1.769-.349.41 0 .83.03 1.24.09.3.04.59.12.86.23.039.01.08.05.1.09.01.04.02.08.02.12v1.63c0 .04-.02.08-.05.1-.09.02-.14.02-.18 0-.3-.16-.62-.27-.96-.34-.37-.08-.74-.13-1.12-.13-.2-.01-.41.02-.601.07-.129.03-.24.1-.31.2-.05.08-.08.18-.08.27s.04.18.101.26c.09.11.209.2.34.27.229.12.47.23.709.33.541.18 1.061.43 1.541.73.33.209.6.49.789.83.16.318.24.67.23 1.029.011.471-.129.94-.389 1.331z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
3
assets/android-studio.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em">
|
||||||
|
<path d="M19.27 10.337a.604.604 0 0 0-.603.603v9.832h-1.738l-3.336-6.94c.476-.538.68-1.285.525-2a2.286 2.286 0 0 0-1.29-1.625v-.812a.847.847 0 0 0-.844-.864.848.848 0 0 0-.432.118.86.86 0 0 0-.412.766v.72a2.3 2.3 0 0 0-1.487 2.52 2.282 2.282 0 0 0 .591 1.21l-3.21 6.907h-2.94a1.996 1.996 0 0 1-1.983-1.99V5.017c-.006 1.102.883 2 1.986 2.006a2.024 2.024 0 0 0 .132-.004h14.745s2.535-.218 2.862 1.54a.495.495 0 0 0-.445.489c0 .711-.579 1.29-1.302 1.29h-.819zm-2.048 12.2a.973.973 0 0 1-.45 1.3.965.965 0 0 1-.402.093.974.974 0 0 1-.32-.045c-.024-.008-.046-.021-.07-.031a.97.97 0 0 1-.227-.132c-.025-.02-.05-.038-.072-.06a.96.96 0 0 1-.21-.276l-1.256-2.614-1.558-3.245a.772.772 0 0 0-.7-.444h-.002a.792.792 0 0 0-.709.444l-1.51 3.245-1.233 2.646a.972.972 0 0 1-.798.58c-.063.005-.124-.002-.185-.009-.034-.003-.069-.005-.103-.012-.048-.01-.095-.028-.142-.045-.03-.012-.06-.02-.09-.034a.987.987 0 0 1-.14-.09c-.021-.015-.045-.027-.066-.044a.986.986 0 0 1-.169-.185.979.979 0 0 1-.07-.985l.846-1.822 3.268-7.031a1.796 1.796 0 0 1-.708-1.164c-.155-.98.513-1.9 1.493-2.056V9.395a.354.354 0 0 1 .168-.316.347.347 0 0 1 .354 0 .354.354 0 0 1 .167.316v1.159l.013.006a1.803 1.803 0 0 1 1.288 1.378 1.784 1.784 0 0 1-.644 1.784l3.389 7.05.848 1.765zm-4.238-10.231a1.1 1.1 0 0 0-1.093-1.109 1.12 1.12 0 0 0-.786.322 1.101 1.101 0 0 0-.323.772 1.1 1.1 0 0 0 1.093 1.108h.008a1.1 1.1 0 0 0 1.101-1.093zm-1.027 5.277a.287.287 0 0 0-.257.155l-1.413 3.034h3.374l-1.457-3.033a.274.274 0 0 0-.247-.156zm8.143-6.746h-.83a.103.103 0 0 0-.103.103v12.91a.103.103 0 0 0 .096.103h.844a1.79 1.79 0 0 0 1.783-1.79V9.047a1.79 1.79 0 0 1-1.79 1.79zM2.61 5.017v.018a1.5 1.5 0 0 0 1.487 1.487 12.061 12.061 0 0 1 .131-.003h1.129a6.598 6.598 0 0 1 1.638-3.486H4.099A1.992 1.992 0 0 0 2.18 4.53c.242.036.43.235.43.486zm6.338-2.899L7.91.328a.219.219 0 0 1 0-.218.238.238 0 0 1 .187-.11.219.219 0 0 1 .187.11l1.05 1.815a6.49 6.49 0 0 1 5.318 0L15.696.11a.219.219 0 0 1 .373.22l-1.03 1.79a6.122 6.122 0 0 1 3.098 4.401L5.85 6.52a6.122 6.122 0 0 1 3.097-4.4zm5.377 2.62a.515.515 0 0 0 .527.503.515.515 0 0 0 .516-.515.521.521 0 0 0-.889-.367.515.515 0 0 0-.154.38zm-5.717-.006a.515.515 0 0 0 .52.51.509.509 0 0 0 .367-.149.521.521 0 1 0-.734-.734.515.515 0 0 0-.153.373z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
3
assets/firefox.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="currentColor" height="1em" width="1em">
|
||||||
|
<path d="M503.52 241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86 245.86 0 0 0-7.32-41.15c0-.12 0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27 8.27 0 0 0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48 0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07 18.07 0 0 0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63 15.63 0 0 0-1.2-1.8L463.2 119a15.63 15.63 0 0 0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76 248.76 0 0 0-23.51-26.64A186.82 186.82 0 0 0 412 62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49 162.49 0 0 0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254 254 0 0 0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35 236.35 0 0 0-38-4h-10.63a234.62 234.62 0 0 0-45.48 5c-33.59 7.08-63.23 21.24-82.91 39-1.08 1-1.92 1.68-2.4 2.16l-.48.48h.13l-.12.12.12-.12a.12.12 0 0 0 .12-.12l-.12.12a.42.42 0 0 1 .24-.12c14.64-8.76 34.92-16 49.44-19.56l5.88-1.44c.36-.12.84-.12 1.2-.24 1.68-.36 3.36-.72 5.16-1.08.24 0 .6-.12.84-.12C250.94 20.94 319.34 40.14 367 85.61a171.49 171.49 0 0 1 26.88 32.76c30.36 49.2 27.48 111.11 3.84 147.59-34.44 53-111.35 71.27-159 24.84a84.19 84.19 0 0 1-25.56-59 74.05 74.05 0 0 1 6.24-31c1.68-3.84 13.08-25.67 18.24-24.59-13.08-2.76-37.55 2.64-54.71 28.19-15.36 22.92-14.52 58.2-5 83.28a132.85 132.85 0 0 1-12.12-39.24c-12.24-82.55 43.31-153 94.31-170.51-27.48-24-96.47-22.31-147.71 15.36-29.88 22-51.23 53.16-62.51 90.36 1.68-20.88 9.6-52.08 25.8-83.88-17.16 8.88-39 37-49.8 62.88-15.6 37.43-21 82.19-16.08 124.79.36 3.24.72 6.36 1.08 9.6 19.92 117.11 122 206.38 244.78 206.38C392.77 503.42 504 392.19 504 255c-.12-4.52-.24-9.08-.48-13.52Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
3
assets/github.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 1984 2048" height="1em" width="1em">
|
||||||
|
<path d="M663.6 1589.6c0 8-9.2 14.4-20.8 14.4-13.2 1.2-22.4-5.2-22.4-14.4 0-8 9.2-14.4 20.8-14.4 12-1.2 22.4 5.2 22.4 14.4zm-124.4-18c-2.8 8 5.2 17.2 17.2 19.6 10.4 4 22.4 0 24.8-8s-5.2-17.2-17.2-20.8c-10.4-2.8-22 1.2-24.8 9.2zm176.8-6.8c-11.6 2.8-19.6 10.4-18.4 19.6 1.2 8 11.6 13.2 23.6 10.4 11.6-2.8 19.6-10.4 18.4-18.4-1.2-7.6-12-12.8-23.6-11.6zM979.2 32C424.4 32 0 453.2 0 1008c0 443.6 279.2 823.2 678 956.8 51.2 9.2 69.2-22.4 69.2-48.4 0-24.8-1.2-161.6-1.2-245.6 0 0-280 60-338.8-119.2 0 0-45.6-116.4-111.2-146.4 0 0-91.6-62.8 6.4-61.6 0 0 99.6 8 154.4 103.2 87.6 154.4 234.4 110 291.6 83.6 9.2-64 35.2-108.4 64-134.8-223.6-24.8-449.2-57.2-449.2-442 0-110 30.4-165.2 94.4-235.6-10.4-26-44.4-133.2 10.4-271.6 83.6-26 276 108 276 108 80-22.4 166-34 251.2-34s171.2 11.6 251.2 34c0 0 192.4-134.4 276-108 54.8 138.8 20.8 245.6 10.4 271.6 64 70.8 103.2 126 103.2 235.6 0 386-235.6 416.8-459.2 442 36.8 31.6 68 91.6 68 185.6 0 134.8-1.2 301.6-1.2 334.4 0 26 18.4 57.6 69.2 48.4 400-132.8 671.2-512.4 671.2-956 0-554.8-450-976-1004.8-976zM388.8 1411.6c-5.2 4-4 13.2 2.8 20.8 6.4 6.4 15.6 9.2 20.8 4 5.2-4 4-13.2-2.8-20.8-6.4-6.4-15.6-9.2-20.8-4zm-43.2-32.4c-2.8 5.2 1.2 11.6 9.2 15.6 6.4 4 14.4 2.8 17.2-2.8 2.8-5.2-1.2-11.6-9.2-15.6-8-2.4-14.4-1.2-17.2 2.8zm129.6 142.4c-6.4 5.2-4 17.2 5.2 24.8 9.2 9.2 20.8 10.4 26 4 5.2-5.2 2.8-17.2-5.2-24.8-8.8-9.2-20.8-10.4-26-4zm-45.6-58.8c-6.4 4-6.4 14.4 0 23.6 6.4 9.2 17.2 13.2 22.4 9.2 6.4-5.2 6.4-15.6 0-24.8-5.6-9.2-16-13.2-22.4-8z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
9
assets/gitlab.svg
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 236" height="1em" width="1em">
|
||||||
|
<path d="m128.075 236.075 47.104-144.97H80.97l47.104 144.97z" fill="#E24329"/>
|
||||||
|
<path d="M128.075 236.074 80.97 91.104H14.956l113.119 144.97z" fill="#FC6D26"/>
|
||||||
|
<path d="M14.956 91.104.642 135.16a9.752 9.752 0 0 0 3.542 10.903l123.891 90.012-113.12-144.97z" fill="#FCA326"/>
|
||||||
|
<path d="M14.956 91.105H80.97L52.601 3.79c-1.46-4.493-7.816-4.492-9.275 0l-28.37 87.315z" fill="#E24329"/>
|
||||||
|
<path d="m128.075 236.074 47.104-144.97h66.015l-113.12 144.97z" fill="#FC6D26"/>
|
||||||
|
<path d="m241.194 91.104 14.314 44.056a9.752 9.752 0 0 1-3.543 10.903l-123.89 90.012 113.119-144.97z" fill="#FCA326"/>
|
||||||
|
<path d="M241.194 91.105h-66.015l28.37-87.315c1.46-4.493 7.816-4.492 9.275 0l28.37 87.315z" fill="#E24329"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 798 B |
3
assets/google-chrome.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 512 512" height="1em" width="1em">
|
||||||
|
<path d="M0 256c0-46.6 12.47-90.4 34.27-128.9L144.1 318.3C166 357.5 207.9 384 256 384c14.3 0 27.1-2.3 40.8-6.6l-76.3 132.2C95.9 492.3 0 385.3 0 256zm365.1 65.6c12.3-19.2 18.9-42.5 18.9-65.6 0-38.2-16.8-72.5-43.3-96h152.7c12 29.6 18.6 62.1 18.6 96 0 141.4-114.6 255.1-256 256l109.1-190.4zM477.8 128H256c-62.9 0-113.7 44.1-125.5 102.7L54.19 98.47C101 38.53 174 0 256 0c94.8 0 177.5 51.48 221.8 128zM168 256c0-48.6 39.4-88 88-88s88 39.4 88 88-39.4 88-88 88-88-39.4-88-88z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 589 B |
3
assets/nextjs.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 7.5a7.5 7.5 0 1 1 11.697 6.216L4.907 4.21A.5.5 0 0 0 4 4.5V12h1V6.06l5.83 8.162A7.5 7.5 0 0 1 0 7.5ZM10 10V4h1v6h-1Z" fill="currentColor"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 299 B |
3
assets/pm2.svg
Normal file
After Width: | Height: | Size: 5.7 KiB |
7
assets/react-native.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" height="1em" width="1em">
|
||||||
|
<circle cx="12" cy="11.245" r="1.785"/>
|
||||||
|
<path d="m7.002 14.794-.395-.101c-2.934-.741-4.617-2.001-4.617-3.452 0-1.452 1.684-2.711 4.617-3.452l.395-.1.111.391a19.507 19.507 0 0 0 1.136 2.983l.085.178-.085.178c-.46.963-.841 1.961-1.136 2.985l-.111.39zm-.577-6.095c-2.229.628-3.598 1.586-3.598 2.542 0 .954 1.368 1.913 3.598 2.54.273-.868.603-1.717.985-2.54a20.356 20.356 0 0 1-.985-2.542zm10.572 6.095-.11-.392a19.628 19.628 0 0 0-1.137-2.984l-.085-.177.085-.179c.46-.961.839-1.96 1.137-2.984l.11-.39.395.1c2.935.741 4.617 2 4.617 3.453 0 1.452-1.683 2.711-4.617 3.452l-.395.101zm-.41-3.553c.4.866.733 1.718.987 2.54 2.23-.627 3.599-1.586 3.599-2.54 0-.956-1.368-1.913-3.599-2.542a20.683 20.683 0 0 1-.987 2.542z"/>
|
||||||
|
<path d="m6.419 8.695-.11-.39c-.826-2.908-.576-4.991.687-5.717 1.235-.715 3.222.13 5.303 2.265l.284.292-.284.291a19.718 19.718 0 0 0-2.02 2.474l-.113.162-.196.016a19.646 19.646 0 0 0-3.157.509l-.394.098zm1.582-5.529c-.224 0-.422.049-.589.145-.828.477-.974 2.138-.404 4.38.891-.197 1.79-.338 2.696-.417a21.058 21.058 0 0 1 1.713-2.123c-1.303-1.267-2.533-1.985-3.416-1.985zm7.997 16.984c-1.188 0-2.714-.896-4.298-2.522l-.283-.291.283-.29a19.827 19.827 0 0 0 2.021-2.477l.112-.16.194-.019a19.473 19.473 0 0 0 3.158-.507l.395-.1.111.391c.822 2.906.573 4.992-.688 5.718a1.978 1.978 0 0 1-1.005.257zm-3.415-2.82c1.302 1.267 2.533 1.986 3.415 1.986.225 0 .423-.05.589-.145.829-.478.976-2.142.404-4.384-.89.198-1.79.34-2.698.419a20.526 20.526 0 0 1-1.71 2.124z"/>
|
||||||
|
<path d="m17.58 8.695-.395-.099a19.477 19.477 0 0 0-3.158-.509l-.194-.017-.112-.162A19.551 19.551 0 0 0 11.7 5.434l-.283-.291.283-.29c2.08-2.134 4.066-2.979 5.303-2.265 1.262.727 1.513 2.81.688 5.717l-.111.39zm-3.287-1.421c.954.085 1.858.228 2.698.417.571-2.242.425-3.903-.404-4.381-.824-.477-2.375.253-4.004 1.841.616.67 1.188 1.378 1.71 2.123zM8.001 20.15a1.983 1.983 0 0 1-1.005-.257c-1.263-.726-1.513-2.811-.688-5.718l.108-.391.395.1c.964.243 2.026.414 3.158.507l.194.019.113.16c.604.878 1.28 1.707 2.02 2.477l.284.29-.284.291c-1.583 1.627-3.109 2.522-4.295 2.522zm-.993-5.362c-.57 2.242-.424 3.906.404 4.384.825.47 2.371-.255 4.005-1.842a21.17 21.17 0 0 1-1.713-2.123 20.692 20.692 0 0 1-2.696-.419z"/>
|
||||||
|
<path d="M12 15.313c-.687 0-1.392-.029-2.1-.088l-.196-.017-.113-.162a25.697 25.697 0 0 1-1.126-1.769 26.028 26.028 0 0 1-.971-1.859l-.084-.177.084-.179c.299-.632.622-1.252.971-1.858.347-.596.726-1.192 1.126-1.77l.113-.16.196-.018a25.148 25.148 0 0 1 4.198 0l.194.019.113.16a25.136 25.136 0 0 1 2.1 3.628l.083.179-.083.177a24.742 24.742 0 0 1-2.1 3.628l-.113.162-.194.017c-.706.057-1.412.087-2.098.087zm-1.834-.904c1.235.093 2.433.093 3.667 0a24.469 24.469 0 0 0 1.832-3.168 23.916 23.916 0 0 0-1.832-3.168 23.877 23.877 0 0 0-3.667 0 23.743 23.743 0 0 0-1.832 3.168 24.82 24.82 0 0 0 1.832 3.168z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
433
docs/adobe-photoshop.md
Normal file
@ -0,0 +1,433 @@
|
|||||||
|
Adobe Photoshop 键盘快捷键 备忘清单
|
||||||
|
===
|
||||||
|
|
||||||
|
Adobe Photoshop 中 283 个[键盘快捷键](https://helpx.adobe.com/photoshop/using/default-keyboard-shortcuts.html)的可视化备忘单
|
||||||
|
|
||||||
|
键盘快捷键
|
||||||
|
---------
|
||||||
|
|
||||||
|
### 热门快捷方式
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `T` | 自由变换
|
||||||
|
`[` | 减小画笔大小
|
||||||
|
`]` | 增加画笔大小
|
||||||
|
`Shift` `[` | 降低画笔硬度
|
||||||
|
`Shift` `]` | 增加笔刷硬度
|
||||||
|
`D` | 默认前景/背景颜色
|
||||||
|
`X` | 切换前景/背景颜色
|
||||||
|
`Ctrl` `J` | 通过复制新建图层
|
||||||
|
`Ctrl` `Shift` `J` | 通过剪切新建图层
|
||||||
|
`Esc` | 取消任何模态对话框窗口(包括启动工作区)
|
||||||
|
`Enter` | 选择工具栏的第一个编辑字段
|
||||||
|
`Tab` | 在字段之间导航
|
||||||
|
`Shift` `Tab` | 在相反方向的字段之间导航
|
||||||
|
`Alt` | 更改取消重置
|
||||||
|
`Ctrl` `F` | 调用搜索体验
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用功能键
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`F1` | 开始帮助
|
||||||
|
`F2` | 剪切
|
||||||
|
`F3` | 复制
|
||||||
|
`F4` | 粘贴
|
||||||
|
`F5` | 显示/隐藏笔刷面板
|
||||||
|
`F6` | 显示/隐藏颜色面板
|
||||||
|
`F7` | 显示/隐藏图层面板
|
||||||
|
`F8` | 显示/隐藏信息面板
|
||||||
|
`F9` | 显示/隐藏操作面板
|
||||||
|
`F12` | 恢复
|
||||||
|
`Shift` `F5` | 充满
|
||||||
|
`Shift` `F6` | 羽毛选择
|
||||||
|
`Shift` `F7` | 反向选择
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 选择工具
|
||||||
|
<!--rehype:wrap-class=row-span-3-->
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`V` | 移动工具
|
||||||
|
`M` | 矩形选框工具
|
||||||
|
`L` | 套索工具
|
||||||
|
`W` | 魔棒工具 > 快速选择工具
|
||||||
|
`C` | 裁剪工具 > 切片工具 > 切片选择工具
|
||||||
|
`I` | 吸管工具 > 标尺工具 > 注释工具
|
||||||
|
`J` | 斑点修复笔刷工具 > 修复笔刷工具 > 补丁工具 > 红眼工具
|
||||||
|
`B` | 画笔工具 > 铅笔工具 > 颜色替换工具 > 混合器画笔工具
|
||||||
|
`S` | 克隆图章工具 > 图案图章工具
|
||||||
|
`Y` | 历史画笔工具 > 艺术史画笔工具
|
||||||
|
`E` | 橡皮擦工具 > 背景橡皮擦工具 > 魔术橡皮擦工具
|
||||||
|
`G` | 渐变工具>油漆桶工具
|
||||||
|
`O` | 减淡工具 > 加深工具 > 海绵工具
|
||||||
|
`P` | 钢笔工具 > 自由钢笔工具
|
||||||
|
`T` | 横版工具 > 竖版工具 > 横版蒙版工具 > 竖版蒙版工具
|
||||||
|
`A` | 路径选择工具 > 直接选择工具
|
||||||
|
`U` | 矩形工具 > 圆角矩形工具 > 椭圆工具 > 多边形工具 > 直线工具
|
||||||
|
`H` | 手工具
|
||||||
|
`R` | 旋转视图工具
|
||||||
|
`Z` | 缩放工具
|
||||||
|
`D` | 默认前景/背景颜色
|
||||||
|
`X` | 切换前景/背景颜色
|
||||||
|
`Q` | 切换标准/快速蒙版模式
|
||||||
|
`J` | 内容感知移动工具
|
||||||
|
`C` | 透视裁剪工具
|
||||||
|
`V` | 画板工具
|
||||||
|
`R` | 旋转视图工具
|
||||||
|
`/` | 切换保持透明度
|
||||||
|
`,` | 上一刷
|
||||||
|
`.` | 下一刷
|
||||||
|
`Shift` `,` | 先刷
|
||||||
|
`Shift` `.` | 最后刷
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 查看图片
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `Tab` | 循环浏览打开的文档
|
||||||
|
`Ctrl` `Shift` `Tab` | 切换到上一个文档
|
||||||
|
`Ctrl` `Shift` `W` | 在 Photoshop 中关闭文件并打开 Bridge
|
||||||
|
`F` | 在标准屏幕 > 带菜单栏的全屏 > 全屏模式之间向前切换
|
||||||
|
`Shift` `F` | 在标准屏幕 > 带菜单栏的全屏 > 全屏模式之间向后切换
|
||||||
|
`Space` `F` | 向前切换画布颜色
|
||||||
|
`Shift` `Space` `F` | 向后切换画布颜色
|
||||||
|
`Space` | 切换到手动工具(当不在文本编辑模式时)
|
||||||
|
`Ctrl` `Space` | 切换到放大工具
|
||||||
|
`Alt` `Space` | 切换到缩小工具
|
||||||
|
`Shift` `Enter` | 应用缩放百分比,并保持缩放百分比框处于活动状态
|
||||||
|
`PgUp/PgDn` | 向上或向下滚动 1 屏
|
||||||
|
`Shift` `PgUp/PgDn` | 向上或向下滚动 10 个单位
|
||||||
|
`Home` | 将视图移动到左上角
|
||||||
|
`End` | 将视图移动到右下角
|
||||||
|
`\` | 将图层蒙版打开/关闭为红宝石(必须选择图层蒙版)
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用木偶变形
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Esc` | 完全取消
|
||||||
|
`Ctrl` `Z` | 撤消最后一次引脚调整
|
||||||
|
`Ctrl` `A` | 选择所有引脚
|
||||||
|
`Ctrl` `D` | 取消选择所有引脚
|
||||||
|
`H` | 暂时隐藏图钉
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用优化边缘
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `Alt` `R` | 打开优化边缘对话框
|
||||||
|
`F` | 通过预览模式向前循环
|
||||||
|
`Shift` `F` | 通过预览模式向后循环
|
||||||
|
`X` | 在原始图像和选区预览之间切换
|
||||||
|
`P` | 在原始选择和优化版本之间切换
|
||||||
|
`J` | 打开和关闭半径预览
|
||||||
|
`Shift` `E` | 在 Refine Radius 和 Erase Refinement 工具之间切换
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用滤镜库
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `Alt` `F` | 重新应用上次使用的过滤器
|
||||||
|
`Ctrl` | 将取消按钮更改为默认值
|
||||||
|
`Alt` | 将取消按钮更改为重置
|
||||||
|
`Ctrl` `Z` | 撤销重做
|
||||||
|
`Ctrl` `Shift` `Z` | 向前一步
|
||||||
|
`Ctrl` `Alt` `Z` | 向后退一步
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用液化滤镜
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`W` | 向前扭曲工具
|
||||||
|
`R` | 重构工具
|
||||||
|
`C` | 顺时针旋转工具
|
||||||
|
`S` | 皱褶工具
|
||||||
|
`B` | 膨胀工具
|
||||||
|
`O` | 向左推工具
|
||||||
|
`M` | 镜像工具
|
||||||
|
`T` | 湍流工具
|
||||||
|
`F` | 冻结蒙版工具
|
||||||
|
`D` | 解冻蒙版工具
|
||||||
|
`Alt` `(tool)` | 反转膨胀、褶皱、向左推和镜像工具的方向
|
||||||
|
`Tab` | 从右上角循环浏览控件
|
||||||
|
`Shift` `Tab` | 从右下角循环浏览控件
|
||||||
|
`Alt` | 更改取消重置
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用消失点
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`X` | 缩放 2 倍(临时)
|
||||||
|
`Ctrl` `+` | 放大
|
||||||
|
`Ctrl` `-` | 缩小
|
||||||
|
`Ctrl` `0` | 适合视图
|
||||||
|
`Ctrl` `Z` | 撤消上次操作
|
||||||
|
`Ctrl` `Shift` `Z` | 重做上一个动作
|
||||||
|
`Ctrl` `D` | 取消全选
|
||||||
|
`Ctrl` `H` | 隐藏选择和窗格
|
||||||
|
`Arrows` | 将选区移动 1 个像素
|
||||||
|
`Shift` `Arrows` | 将选区移动 10 个像素
|
||||||
|
`Ctrl` `C` | 复制
|
||||||
|
`Ctrl` `V` | 粘贴
|
||||||
|
`Ctrl` `Shift` `T` | 重复最后一个副本并移动
|
||||||
|
`Ctrl` `Alt` `T` | 从当前选区创建浮动选区
|
||||||
|
`Alt` `Shift` | 将选择限制为 15 度旋转
|
||||||
|
`Backspace` | 创建平面时删除最后一个节点
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用 Camera Raw 对话框
|
||||||
|
<!--rehype:wrap-class=row-span-5-->
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Z` | 缩放工具
|
||||||
|
`H` | 手工具
|
||||||
|
`I` | 白平衡工具
|
||||||
|
`S` | 颜色取样器工具
|
||||||
|
`C` | 裁剪工具
|
||||||
|
`A` | 拉直工具
|
||||||
|
`B` | 污点去除工具
|
||||||
|
`E` | 红眼消除工具
|
||||||
|
`Ctrl` `Alt` `1` | 基本面板
|
||||||
|
`Ctrl` `Alt` `2` | 色调曲线面板
|
||||||
|
`Ctrl` `Alt` `3` | 详情面板
|
||||||
|
`Ctrl` `Alt` `4` | HSL/灰度面板
|
||||||
|
`Ctrl` `Alt` `5` | 分离调色板
|
||||||
|
`Ctrl` `Alt` `6` | 镜头校正面板
|
||||||
|
`Ctrl` `Alt` `7` | 相机校准面板
|
||||||
|
`Ctrl` `Alt` `8` | 预设面板
|
||||||
|
`Ctrl` `Alt` `9` | 打开快照面板
|
||||||
|
`Ctrl` `Alt` `Shift` `T` | 参数化曲线针对性调整工具
|
||||||
|
`Ctrl` `Alt` `Shift` `H` | 色相针对性调整工具
|
||||||
|
`Ctrl` `Alt` `Shift` `S` | 饱和度针对性调整工具
|
||||||
|
`Ctrl` `Alt` `Shift` `L` | 亮度针对性调整工具
|
||||||
|
`Ctrl` `Alt` `Shift` `G` | 灰度混合针对性调整工具
|
||||||
|
`T` | 最后使用的针对性调整工具
|
||||||
|
`K` | 调整笔刷工具
|
||||||
|
`G` | 分级过滤工具
|
||||||
|
`Alt` | 暂时从调整画笔工具的添加模式切换到擦除模式,或从擦除模式切换到添加模式
|
||||||
|
`Alt` `]/[` | 增加/减少临时调整画笔工具大小
|
||||||
|
`Alt` `Shift` `]/[` | 增加/减少临时调整笔刷工具羽化
|
||||||
|
`Alt` `=/-` | 以 10 为增量增加/减少临时调整画笔工具大小流
|
||||||
|
`N` | 从调整画笔工具或渐变滤镜的添加或擦除模式切换到新建模式
|
||||||
|
`M` | 为调整画笔工具切换自动蒙版
|
||||||
|
`Y` | 切换调整画笔工具的显示蒙版
|
||||||
|
`V` | 调整画笔工具的切换销
|
||||||
|
`L` | 向左旋转图像
|
||||||
|
`R` | 向右旋转图像
|
||||||
|
`Ctrl` | 暂时切换到放大工具
|
||||||
|
`Alt` | 暂时切换为缩小工具,图片打开按钮改为打开复制
|
||||||
|
`P` | 切换预览
|
||||||
|
`F` | 全屏模式
|
||||||
|
`Shift` | 暂时激活白平衡工具并将打开图像按钮更改为打开对象
|
||||||
|
`Arrows` | 将曲线面板中的选定点移动 1 个像素
|
||||||
|
`Shift` `Arrows` | 将曲线面板中的选定点移动 10 像素
|
||||||
|
`Ctrl` `R` | 从 Bridge 打开 Camera Raw 对话框中的选定图像
|
||||||
|
`O` | 高亮剪裁警告
|
||||||
|
`U` | 阴影剪切警告
|
||||||
|
`Ctrl` `1-5` | 添加 1-5 星级(幻灯片模式)
|
||||||
|
`Ctrl` `./,` | 增加/减少评分(幻灯片模式)
|
||||||
|
`Ctrl` `6` | 添加红色标签(幻灯片模式)
|
||||||
|
`Ctrl` `7` | 添加黄色标签(幻灯片模式)
|
||||||
|
`Ctrl` `8` | 添加绿色标签(幻灯片模式)
|
||||||
|
`Ctrl` `9` | 添加蓝色标签(幻灯片模式)
|
||||||
|
`Ctrl` `Shift` `0` | 添加紫色标签(幻灯片模式)
|
||||||
|
`Ctrl` `K` | Camera Raw 首选项
|
||||||
|
`Ctrl` `Alt` | 删除 Adobe Camera Raw 首选项(打开时)
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用黑白对话框
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `Shift` `Alt` `B` | 打开黑白对话框
|
||||||
|
`Up/Down` | 将所选值增加/减少 1%
|
||||||
|
`Shift` `Up/Down` | 将所选值增加/减少 10%
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 编辑路径
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` | 从路径选择、笔、添加锚点、删除锚点或将点工具转换为直接选择工具
|
||||||
|
`Alt` | 当指针位于锚点或方向点上时,从钢笔工具切换到自由钢笔工具以转换点工具
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 变换选区、选区边框和路径
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Alt` | 从中心变换或反射
|
||||||
|
`Shift` | 约束
|
||||||
|
`Ctrl` | 歪曲
|
||||||
|
`Enter` | 申请
|
||||||
|
`Ctrl` `.` | 取消
|
||||||
|
`Ctrl` `Alt` `T` | 具有重复数据的自由变换
|
||||||
|
`Ctrl` `Shift` `Alt` `T` | 用重复数据再次转换
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用曲线
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `M` | 打开曲线对话框
|
||||||
|
`+` | 选择曲线上的下一个点
|
||||||
|
`-` | 选择曲线上的前一点
|
||||||
|
`Ctrl` `D` | 取消选择一个点
|
||||||
|
`Del` | 删除曲线上的一个点
|
||||||
|
`Arrows` | 将所选点移动 1 个像素
|
||||||
|
`Shift` `Arrows` | 将所选点移动 10 个像素
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 用于绘画
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Alt` `Shift` `0-9` | 混合器画笔更改混合设置
|
||||||
|
`0-9` | 混合刷改变湿设置
|
||||||
|
`00` | 搅拌刷变湿并混合至零
|
||||||
|
`Shift` `+/-` | 循环混合模式
|
||||||
|
`Backspace` | 在背景或标准图层上打开填充对话框
|
||||||
|
`Alt` `Backspace` | 填充前景色
|
||||||
|
`Ctrl` `Backspace` | 填充背景色
|
||||||
|
`Ctrl` `Alt` `Backspace` | 从历史中填充
|
||||||
|
`Shift` `Backspace` | 显示填充对话框
|
||||||
|
`/` | 打开/关闭锁定透明像素
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 用于混合模式
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `-/+` | 循环混合模式
|
||||||
|
`Shift` `Alt` `N` | 普通的
|
||||||
|
`Shift` `Alt` `I` | 溶解
|
||||||
|
`Shift` `Alt` `Q` | 背后(仅限画笔工具)
|
||||||
|
`Shift` `Alt` `R` | 清除(仅限画笔工具)
|
||||||
|
`Shift` `Alt` `K` | 变暗
|
||||||
|
`Shift` `Alt` `M` | 乘
|
||||||
|
`Shift` `Alt` `B` | 烧色
|
||||||
|
`Shift` `Alt` `A` | 线性燃烧
|
||||||
|
`Shift` `Alt` `G` | 减轻
|
||||||
|
`Shift` `Alt` `S` | 屏幕
|
||||||
|
`Shift` `Alt` `D` | 颜色减淡
|
||||||
|
`Shift` `Alt` `W` | 直线闪避
|
||||||
|
`Shift` `Alt` `O` | 覆盖
|
||||||
|
`Shift` `Alt` `F` | 柔光
|
||||||
|
`Shift` `Alt` `H` | 强光
|
||||||
|
`Shift` `Alt` `V` | 鲜艳的光
|
||||||
|
`Shift` `Alt` `J` | 线性光
|
||||||
|
`Shift` `Alt` `Z` | 针灯
|
||||||
|
`Shift` `Alt` `L` | 硬混
|
||||||
|
`Shift` `Alt` `E` | 区别
|
||||||
|
`Shift` `Alt` `X` | 排除
|
||||||
|
`Shift` `Alt` `U` | 色调
|
||||||
|
`Shift` `Alt` `T` | 饱和
|
||||||
|
`Shift` `Alt` `C` | 颜色
|
||||||
|
`Shift` `Alt` `Y` | 亮度
|
||||||
|
`Shift` `Alt` `N` | 将位图图像的混合模式设置为阈值<br/>所有其他图像的混合模式设置为正常
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 格式类型
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `Shift` `L/C/R` | 左对齐、居中或右对齐
|
||||||
|
`Ctrl` `Shift` `X` | 选择 100% 水平比例
|
||||||
|
`Ctrl` `Shift` `Alt` `X` | 选择 100% 垂直比例
|
||||||
|
`Ctrl` `Shift` `Alt` `A` | 选择自动行进
|
||||||
|
`Ctrl` `Shift` `Q` | 选择 0 进行跟踪
|
||||||
|
`Ctrl` `Shift` `J` | 对齐段落,左对齐最后一行
|
||||||
|
`Ctrl` `Shift` `F` | 证明段落,证明所有
|
||||||
|
`Ctrl` `Shift` `Alt` `H` | 打开/关闭段落断字
|
||||||
|
`Ctrl` `Shift` `Alt` `T` | 打开/关闭单个/每行作曲家
|
||||||
|
`Ctrl` `Shift` `</>` | 将所选文本的字号减小或增大 2 磅或像素
|
||||||
|
`Alt` `Up/Down` | 减少或增加前导 2 点或像素
|
||||||
|
`Shift` `Alt` `Up/Down` | 减少或增加基线偏移 2 个点或像素
|
||||||
|
`Alt` `Left/Right` | 减少或增加字距调整/字距调整 20/1000 em
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用面板
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Shift` `Enter` | 应用值并保持文本框处于活动状态
|
||||||
|
`Tab` | 显示/隐藏所有面板
|
||||||
|
`Shift` `Tab` | 显示/隐藏除工具箱和选项栏之外的所有面板
|
||||||
|
`Enter` | 高亮选项栏(先选择工具)
|
||||||
|
`Shift` `Up/Down` | 将所选值增加/减少 10
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用调整图层
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Alt` `3` | 选择红色通道进行调整
|
||||||
|
`Alt` `4` | 选择绿色通道进行调整
|
||||||
|
`Alt` `5` | 选择蓝色通道进行调整
|
||||||
|
`Alt` `2` | 选择复合通道进行调整
|
||||||
|
`Backspace` | 删除调整图层
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用画笔面板
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`,/.` | 选择上一个/下一个画笔大小
|
||||||
|
`Shift` `,/.` | 选择第一个/最后一个画笔
|
||||||
|
`Caps Lock` | 显示画笔的精确十字线
|
||||||
|
`Shift` `Alt` `P` | 切换喷枪选项
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用克隆源面板
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Alt` `Shift` | 显示克隆源(覆盖 iamge)
|
||||||
|
`Alt` `Shift` `(arrows)` | 轻推克隆源
|
||||||
|
`Alt` `Shift` `</>` | 旋转克隆源
|
||||||
|
`Alt` `Shift` `[/]` | 缩放(增加或减小大小)克隆源
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 使用图层面板
|
||||||
|
|
||||||
|
Shortcut | Action
|
||||||
|
---|---
|
||||||
|
`Ctrl` `Shift` `N` | 新层
|
||||||
|
`Ctrl` `J` | 通过复制新建图层
|
||||||
|
`Ctrl` `Shift` `J` | 通过剪切新建图层
|
||||||
|
`Ctrl` `G` | 图层组
|
||||||
|
`Ctrl` `Shift` `G` | 取消组合图层
|
||||||
|
`Ctrl` `Alt` `G` | 创建/释放剪贴蒙版
|
||||||
|
`Ctrl` `Alt` `A` | 选择所有图层
|
||||||
|
`Ctrl` `Shift` `E` | 合并可见层
|
||||||
|
`Alt` `.` | 选择顶层
|
||||||
|
`Alt` `.` | 选择底层
|
||||||
|
`Shift` `Alt` `[/]` | 添加到图层面板中的图层选择
|
||||||
|
`Alt` `[/]` | 向下/向上选择下一层
|
||||||
|
`Ctrl` `[/]` | 向下/向上移动目标图层
|
||||||
|
`Ctrl` `Shift` `Alt` `E` | 将所有可见图层的副本合并到目标图层中
|
||||||
|
`Ctrl` `E` | 合并图层(当图层突出显示时)
|
||||||
|
`Ctrl` `Shift` `[/]` | 将层移动到底部或顶部
|
||||||
|
`/` | 切换目标图层的锁定透明度或上次应用的锁定
|
||||||
|
`\` | 打开/关闭图层蒙版的 rubylith 模式
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
另见
|
||||||
|
--------
|
||||||
|
|
||||||
|
- [Keyboard shortcuts for Adobe Photoshop](https://helpx.adobe.com/photoshop/using/default-keyboard-shortcuts.html) _(helpx.adobe.com)_
|
205
docs/android-studio.md
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
Android Studio 键盘快捷键
|
||||||
|
====
|
||||||
|
|
||||||
|
Android Studio 软件中 130 个键盘快捷键的可视化备忘单
|
||||||
|
|
||||||
|
键盘快捷键
|
||||||
|
--------
|
||||||
|
|
||||||
|
### 一般的
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Ctrl` `S` | 保存全部
|
||||||
|
`Ctrl` `Alt` `Y` | 同步
|
||||||
|
`Ctrl` `Shift` `F12` | 最小化或最大化编辑器
|
||||||
|
`Alt` `Shift` `F` | 添加到收藏夹
|
||||||
|
`Alt` `Shift` `I` | 使用当前配置文件检查当前文件
|
||||||
|
`Ctrl` <code>\`</code> | 快速切换方案
|
||||||
|
`Ctrl` `Alt` `S` | 打开设置对话框
|
||||||
|
`Ctrl` `Alt` `Shift` `S` | 打开项目结构对话框
|
||||||
|
`Ctrl` `Tab` | 在选项卡和工具窗口之间切换
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 导航和搜索
|
||||||
|
<!--rehype:wrap-class=row-span-3-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Shift` `Shift` | 搜索所有内容,包括代码和菜单
|
||||||
|
`Ctrl` `F` | 寻找
|
||||||
|
`F3` | 找下一个
|
||||||
|
`Shift` `F3` | 查找上一个
|
||||||
|
`Ctrl` `R` | 代替
|
||||||
|
`Ctrl` `Shift` `A` | 查找操作
|
||||||
|
`Ctrl` `Alt` `Shift` `N` | 按交易品种名称搜索
|
||||||
|
`Ctrl` `N` | 查找班级
|
||||||
|
`Ctrl` `Shift` `N` | 查找文件,而不是类
|
||||||
|
`Ctrl` `Shift` `F` | 在路径中查找
|
||||||
|
`Ctrl` `F12` | 打开文件结构弹出窗口
|
||||||
|
`Alt` `Right/Left` | 在打开的编辑器选项卡之间导航
|
||||||
|
`Ctrl` `Enter` | 跳转到源
|
||||||
|
`Shift` `F4` | 在新窗口中打开当前编辑器选项卡
|
||||||
|
`Ctrl` `E` | 最近打开的文件弹出窗口
|
||||||
|
`Ctrl` `Shift` `E` | 最近编辑的文件弹出窗口
|
||||||
|
`Ctrl` `Shift` `Backspace` | 转到上次编辑位置
|
||||||
|
`Ctrl` `F4` | 关闭活动编辑器选项卡
|
||||||
|
`Esc` | 从工具窗口返回到编辑器窗口
|
||||||
|
`Shift` `Esc` | 隐藏活动或最后活动的工具窗口
|
||||||
|
`Ctrl` `G` | 去线
|
||||||
|
`Ctrl` `H` | 开放式层次结构
|
||||||
|
`Ctrl` `Shift` `H` | 打开方法层次结构
|
||||||
|
`Ctrl` `Alt` `H` | 开放调用层级
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 编写代码
|
||||||
|
<!--rehype:wrap-class=row-span-6-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Alt` `Insert` | 生成代码,例如getters、setters、构造函数、新类
|
||||||
|
`Ctrl` `O` | 覆盖方法
|
||||||
|
`Ctrl` `I` | 实现方法
|
||||||
|
`Ctrl` `Alt` `T` | 用 if...else、try...catch 等包围
|
||||||
|
`Ctrl` `Y` | 删除插入符处的行
|
||||||
|
`Ctrl` `-` | 折叠当前代码块
|
||||||
|
`Ctrl` `+` | 展开当前代码块
|
||||||
|
`Ctrl` `Shift` `-` | 折叠所有代码块
|
||||||
|
`Ctrl` `Shift` `+` | 展开所有代码块
|
||||||
|
`Ctrl` `D` | 复制当前行或选择
|
||||||
|
`Ctrl` `Space` | 基本代码完成
|
||||||
|
`Ctrl` `Shift` `Space` | 智能代码完成,按预期类型过滤方法和变量列表
|
||||||
|
`Ctrl` `Shift` `Enter` | 完整声明
|
||||||
|
`Ctrl` `Q` | 快速文档查找
|
||||||
|
`Ctrl` `P` | 显示所选方法的参数
|
||||||
|
`Ctrl` `B` | 直接去报关
|
||||||
|
`Ctrl` `Alt` `B` | 转到实施
|
||||||
|
`Ctrl` `U` | 转到超方法或超类
|
||||||
|
`Ctrl` `Shift` `I` | 打开快速定义查找
|
||||||
|
`Alt` `1` | 切换项目工具窗口可见性
|
||||||
|
`F11` | 切换书签
|
||||||
|
`Ctrl` `F11` | 使用助记符切换书签
|
||||||
|
`Ctrl` `/` | 注释或取消注释行注释
|
||||||
|
`Ctrl` `Shift` `/` | 使用块评论评论或取消评论
|
||||||
|
`Ctrl` `W` | 选择连续递增的代码块
|
||||||
|
`Ctrl` `Shift` `W` | 将当前选择减少到以前的状态
|
||||||
|
`Ctrl` `[` | 移动到代码块开始
|
||||||
|
`Ctrl` `]` | 移动到代码块末尾
|
||||||
|
`Ctrl` `Shift` `[` | 选择到代码块开始
|
||||||
|
`Ctrl` `Shift` `]` | 选择到代码块结束
|
||||||
|
`Ctrl` `Del` | 删除到一个词的末尾
|
||||||
|
`Ctrl` `Backspace` | 删除到单词的开头
|
||||||
|
`Ctrl` `Alt` `O` | 优化导入
|
||||||
|
`Alt` `Enter` | 项目快速修复、显示意图操作和快速修复
|
||||||
|
`Ctrl` `Alt` `L` | 重新格式化代码
|
||||||
|
`Ctrl` `Alt` `I` | 自动缩进行
|
||||||
|
`Tab` | 缩进线
|
||||||
|
`Shift` `Tab` | 不缩进线
|
||||||
|
`Ctrl` `Shift` `J` | 智能线路加入
|
||||||
|
`Ctrl` `Enter` | 智能分线
|
||||||
|
`Shift` `Enter` | 开始新行
|
||||||
|
`F2` | 下一个突出显示的错误
|
||||||
|
`Shift` `F2` | 上一个突出显示的错误
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 查看布局
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Ctrl` `+` | 放大
|
||||||
|
`Ctrl` `-` | 缩小
|
||||||
|
`Ctrl` `0` | 适应屏幕
|
||||||
|
`Ctrl` `Shift` `1` | 实际尺寸
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 布局编辑器
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`B` | 在设计和蓝图模式之间切换
|
||||||
|
`O` | 在人像和风景模式之间切换
|
||||||
|
`D` | 切换设备
|
||||||
|
`R` | 强制刷新
|
||||||
|
`E` | 切换渲染错误面板
|
||||||
|
`Del` | 删除约束
|
||||||
|
`Ctrl` `+` | 放大
|
||||||
|
`Ctrl` `-` | 缩小
|
||||||
|
`Ctrl` `0` | 缩放以适合
|
||||||
|
`Ctrl` `B` | 转到 XML
|
||||||
|
`Ctrl` `A` | 选择所有组件
|
||||||
|
`Shift` `(click)` | 选择多个组件
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 导航编辑器
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Ctrl` `+` | 放大
|
||||||
|
`Ctrl` `-` | 缩小
|
||||||
|
`Ctrl` `0` | 缩放以适合
|
||||||
|
`Ctrl` `B` | 转到 XML
|
||||||
|
`E` | 切换渲染错误面板
|
||||||
|
`Ctrl` `G` | 分组为嵌套图
|
||||||
|
`Tab` | 循环浏览目的地
|
||||||
|
`Ctrl` `A` | 选择所有目的地
|
||||||
|
`Ctrl` `(click)` | 选择多个目的地
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 构建并运行
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Ctrl` `F9` | 建造
|
||||||
|
`Shift` `F10` | 构建并运行
|
||||||
|
`Ctrl` `F10` | 应用更改并重新启动活动
|
||||||
|
`Ctrl` `Alt` `F10` | 应用代码更改
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 版本控制
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Ctrl` `K` | 提交项目到 VCS
|
||||||
|
`Ctrl` `T` | 从 VCS 更新项目
|
||||||
|
`Alt` `Shift` `C` | 查看最近的更改
|
||||||
|
`Alt` <code>\`</code> | 打开 VCS 弹出窗口
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 调试
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`Shift` `F9` | 调试
|
||||||
|
`F8` | 跨过
|
||||||
|
`F7` | 踏入
|
||||||
|
`Shift` `F7` | 智能步入
|
||||||
|
`Shift` `F8` | 走出去
|
||||||
|
`Alt` `F9` | 运行到光标处
|
||||||
|
`Alt` `F8` | 评估表达
|
||||||
|
`F9` | 恢复程序
|
||||||
|
`Ctrl` `F8` | 切换断点
|
||||||
|
`Ctrl` `Shift` `F8` | 查看断点
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 重构
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
---|---
|
||||||
|
`F5` | 复制
|
||||||
|
`F6` | 移动
|
||||||
|
`Alt` `Del` | 安全删除
|
||||||
|
`Shift` `F6` | 改名
|
||||||
|
`Ctrl` `F6` | 更改签名
|
||||||
|
`Ctrl` `Alt` `N` | 排队
|
||||||
|
`Ctrl` `Alt` `M` | 提取方法
|
||||||
|
`Ctrl` `Alt` `V` | 提取变量
|
||||||
|
`Ctrl` `Alt` `F` | 提取字段
|
||||||
|
`Ctrl` `Alt` `C` | 提取常量
|
||||||
|
`Ctrl` `Alt` `P` | 提取参数
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
另见
|
||||||
|
--------
|
||||||
|
|
||||||
|
- [Keyboard shortcuts for Android Studio](https://developer.android.com/studio/intro/keyboard-shortcuts) _(developer.android.com)_
|
@ -11,6 +11,8 @@ CocoaPods 备忘清单
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ sudo gem install cocoapods
|
$ sudo gem install cocoapods
|
||||||
|
# OR
|
||||||
|
$ brew install cocoapods
|
||||||
```
|
```
|
||||||
|
|
||||||
无 Sudo 安装,不想为此过程授予 `RubyGems` 管理员权限
|
无 Sudo 安装,不想为此过程授予 `RubyGems` 管理员权限
|
||||||
|
@ -718,6 +718,30 @@ $ ffmpeg -i test.mp4 -af "loudnorm=I=-5:LRA=1" out.mp4
|
|||||||
$ ffmpeg -i input.mp3 -af "channelmap=1-0|1-1" output.mp3
|
$ ffmpeg -i input.mp3 -af "channelmap=1-0|1-1" output.mp3
|
||||||
```
|
```
|
||||||
|
|
||||||
|
流处理
|
||||||
|
---
|
||||||
|
|
||||||
|
### 拉流
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 拉取rtmp流并存储到本地
|
||||||
|
$ ffmpeg -i "rtsp://127.0.0.1/test" test.mp4
|
||||||
|
```
|
||||||
|
|
||||||
|
### 推流
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 推送test.mp4到远程
|
||||||
|
$ ffmpeg -re -i test.mp4 -f flv rtmp://127.0.0.1/test
|
||||||
|
```
|
||||||
|
|
||||||
|
### 转发
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 拉取流并转发
|
||||||
|
$ ffmpeg -i "rtsp://127.0.0.1/test" -f mpegts -codec:v mpeg1video http://127.0.0.1/demo
|
||||||
|
```
|
||||||
|
|
||||||
另见
|
另见
|
||||||
---
|
---
|
||||||
|
|
||||||
|
197
docs/firefox.md
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
Firefox 键盘快捷键备忘清单
|
||||||
|
===
|
||||||
|
|
||||||
|
Firefox 中 116 个键盘快捷键的可视化备忘单
|
||||||
|
|
||||||
|
火狐浏览器键盘快捷键
|
||||||
|
------------------
|
||||||
|
|
||||||
|
### 导航
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Left` | 后退
|
||||||
|
`Ctrl` `Right` | 向前
|
||||||
|
`Alt` `Home` | 家
|
||||||
|
`Ctrl` `O` | 打开文件
|
||||||
|
`Ctrl` `R` | 重新加载
|
||||||
|
`Ctrl` `Shift` `R` | 重新加载(覆盖缓存)
|
||||||
|
`Ctrl` `.` | 停止
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 当前页面
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Tab` | 聚焦下一个链接或输入字段
|
||||||
|
`Shift` `Tab` | 聚焦上一个链接或输入字段
|
||||||
|
`Space` | 下一个屏幕
|
||||||
|
`Shift` `Space` | 上一个屏幕
|
||||||
|
`Ctrl` `Down` | 转到页面底部
|
||||||
|
`Ctrl` `Up` | 转到页面顶部
|
||||||
|
`F6` | 移动到下一帧
|
||||||
|
`Shift` `F6` | 移至上一帧
|
||||||
|
`Ctrl` `P` | 打印
|
||||||
|
`Ctrl` `S` | 将页面另存为
|
||||||
|
`Ctrl` `+` | 放大
|
||||||
|
`Ctrl` `-` | 缩小
|
||||||
|
`Ctrl` `0` | 缩放重置
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 编辑
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `C` | 复制
|
||||||
|
`Ctrl` `X` | 剪切
|
||||||
|
`Backspace` | 删除
|
||||||
|
`Home` | 转到行首
|
||||||
|
`End` | 转到行尾
|
||||||
|
`Ctrl` `V` | 粘贴
|
||||||
|
`Ctrl` `Shift` `V` | 粘贴(作为纯文本)
|
||||||
|
`Ctrl` `Shift` `Z` | 重做
|
||||||
|
`Ctrl` `A` | 全选
|
||||||
|
`Ctrl` `Z` | 撤消
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 历史
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Shift` `H` | 历史边栏
|
||||||
|
`Ctrl` `Shift` `Delete` | 最近清除历史记录
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 搜索
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `F` | 查询
|
||||||
|
`Ctrl` `G` | 再找
|
||||||
|
`Ctrl` `Shift` `G` | 查找上一个
|
||||||
|
`'` | 仅在链接文本中快速查找
|
||||||
|
`/` | 快速查找
|
||||||
|
`Esc` | 关闭查找或快速查找栏
|
||||||
|
`Ctrl` `K` | 焦点搜索栏
|
||||||
|
`Ctrl` `Up/Down` | 更改默认搜索引擎
|
||||||
|
`Alt` `Up/Down` | 查看菜单以切换、添加或管理搜索引擎
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 窗口和选项卡
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `W` | 关闭标签
|
||||||
|
`Ctrl` `Shift` `W` | 关闭窗口
|
||||||
|
`Ctrl` `Tab` | 按最近使用的顺序循环浏览选项卡
|
||||||
|
`Ctrl` `Q` | 退出
|
||||||
|
`Ctrl` `Alt` `Left` | 向左移动一个标签
|
||||||
|
`Ctrl` `Alt` `Right` | 向右移动一个标签
|
||||||
|
`Ctrl` `Shift` `PgUp` | 向左移动制表符
|
||||||
|
`Ctrl` `Shift` `PgDown` | 向右移动选项卡
|
||||||
|
`Ctrl` `Shift` `Home` | 将 Tab 移动到焦点以开始
|
||||||
|
`Ctrl` `Shift` `End` | 将 Tab 移动到焦点结束
|
||||||
|
`Ctrl` `M` | 静音/取消静音音频
|
||||||
|
`Ctrl` `T` | 新标签
|
||||||
|
`Ctrl` `N` | 新窗户
|
||||||
|
`Ctrl` `Shift` `P` | 新建私人窗口
|
||||||
|
`Alt` `Enter` | 在新前台选项卡中打开地址
|
||||||
|
`Enter` | 在当前选项卡中打开重点书签或链接
|
||||||
|
`Ctrl` `Enter` | 在新的前景选项卡中打开重点书签
|
||||||
|
`Ctrl` `Shift` `Enter` | 在新背景选项卡中打开重点书签
|
||||||
|
`Ctrl` `Enter` | 在新背景选项卡中打开焦点链接
|
||||||
|
`Shift` `Enter` | 在新窗口中打开重点书签或链接
|
||||||
|
`Ctrl` `Shift` `T` | 撤消关闭选项卡
|
||||||
|
`Ctrl` `Shift` `N` | 撤消关闭窗口
|
||||||
|
`Ctrl` `1-8` | 选择选项卡 1-8
|
||||||
|
`Ctrl` `9` | 选择最后一个标签
|
||||||
|
`Ctrl` `Shift` `X` | 向左或向右移动 URL
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 书签
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Shift` `D` | 为所有标签添加书签
|
||||||
|
`Ctrl` `D` | 收藏此页
|
||||||
|
`Ctrl` `B` | 书签侧边栏
|
||||||
|
`Ctrl` `Shift` `S` | 库窗口(书签)
|
||||||
|
`(search field in Library)` `Space` | 搜索所有书签
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 工具
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `J` | 下载
|
||||||
|
`Ctrl` `Shift` `A` | 插件
|
||||||
|
`Ctrl` `Alt` `I` | 切换开发者工具
|
||||||
|
`Ctrl` `Alt` `K` | 网络控制台
|
||||||
|
`Ctrl` `Alt` `C` | 检查员
|
||||||
|
`Ctrl` `Alt` `S` | 调试器
|
||||||
|
`Shift` `F7` | 样式编辑器
|
||||||
|
`Shift` `F5` | 剖析器
|
||||||
|
`Ctrl` `Alt` `E` | 网络
|
||||||
|
`Shift` `F2` | 开发者工具栏
|
||||||
|
`Ctrl` `Alt` `M` | 响应式设计视图
|
||||||
|
`Shift` `F4` | 便笺
|
||||||
|
`Ctrl` `U` | 页面源
|
||||||
|
`Ctrl` `Shift` `J` | 浏览器控制台
|
||||||
|
`Ctrl` `I` | 页面信息
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### PDF 查看器
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`N/J/Right` | 下一页
|
||||||
|
`P/K/Left` | 上一页
|
||||||
|
`Ctrl` `+` | 放大
|
||||||
|
`Ctrl` `-` | 缩小
|
||||||
|
`Ctrl` `0` | 自动缩放
|
||||||
|
`R` | 顺时针旋转文档
|
||||||
|
`Ctrl` `R` | 逆时针旋转
|
||||||
|
`Ctrl` `Alt` `P` | 切换到演示模式
|
||||||
|
`S` | 选择文本选择工具
|
||||||
|
`H` | 选择手形工具
|
||||||
|
`Ctrl` `Alt` `G` | 聚焦页码输入框
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 各种各样的
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Enter` | 完整的 .com 地址
|
||||||
|
`Shift` `Enter` | 完整的 .net 地址
|
||||||
|
`Ctrl` `Shift` `Enter` | 完整的 .org 地址
|
||||||
|
`Shift` `Delete` | 删除选定的自动完成条目
|
||||||
|
`Ctrl` `Shift` `F` | 切换全屏
|
||||||
|
`Ctrl` `Alt` `R` | 切换阅读器模式
|
||||||
|
`F7` | 插入符浏览
|
||||||
|
`Ctrl` `L` | 选择地址栏
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 媒体快捷方式
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Space` | 切换播放/暂停
|
||||||
|
`Down` | 降低音量
|
||||||
|
`Up` | 增加音量
|
||||||
|
`Ctrl` `Down` | 静音
|
||||||
|
`Ctrl` `Up` | 取消静音
|
||||||
|
`Left` | 后退 15 秒
|
||||||
|
`Ctrl` `Left` | 追回 10%
|
||||||
|
`Right` | 快进 15 秒
|
||||||
|
`Ctrl` `Right` | 向前寻求 10%
|
||||||
|
`Home` | 追寻至始
|
||||||
|
`End` | 求到底
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
另见
|
||||||
|
--------
|
||||||
|
|
||||||
|
- [Keyboard shortcuts for Firefox](https://support.mozilla.org/en-US/kb/keyboard-shortcuts-perform-firefox-tasks-quickly) _(support.mozilla.org)_
|
140
docs/flutter.md
@ -421,8 +421,6 @@ SizedBox(
|
|||||||
在实际开发中,Container常常用于对一个组件进行包装修饰。
|
在实际开发中,Container常常用于对一个组件进行包装修饰。
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
// 将Contianer大小固定为100 * 100, 背景色为蓝色。
|
|
||||||
// 把Text包裹在Container中,并将其居中
|
|
||||||
Container(
|
Container(
|
||||||
width: 100,
|
width: 100,
|
||||||
height: 100,
|
height: 100,
|
||||||
@ -430,9 +428,10 @@ Container(
|
|||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Text('Hello world'),
|
child: Text('Hello world'),
|
||||||
),
|
),
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
将 `Contianer` 大小固定为 `100 * 100`, 背景色为蓝色。把 `Text` 包裹在 `Container` 中,并将其居中
|
||||||
|
|
||||||
### Column
|
### Column
|
||||||
|
|
||||||
列布局(Column),可以将多个子组件沿着垂直的方向摆放(竖的摆放)
|
列布局(Column),可以将多个子组件沿着垂直的方向摆放(竖的摆放)
|
||||||
@ -461,7 +460,6 @@ Column(
|
|||||||
行布局(Row),可以将多个组件沿水平的方向摆放。
|
行布局(Row),可以将多个组件沿水平的方向摆放。
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
// 在同一行摆放3个Button
|
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
@ -480,12 +478,13 @@ Row(
|
|||||||
),
|
),
|
||||||
```
|
```
|
||||||
|
|
||||||
|
在同一行摆放 3 个 `Button`
|
||||||
|
|
||||||
### Wrap
|
### Wrap
|
||||||
|
|
||||||
将子组件从左到右依次排列,当空间不足时自动换行。
|
将子组件从左到右依次排列,当空间不足时自动换行。
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
// 显示多个Flutter 的logo并自动换行
|
|
||||||
Wrap(
|
Wrap(
|
||||||
children: [
|
children: [
|
||||||
FlutterLogo(),
|
FlutterLogo(),
|
||||||
@ -498,14 +497,14 @@ Wrap(
|
|||||||
),
|
),
|
||||||
```
|
```
|
||||||
|
|
||||||
|
显示多个 `Flutter` 的 `logo` 并自动换行
|
||||||
|
|
||||||
### Stack
|
### Stack
|
||||||
|
|
||||||
Stack 可以将一多个子组件叠在一起显示。堆叠顺序按照children属性中的列表依次堆叠摆放,默认将子控件沿左上角对齐。
|
Stack 可以将一多个子组件叠在一起显示。堆叠顺序按照children属性中的列表依次堆叠摆放,默认将子控件沿左上角对齐。
|
||||||
需要控制子控件位置可以嵌套`Positoned`控件。
|
需要控制子控件位置可以嵌套`Positoned`控件。
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
// 依次堆叠300*300的蓝色色块、200*200的黑色色块、
|
|
||||||
// 100*100的黄色色块
|
|
||||||
Stack(
|
Stack(
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
@ -527,6 +526,8 @@ Stack(
|
|||||||
),
|
),
|
||||||
```
|
```
|
||||||
|
|
||||||
|
依次堆叠 `300*300` 的蓝色色块、`200*200` 的黑色色块、`100*100` 的黄色色块
|
||||||
|
|
||||||
### Positioned
|
### Positioned
|
||||||
<!--rehype:wrap-class=row-span-2-->
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
若需要控制Stack中子控件的位置,则可以嵌套改控件。
|
若需要控制Stack中子控件的位置,则可以嵌套改控件。
|
||||||
@ -603,6 +604,131 @@ Container(
|
|||||||
),
|
),
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Flex
|
||||||
|
|
||||||
|
Flex 的用法与 `Row` 或 `Column` 类似,但只需要额外传入 `direction` 参数
|
||||||
|
|
||||||
|
- `Row` 和 `Column` 组件都继承 `Flex` 组件
|
||||||
|
- 设置 `direction` 为 `Axis.horizontal` 表示水平方向(`Row`),为 `Axis.vertical`则为垂直方向(`Column`)
|
||||||
|
|
||||||
|
垂直方向依次摆放3个flutter logo
|
||||||
|
|
||||||
|
```dart
|
||||||
|
Flex(
|
||||||
|
direction: Axis.vertiacl,
|
||||||
|
children;[
|
||||||
|
Fluterlogo(),
|
||||||
|
Fluterlogo(),
|
||||||
|
Fluterlogo(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
水平方向依次摆放 3 个 flutter logo
|
||||||
|
|
||||||
|
```dart
|
||||||
|
Flex(
|
||||||
|
dirction: Axis.horizontal,
|
||||||
|
children: [
|
||||||
|
Flutterlogo(),
|
||||||
|
Flutterlogo(),
|
||||||
|
Flutterlogo(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
### Expaneded
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
Expanded 用于扩张一个子组件。可以通过 `flex` 属性,用于表示该组件相对其他弹性组件放大的倍数(可以理解为一个权重)。
|
||||||
|
|
||||||
|
```dart
|
||||||
|
// Container 会占满剩余的全部空用空间
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
FlutterLogo(),
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
child: FlutterLogo(),
|
||||||
|
color: Colors.green,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
FlutterLogo(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
|
||||||
|
// 按照1:2 的比例分配一整行的空间
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Container(
|
||||||
|
child: FlutterLogo(),
|
||||||
|
color: Colors.green,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 2,
|
||||||
|
child: Container(
|
||||||
|
child: FlutterLogo(),
|
||||||
|
color: Colors.blue,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
### Flexible
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
`Flexible` 是 `Expanded` 组件的父类。
|
||||||
|
与 `Expanded` 不同的是,`Flexible` 可以通过 `fit` 属性设置子控件是否必须占满 `Flexibal` 扩展的空间。而 `Expaned` 默认子控件必须占满
|
||||||
|
|
||||||
|
```dart
|
||||||
|
// 如果将fit设置为tight,
|
||||||
|
// 则绿色Container 和蓝色Container大小一样。
|
||||||
|
// 如果将fit设置为loose,
|
||||||
|
// 则两个Flexible扩展的空间大小是一样的,
|
||||||
|
// 但绿色Container并不会填充整个扩展的空间。
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
|
flex: 2,
|
||||||
|
// fit: FlexFit.tight,
|
||||||
|
child: Container(
|
||||||
|
child: FlutterLogo(),
|
||||||
|
color: Colors.green,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 2,
|
||||||
|
child: Container(
|
||||||
|
child: FlutterLogo(),
|
||||||
|
color: Colors.blue,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
将 `Flexible` 的 `fit` 属性设置为 `tingt`,就等价于使用 `Expanded`
|
||||||
|
|
||||||
|
### Spacer
|
||||||
|
|
||||||
|
Spacer 用于在布局中留白
|
||||||
|
|
||||||
|
```dart
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Text('Item'),
|
||||||
|
Spacer(),
|
||||||
|
FlutterLogo(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
例如,需要文本和图标位于一个行的两端,而中间留白时。就可以使用 `Spacer`
|
||||||
|
|
||||||
另见
|
另见
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -829,6 +829,7 @@ steps:
|
|||||||
[`coverage-badges-cli`](https://github.com/jaywcjlove/coverage-badges-cli) | 生成覆盖率徽章(Badges)图片
|
[`coverage-badges-cli`](https://github.com/jaywcjlove/coverage-badges-cli) | 生成覆盖率徽章(Badges)图片
|
||||||
[`action-ejs`](https://github.com/jaywcjlove/action-ejs) | 基于 ejs 生成 HTML
|
[`action-ejs`](https://github.com/jaywcjlove/action-ejs) | 基于 ejs 生成 HTML
|
||||||
[`github-action-package`](https://github.com/jaywcjlove/github-action-package) | 修改 JSON 文件内容
|
[`github-action-package`](https://github.com/jaywcjlove/github-action-package) | 修改 JSON 文件内容
|
||||||
|
[`github-action-read-file`](https://github.com/jaywcjlove/github-action-read-file) | 读取文件内容
|
||||||
[`markdown-to-html-cli`](https://github.com/jaywcjlove/markdown-to-html-cli) | Markdown 转换成 HTML
|
[`markdown-to-html-cli`](https://github.com/jaywcjlove/markdown-to-html-cli) | Markdown 转换成 HTML
|
||||||
[`ncipollo/release-action`](https://github.com/ncipollo/release-action) | 创建 `Release`
|
[`ncipollo/release-action`](https://github.com/ncipollo/release-action) | 创建 `Release`
|
||||||
[`peaceiris/actions-gh-pages`](https://github.com/peaceiris/actions-gh-pages) | 将文件或文件夹内容提交到 `gh-pages` 分支
|
[`peaceiris/actions-gh-pages`](https://github.com/peaceiris/actions-gh-pages) | 将文件或文件夹内容提交到 `gh-pages` 分支
|
||||||
@ -924,8 +925,273 @@ steps:
|
|||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
当 `npm` 推送包失败不影响整个流程,可用于自动发包
|
||||||
|
|
||||||
|
GitLab CI/CD 迁移到 GitHub Actions
|
||||||
|
---
|
||||||
|
|
||||||
|
### 语法示例
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
job1:
|
||||||
|
variables:
|
||||||
|
GIT_CHECKOUT: "true"
|
||||||
|
script:
|
||||||
|
- echo "Run your script here"
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
jobs:
|
||||||
|
job1:
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- run: echo "Run your script here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 运行程序
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
windows_job:
|
||||||
|
tags:
|
||||||
|
- windows
|
||||||
|
script:
|
||||||
|
- echo Hello, %USERNAME%!
|
||||||
|
|
||||||
|
linux_job: tags:
|
||||||
|
- linux script:
|
||||||
|
- echo "Hello, $USER!"
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
windows_job:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- run: echo Hello, %USERNAME%!
|
||||||
|
|
||||||
|
linux_job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "Hello, $USER!"
|
||||||
|
```
|
||||||
|
|
||||||
|
在不同的平台上运行作业
|
||||||
|
|
||||||
|
### Docker 映像
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
my_job:
|
||||||
|
image: node:10.16-jessie
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
jobs:
|
||||||
|
my_job:
|
||||||
|
container: node:10.16-jessie
|
||||||
|
```
|
||||||
|
|
||||||
|
### 条件和表达式语法
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
deploy_prod:
|
||||||
|
stage: deploy
|
||||||
|
script:
|
||||||
|
- echo "部署到生产服务器"
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
jobs:
|
||||||
|
deploy_prod:
|
||||||
|
if: contains( github.ref, 'master')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "部署到生产服务器"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Artifacts
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
script:
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- math-homework.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- name: Upload math result for job 1
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: homework
|
||||||
|
path: math-homework.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### 作业之间的依赖关系
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- test
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
build_a: stage: build script:
|
||||||
|
- echo "该作业将首先运行"
|
||||||
|
|
||||||
|
build_b: stage: build script:
|
||||||
|
- echo "该作业将首先运行,与 build_a 并行"
|
||||||
|
|
||||||
|
test_ab: stage: test script:
|
||||||
|
- echo "此作业将在 build_a 和 build_b 完成后运行"
|
||||||
|
|
||||||
|
deploy_ab: stage: deploy script:
|
||||||
|
- echo "此作业将在 test_ab 完成后运行"
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
jobs:
|
||||||
|
build_a:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "该作业将首先运行"
|
||||||
|
|
||||||
|
build_b:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "该作业将首先运行,与 build_a 并行"
|
||||||
|
|
||||||
|
test_ab:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build_a,build_b]
|
||||||
|
steps:
|
||||||
|
- run: echo "此作业将在 build_a 和 build_b 完成后运行"
|
||||||
|
|
||||||
|
deploy_ab:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [test_ab]
|
||||||
|
steps:
|
||||||
|
- run: echo "此作业将在 test_ab 完成后运行"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 缓存
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
image: node:latest
|
||||||
|
|
||||||
|
cache: key: $CI_COMMIT_REF_SLUG paths:
|
||||||
|
- .npm/
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- npm ci --cache .npm --prefer-offline
|
||||||
|
|
||||||
|
test_async: script:
|
||||||
|
- node ./specs/start.js ./specs/async.spec.js
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
jobs:
|
||||||
|
test_async:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Cache node modules
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: ~/.npm
|
||||||
|
key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
|
||||||
|
restore-keys: v1-npm-deps-
|
||||||
|
```
|
||||||
|
|
||||||
|
### 数据库和服务容器
|
||||||
|
|
||||||
|
<yel>GitLab CI/CD</yel>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
container-job:
|
||||||
|
variables:
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
|
# PostgreSQL 服务容器通信的主机名
|
||||||
|
POSTGRES_HOST: postgres
|
||||||
|
# 默认的 PostgreSQL 端口
|
||||||
|
POSTGRES_PORT: 5432
|
||||||
|
image: node:10.18-jessie
|
||||||
|
services:
|
||||||
|
- postgres
|
||||||
|
script:
|
||||||
|
# 执行 package.json 文件中
|
||||||
|
# 所有依赖项的全新安装
|
||||||
|
- npm ci
|
||||||
|
# 运行创建 PostgreSQL 客户端的脚本,
|
||||||
|
# 用数据填充客户端,并检索数据
|
||||||
|
- node client.js
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub Actions
|
||||||
|
|
||||||
|
```yml
|
||||||
|
jobs:
|
||||||
|
container-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: node:10.18-jessie
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres
|
||||||
|
env:
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# 执行 package.json 文件中
|
||||||
|
# 所有依赖项的全新安装
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Connect to PostgreSQL
|
||||||
|
# 运行创建 PostgreSQL 客户端的脚本,
|
||||||
|
# 用数据填充客户端,并检索数据
|
||||||
|
run: node client.js
|
||||||
|
env:
|
||||||
|
# PostgreSQL 服务容器通信的主机名
|
||||||
|
POSTGRES_HOST: postgres
|
||||||
|
# 默认的 PostgreSQL 端口
|
||||||
|
POSTGRES_PORT: 5432
|
||||||
|
```
|
||||||
|
|
||||||
另见
|
另见
|
||||||
---
|
---
|
||||||
|
|
||||||
- [Github Actions 学习笔记](https://jaywcjlove.github.io/github-actions) _(jaywcjlove.github.io)_
|
- [Github Actions 学习笔记](https://jaywcjlove.github.io/github-actions) _(jaywcjlove.github.io)_
|
||||||
- [了解 GitHub Actions](https://docs.github.com/cn/actions/learn-github-actions) _(docs.github.com)_
|
- [了解 GitHub Actions](https://docs.github.com/cn/actions/learn-github-actions) _(docs.github.com)_
|
||||||
|
- [从 GitLab CI/CD 迁移到 GitHub Actions](https://docs.github.com/cn/actions/migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions) _(docs.github.com)_
|
||||||
|
232
docs/github.md
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
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-->
|
||||||
|
|
||||||
|
### 源代码编辑
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `F` | 开始在文件编辑器中搜索
|
||||||
|
`Ctrl` `G` | 找下一个
|
||||||
|
`Ctrl` `Shift` `G` | 查找上一个
|
||||||
|
`Ctrl` `Shift` `F` | 代替
|
||||||
|
`Ctrl` `Shift` `R` | 全部替换
|
||||||
|
`Alt` `G` | 跳转到行
|
||||||
|
`Ctrl` `Z` | 撤消
|
||||||
|
`Ctrl` `Y` | 重做
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 源码浏览
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`T` | 激活文件查找器
|
||||||
|
`L` | 跳转到代码中的一行
|
||||||
|
`W` | 切换到新的分支或标签
|
||||||
|
`Y` | 将 URL 扩展为其规范形式
|
||||||
|
`I` | 显示或隐藏对差异的评论
|
||||||
|
`B` | 打开责备视图
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 注释
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `B` | 为粗体文本插入 Markdown 格式
|
||||||
|
`Ctrl` `I` | 插入斜体文本的 Markdown 格式
|
||||||
|
`Ctrl` `K` | 插入 Markdown 格式以创建链接
|
||||||
|
`Ctrl` `Shift` `P` | 在编写和预览评论选项卡之间切换
|
||||||
|
`Ctrl` `Enter` | 提交评论
|
||||||
|
`Ctrl` `.` | 打开已保存的回复菜单,然后使用已保存的回复自动填充评论字段
|
||||||
|
`Ctrl` `G` | 插入一个建议
|
||||||
|
`R` | 在回复中引用所选文字
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 问题和拉取请求列表
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`C` | 创建问题
|
||||||
|
`Ctrl` `/` | 将光标聚焦在问题或拉取请求搜索栏上
|
||||||
|
`U` | 按作者过滤
|
||||||
|
`L` | 按标签过滤或编辑标签
|
||||||
|
`M` | 按里程碑过滤或编辑里程碑
|
||||||
|
`A` | 按受让人过滤或编辑受让人
|
||||||
|
`O` | 打开问题
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 问题和拉取请求
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Q` | 请求审稿人
|
||||||
|
`M` | 设定一个里程碑
|
||||||
|
`L` | 应用标签
|
||||||
|
`A` | 设置受让人
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 拉取请求的变化
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`C` | 打开拉取请求中的提交列表
|
||||||
|
`T` | 打开拉取请求中已更改文件的列表
|
||||||
|
`J` | 在列表中向下移动选择
|
||||||
|
`K` | 在列表中向上移动选择
|
||||||
|
`Ctrl` `Shift` `Enter` | 在拉取请求差异上添加单个评论
|
||||||
|
`Alt` `(click)` | 在拉取请求中折叠和展开所有过时的审阅评论之间切换
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 项目板
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`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-->
|
||||||
|
|
||||||
|
### 通知
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`E/L/Y` | 标记为已读
|
||||||
|
`Shift` `M` | 静音线程
|
||||||
|
<!--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> 后缀的文件中搜索内容
|
||||||
|
<!--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-->
|
||||||
|
|
||||||
|
### 基于仓库的条件
|
||||||
|
|
||||||
|
:-- | --
|
||||||
|
:-- | --
|
||||||
|
`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 的条件
|
||||||
|
|
||||||
|
:-- | --
|
||||||
|
:-- | --
|
||||||
|
`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-->
|
||||||
|
|
||||||
|
另见
|
||||||
|
-----
|
||||||
|
|
||||||
|
- [Keyboard shortcuts for Github](https://help.github.com/articles/using-keyboard-shortcuts/) _(help.github.com)_
|
126
docs/gitlab.md
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
GitLab 键盘快捷键 备忘清单
|
||||||
|
===
|
||||||
|
|
||||||
|
GitLab 中 58 个键盘快捷键的可视化备忘单
|
||||||
|
|
||||||
|
键盘快捷键
|
||||||
|
---------
|
||||||
|
|
||||||
|
### 全局的
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`?` | 显示或隐藏快捷方式参考表
|
||||||
|
`Shift` `P` | 转到您的项目页面
|
||||||
|
`Shift` `G` | 转到您的群组页面
|
||||||
|
`Shift` `A` | 前往您的活动页面
|
||||||
|
`Shift` `L` | 转到您的里程碑页面
|
||||||
|
`Shift` `S` | 转到您的摘要页面
|
||||||
|
`S` | 将光标放在问题或合并请求搜索中
|
||||||
|
`Shift` `I` | 转到您的问题页面
|
||||||
|
`Shift` `T` | 转到您的合并请求页面
|
||||||
|
`P` `B` | 显示或隐藏性能栏
|
||||||
|
`Up` | 编辑您的最后一条评论,您必须在主题下方的空白文本字段中
|
||||||
|
`Ctrl` `Shift` `P` | 在文本字段中编辑文本时切换降价预览
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 项目
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`G` `P` | 进入项目主页
|
||||||
|
`G` `V` | 转到项目活动提要
|
||||||
|
`G` `R` | 转到项目发布列表
|
||||||
|
`G` `F` | 转到项目文件列表
|
||||||
|
`T` | 进入项目文件搜索页面
|
||||||
|
`G` `C` | 转到项目提交列表
|
||||||
|
`G` `N` | 转到存储库图页面
|
||||||
|
`G` `D` | 转到存储库图表
|
||||||
|
`G` `I` | 转到项目问题列表
|
||||||
|
`I` | 转到新问题页面
|
||||||
|
`G` `B` | 转到项目问题板列表
|
||||||
|
`G` `M` | 转到项目合并请求列表
|
||||||
|
`G` `J` | 转到 CI/CD 作业列表
|
||||||
|
`G` `L` | 转到项目指标
|
||||||
|
`G` `E` | 转到项目环境
|
||||||
|
`G` `K` | 进入项目Kubernetes集群集成页面
|
||||||
|
`G` `S` | 转到项目片段列表
|
||||||
|
`G` `W` | 转到项目 wiki,如果启用
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 问题和合并请求
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`E` | 编辑说明
|
||||||
|
`A` | 变更受让人
|
||||||
|
`M` | 改变里程碑
|
||||||
|
`L` | 更改标签
|
||||||
|
`R` | 开始写评论,如果选择了任何文本,它将被引用
|
||||||
|
`N` | 移至下一个未解决的讨论,仅合并请求
|
||||||
|
`P` | 移至先前未解决的讨论,仅合并请求
|
||||||
|
`]` | 移动到下一个文件,仅合并请求
|
||||||
|
`[` | 移动到上一个文件,仅合并请求
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 项目文件
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Up` | 向上移动选择
|
||||||
|
`Down` | 向下移动选择
|
||||||
|
`Enter` | 开放选择
|
||||||
|
`Esc` | 返回文件列表屏幕,仅在搜索文件时
|
||||||
|
`Y` | 仅在查看文件时转到文件永久链接
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 网络集成开发环境
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `P` | 搜索并打开另一个文件进行编辑
|
||||||
|
`Ctrl` `Enter` | 提交,在编辑提交消息时
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 存储库
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Left` | 向左滚动
|
||||||
|
`Right` | 向右滚动
|
||||||
|
`Up` | 向上滑动
|
||||||
|
`Down` | 向下滚动
|
||||||
|
`Shift` `Up` | 滚动到顶部
|
||||||
|
`Shift` `Down` | 滚动到底部
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 维基页面
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`E` | 编辑维基页面
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 过滤搜索
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Backspace` | 清除整个搜索过滤器
|
||||||
|
`Alt` `Backspace` | 一次清除一个标记
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 史诗
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`R` | 开始写评论,如果选择了任何文本,它将被引用
|
||||||
|
`E` | 编辑说明
|
||||||
|
`L` | 更改标签
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
另见
|
||||||
|
----
|
||||||
|
|
||||||
|
- [Keyboard shortcuts for GitLab](https://docs.gitlab.com/ee/user/shortcuts.html) _(docs.gitlab.com)_
|
212
docs/google-chrome.md
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
Google Chrome 键盘快捷键备忘清单
|
||||||
|
===
|
||||||
|
|
||||||
|
谷歌浏览器中 65 个键盘快捷键和 Chrome 开发者工具中 56 个键盘快捷键的可视化备忘单
|
||||||
|
|
||||||
|
谷歌浏览器键盘快捷键
|
||||||
|
---------
|
||||||
|
<!--rehype:body-class=cols-2-->
|
||||||
|
|
||||||
|
### 选项卡和窗口
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `N` | 打开一个新窗口
|
||||||
|
`Ctrl` `Shift` `N` | 以隐身模式打开新窗口
|
||||||
|
`Ctrl` `T` | 打开一个新标签,然后跳转到它
|
||||||
|
`Ctrl` `Shift` `T` | 重新打开上次关闭的选项卡,并跳转到它
|
||||||
|
`Ctrl` `Tab` | 跳转到下一个打开的标签页
|
||||||
|
`Ctrl` `Shift` `Tab` | 跳转到上一个打开的标签页
|
||||||
|
`Ctrl` `1-8` | 跳转到特定选项卡
|
||||||
|
`Ctrl` `9` | 跳转到最后一个标签
|
||||||
|
`Alt` `Home` | 在当前选项卡中打开您的主页
|
||||||
|
`Alt` `Left` | 在当前选项卡中打开历史记录中的上一页
|
||||||
|
`Alt` `Right` | 在当前选项卡中打开历史记录的下一页
|
||||||
|
`Ctrl` `W` | 关闭当前标签
|
||||||
|
`Ctrl` `Shift` `W` | 关闭当前窗口
|
||||||
|
`Alt` `Space` `N` | 最小化当前窗口
|
||||||
|
`Alt` `Space` `X` | 最大化当前窗口
|
||||||
|
`Alt` `F4` | 关闭当前窗口
|
||||||
|
`Ctrl` `Shift` `Q` | 相当谷歌浏览器
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 谷歌浏览器功能
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Alt` `F` | 打开 Chrome 菜单
|
||||||
|
`Ctrl` `Shift` `B` | 显示或隐藏书签栏
|
||||||
|
`Ctrl` `Shift` `O` | 打开书签管理器
|
||||||
|
`Ctrl` `H` | 在新标签页中打开历史记录页面
|
||||||
|
`Ctrl` `J` | 在新标签页中打开下载页面
|
||||||
|
`Shift` `Esc` | 打开 Chrome 任务管理器
|
||||||
|
`Shift` `Alt` `T` | 将焦点置于 Chrome 工具栏中的第一项
|
||||||
|
`F10` | 将焦点置于 Chrome 工具栏中的最后一项
|
||||||
|
`F6` | 将焦点切换到未聚焦的对话框(如果显示)
|
||||||
|
`Ctrl` `F` | 打开查找栏以搜索当前页面
|
||||||
|
`Ctrl` `G` | 跳转到查找栏搜索的下一个匹配项
|
||||||
|
`Ctrl` `Shift` `G` | 跳转到查找栏搜索的上一个匹配项
|
||||||
|
`F12` | 打开开发者工具
|
||||||
|
`Ctrl` `Shift` `Delete` | 打开清除浏览数据选项
|
||||||
|
`F1` | 在新标签页中打开 Chrome 帮助中心
|
||||||
|
`Ctrl` `Shift` `M` | 登录不同的用户或以访客身份浏览
|
||||||
|
`Alt` `Shift` `I` | 打开反馈表
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 地址栏
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`(type)` `Enter` | 使用您的默认搜索引擎进行搜索
|
||||||
|
`(type)` `Tab` | 使用不同的搜索引擎搜索
|
||||||
|
`Ctrl` `Enter` | 添加 www. 和 .com 到站点名称,并在当前选项卡中打开
|
||||||
|
`Alt` `Enter` | 打开新标签页并执行 Google 搜索
|
||||||
|
`Ctrl` `L` | 跳转到地址栏
|
||||||
|
`Ctrl` `K` | 从页面上的任何位置搜索
|
||||||
|
`Shift` `Delete` | 从地址栏中删除预测
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 网页快捷方式
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `P` | 打开选项以打印当前页面
|
||||||
|
`Ctrl` `S` | 打开选项以保存当前页面
|
||||||
|
`Ctrl` `R` | 重新加载当前页面
|
||||||
|
`Ctrl` `Shift` `R` | 重新加载当前页面,忽略缓存内容
|
||||||
|
`Esc` | 停止页面加载
|
||||||
|
`Tab` | 向前浏览可点击的项目
|
||||||
|
`Shift` `Tab` | 浏览向后移动的可点击项目
|
||||||
|
`Ctrl` `O` | 在 Chrome 中打开计算机中的文件
|
||||||
|
`Ctrl` `U` | 显示当前页面不可编辑的 HTML 源代码
|
||||||
|
`Ctrl` `D` | 将当前网页保存为书签
|
||||||
|
`Ctrl` `Shift` `D` | 将所有打开的标签保存为新文件夹中的书签
|
||||||
|
`F11` | 打开或关闭全屏模式
|
||||||
|
`Ctrl` `+` | 使页面上的所有内容变大
|
||||||
|
`Ctrl` `-` | 缩小页面上的所有内容
|
||||||
|
`Ctrl` `0` | 将页面上的所有内容恢复为默认大小
|
||||||
|
`Space` | 向下滚动网页,一次滚动一个屏幕
|
||||||
|
`Shift` `Space` | 向上滚动网页,一次滚动一个屏幕
|
||||||
|
`Home` | 转到页面的顶部
|
||||||
|
`End` | 转到页面底部
|
||||||
|
`Shift` `(scroll mouse)` | 在页面上水平滚动
|
||||||
|
`Ctrl` `Left` | 将光标移动到文本字段中上一个单词的前面
|
||||||
|
`Ctrl` `Right` | 将光标移动到文本字段中下一个单词的后面
|
||||||
|
`Ctrl` `Backspace` | 删除文本字段中的前一个词
|
||||||
|
`Alt` `Home` | 在当前选项卡中打开主页
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
Chrome 开发者工具键盘快捷键
|
||||||
|
---
|
||||||
|
|
||||||
|
### 打开 DevTools
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Shift` `I` | 打开您上次使用的任何面板
|
||||||
|
`Ctrl` `Shift` `J` | 打开控制台面板
|
||||||
|
`Ctrl` `Shift` `C` | 打开元素面板
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 全局快捷方式
|
||||||
|
<!--rehype:wrap-class=row-span-3-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`F1` | 显示设置
|
||||||
|
`Ctrl` `]` | 聚焦下一个面板
|
||||||
|
`Ctrl` `[` | 聚焦上一个面板
|
||||||
|
`Ctrl` `Shift` `D` | 切换回您上次使用的任何对接位置
|
||||||
|
`Ctrl` `Shift` `M` | 切换设备模式
|
||||||
|
`Ctrl` `Shift` `C` | 切换检查元素模式
|
||||||
|
`Ctrl` `Shift` `P` | 打开命令菜单
|
||||||
|
`Esc` | 切换抽屉
|
||||||
|
`Ctrl` `R` | 正常装填
|
||||||
|
`Ctrl` `Shift` `R` | 硬重载
|
||||||
|
`Ctrl` `F` | 在当前面板中搜索文本
|
||||||
|
`Ctrl` `Shift` `F` | 在抽屉中打开“搜索”选项卡
|
||||||
|
`Ctrl` `P` | 在源面板中打开文件
|
||||||
|
`Ctrl` `Shift` `+` | 放大
|
||||||
|
`Ctrl` `-` | 缩小
|
||||||
|
`Ctrl` `0` | 恢复默认缩放级别
|
||||||
|
`Ctrl` `O` `!` | 运行片段
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 元素面板
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Z` | 撤消更改
|
||||||
|
`Ctrl` `Y` | 重做更改
|
||||||
|
`Up/Down` | 选择当前所选元素上方或下方的元素
|
||||||
|
`Right` | 展开当前选中的节点
|
||||||
|
`Left` | 折叠当前选中的节点
|
||||||
|
`Enter` | 在当前选定的元素上切换编辑属性模式
|
||||||
|
`Tab` | 进入编辑属性模式后选择下一个属性
|
||||||
|
`Shift` `Tab` | 进入编辑属性模式后选择上一个属性
|
||||||
|
`H` | 隐藏当前选中的元素
|
||||||
|
`F2` | 在当前选定的元素上切换编辑为 HTML 模式
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 资源面板
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `\` | 暂停脚本执行(如果正在运行)或恢复(如果暂停)
|
||||||
|
`Ctrl` `'` | 跳过下一个函数调用
|
||||||
|
`Ctrl` `;` | 进入下一个函数调用
|
||||||
|
`Ctrl` `Shift` `;` | 跳出当前函数
|
||||||
|
`Ctrl` `./,` | 选择当前所选帧下方或上方的调用帧
|
||||||
|
`Ctrl` `S` | 将更改保存到本地修改
|
||||||
|
`Ctrl` `Alt` `S` | 保存所有更改
|
||||||
|
`Ctrl` `G` | 去线
|
||||||
|
`Alt` `W` | 关闭活动标签
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 代码编辑器
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `Del` | 删除最后一个单词中的所有字符,直到光标
|
||||||
|
`Ctrl` `M` | 转到匹配的括号
|
||||||
|
`Ctrl` `/` | 切换单行注释
|
||||||
|
`Ctrl` `D` | 选择光标所在的任何单词的下一个匹配项
|
||||||
|
`Ctrl` `U` | 取消选择光标所在的任何单词的下一个匹配项
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 性能面板
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `E` | 开始或停止录制
|
||||||
|
`Ctrl` `S` | 保存录音
|
||||||
|
`Ctrl` `O` | 载入录音
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 内存面板
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `E` | 开始或停止录制
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 控制台面板
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Tab` | 接受自动完成建议
|
||||||
|
`Esc` | 拒绝自动完成建议
|
||||||
|
`Up` | 获取之前的语句
|
||||||
|
`Down` | 获取下一条语句
|
||||||
|
`Ctrl` <code>\`</code> | 聚焦控制台
|
||||||
|
`Ctrl` `L` | 清除控制台
|
||||||
|
`Shift` `Enter` | 强制多行输入
|
||||||
|
`Enter` | 执行
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
另见
|
||||||
|
----
|
||||||
|
|
||||||
|
- [Keyboard shortcuts for Google Chrome](https://support.google.com/chrome/answer/157179?hl=en) _(support.google.com)_
|
1585
docs/nextjs.md
Normal file
311
docs/pm2.md
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
PM2 备忘清单
|
||||||
|
===
|
||||||
|
|
||||||
|
[PM2](https://pm2.keymetrics.io/) 是一个守护进程管理器,它将帮助您管理和保持您的应用程序在线。PM2 入门非常简单,它以简单直观的 CLI 形式提供
|
||||||
|
|
||||||
|
入门
|
||||||
|
-----
|
||||||
|
|
||||||
|
### 安装
|
||||||
|
|
||||||
|
最新的 PM2 版本可通过 NPM 或 Yarn 安装
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ npm install pm2@latest -g
|
||||||
|
```
|
||||||
|
|
||||||
|
或者
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ yarn global add pm2
|
||||||
|
```
|
||||||
|
|
||||||
|
### 启动应用程序
|
||||||
|
|
||||||
|
启动、守护进程和监视应用程序的最简单方法是使用此命令行
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 start app.js
|
||||||
|
```
|
||||||
|
|
||||||
|
或者轻松启动任何其他应用程序
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 start bashscript.sh
|
||||||
|
$ pm2 start python-app.py --watch
|
||||||
|
$ pm2 start binary-file -- --port 1520
|
||||||
|
```
|
||||||
|
|
||||||
|
### 您可以传递给 CLI 的一些选项
|
||||||
|
<!--rehype:wrap-class=row-span-3-->
|
||||||
|
|
||||||
|
指定应用名称
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--name <app_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
文件更改时监视并重新启动应用程序
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--watch
|
||||||
|
```
|
||||||
|
|
||||||
|
设置应用重新加载的内存阈值
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--max-memory-restart <200MB>
|
||||||
|
```
|
||||||
|
|
||||||
|
指定日志文件
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--log <log_path>
|
||||||
|
```
|
||||||
|
|
||||||
|
将额外的参数传递给脚本
|
||||||
|
|
||||||
|
```shell
|
||||||
|
-- arg1 arg2 arg3
|
||||||
|
```
|
||||||
|
|
||||||
|
自动重启之间的延迟
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--restart-delay <delay in ms>
|
||||||
|
```
|
||||||
|
|
||||||
|
带时间的前缀日志
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--time
|
||||||
|
```
|
||||||
|
|
||||||
|
不要自动重启应用程序
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--no-autorestart
|
||||||
|
```
|
||||||
|
|
||||||
|
指定 cron 强制重启
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--cron <cron_pattern>
|
||||||
|
```
|
||||||
|
|
||||||
|
附加到应用程序日志
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--no-daemon
|
||||||
|
```
|
||||||
|
|
||||||
|
### 管理流程
|
||||||
|
|
||||||
|
管理应用程序状态很简单,这里是命令
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 restart app_name
|
||||||
|
$ pm2 reload app_name
|
||||||
|
$ pm2 stop app_name
|
||||||
|
$ pm2 delete app_name
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 你可以传递而不是 app_name
|
||||||
|
|
||||||
|
- `all` 作用于所有进程
|
||||||
|
- `id` 作用于特定的进程 ID
|
||||||
|
|
||||||
|
### 检查状态、日志、指标
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
现在您已经启动了这个应用程序,您可以检查它的状态、日志、指标,甚至可以使用 [pm2.io](https://pm2.io/) 获取在线仪表板
|
||||||
|
|
||||||
|
列出PM2管理的所有应用的状态
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 [list|ls|status]
|
||||||
|
```
|
||||||
|
|
||||||
|
实时显示日志
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 logs
|
||||||
|
```
|
||||||
|
|
||||||
|
挖掘旧日志
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 logs --lines 200
|
||||||
|
```
|
||||||
|
|
||||||
|
这是一个直接适合您的终端的实时仪表板
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 monit
|
||||||
|
```
|
||||||
|
|
||||||
|
基于 Web 的仪表板,具有诊断系统的跨服务器
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 plus
|
||||||
|
```
|
||||||
|
|
||||||
|
### 集群模式
|
||||||
|
|
||||||
|
对于 Node.js 应用程序,PM2 包括一个自动负载均衡器,它将在每个衍生进程之间共享所有 HTTP[s]/Websocket/TCP/UDP 连接
|
||||||
|
|
||||||
|
以集群模式启动应用程序
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 start app.js -i max
|
||||||
|
```
|
||||||
|
|
||||||
|
在 [此处](https://pm2.keymetrics.io/docs/usage/quick-start/) 阅读有关集群模式的更多信息
|
||||||
|
|
||||||
|
### 生态系统文件
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
您还可以创建一个称为生态系统文件的配置文件来管理多个应用程序。生成生态系统文件
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 ecosystem
|
||||||
|
```
|
||||||
|
|
||||||
|
这将生成一个 `ecosystem.config.js` 文件
|
||||||
|
|
||||||
|
```js
|
||||||
|
module.exports = {
|
||||||
|
apps : [{
|
||||||
|
name: "app",
|
||||||
|
script: "./app.js",
|
||||||
|
env: {
|
||||||
|
NODE_ENV: "development",
|
||||||
|
},
|
||||||
|
env_production: {
|
||||||
|
NODE_ENV: "production",
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
name: 'worker',
|
||||||
|
script: 'worker.js'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
并轻松启动
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 start ecosystem.config.js
|
||||||
|
```
|
||||||
|
|
||||||
|
在 [此处](https://pm2.keymetrics.io/docs/usage/application-declaration/) 阅读有关应用程序声明的更多信息
|
||||||
|
|
||||||
|
### 设置启动脚本
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
使用您在服务器启动/重新启动时管理的进程重新启动 PM2 至关重要。为了解决这个问题,只需运行这个命令来生成一个活动的启动脚本
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 save
|
||||||
|
```
|
||||||
|
|
||||||
|
在 [此处](https://pm2.keymetrics.io/docs/usage/startup/) 阅读有关启动脚本生成器的更多信息
|
||||||
|
|
||||||
|
### 重新启动应用程序更改
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
使用 `--watch` 选项非常简单
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd /path/to/my/app
|
||||||
|
$ pm2 start env.js --watch --ignore-watch="node_modules"
|
||||||
|
```
|
||||||
|
|
||||||
|
这将在当前目录 `+` 所有子文件夹中的任何文件更改时监视并重新启动应用程序,并且它将忽略 `node_modules` 文件夹中的任何更改 `--ignore-watch="node_modules"`。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ pm2 logs
|
||||||
|
```
|
||||||
|
|
||||||
|
然后,您可以使用上面命令来检查重新启动的应用程序日志。
|
||||||
|
|
||||||
|
PM2 CheatSheet
|
||||||
|
---
|
||||||
|
<!--rehype:body-class=cols-2-->
|
||||||
|
|
||||||
|
以下是一些值得了解的命令。 只需使用示例应用程序或开发机器上当前的 Web 应用程序来尝试它们
|
||||||
|
|
||||||
|
### PM2 分叉模式
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 start app.js --name my-api # 名称进程
|
||||||
|
```
|
||||||
|
|
||||||
|
### PM2 集群模式
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 start app.js -i 0 # 将根据可用的 CPU 使用 LB 启动最大进程
|
||||||
|
$ pm2 start app.js -i max # 与上面相同,但已弃用。
|
||||||
|
$ pm2 scale app +3 # 将 `app` 增加 3 名工人
|
||||||
|
$ pm2 scale app 2 # 将 `app` 向上或向下扩展到总共 2 个工人
|
||||||
|
```
|
||||||
|
|
||||||
|
### PM2 清单
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 list # 显示所有进程状态
|
||||||
|
$ pm2 jlist # 以原始 JSON 格式打印进程列表
|
||||||
|
$ pm2 prettylist # 以美化JSON打印进程列表
|
||||||
|
$ pm2 describe 0 # 显示有关特定进程的所有信息
|
||||||
|
$ pm2 monit # 监控所有进程
|
||||||
|
```
|
||||||
|
|
||||||
|
### PM2 日志
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 logs [--raw] # 在流中显示所有进程日志
|
||||||
|
$ pm2 flush # 清空所有日志文件
|
||||||
|
$ pm2 reloadLogs # 重新加载所有日志
|
||||||
|
```
|
||||||
|
|
||||||
|
### PM2 动作
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 stop all # 停止所有进程
|
||||||
|
$ pm2 restart all # 重启所有进程
|
||||||
|
$ pm2 reload all # 将 0s 停机时间重新加载(对于 NETWORKED 应用程序)
|
||||||
|
$ pm2 stop 0 # 停止特定进程 ID
|
||||||
|
$ pm2 restart 0 # 重启特定进程id
|
||||||
|
$ pm2 delete 0 # 将从 pm2 列表中删除进程
|
||||||
|
$ pm2 delete all # 将从 pm2 列表中删除所有进程
|
||||||
|
```
|
||||||
|
|
||||||
|
### PM2 杂项
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 reset <process> # 重置元数据(重启时间...)
|
||||||
|
$ pm2 updatePM2 # 更新内存 pm2
|
||||||
|
$ pm2 ping # 确保 pm2 守护进程已经启动
|
||||||
|
$ pm2 sendSignal SIGUSR2 my-app # 向脚本发送系统信号
|
||||||
|
$ pm2 start app.js --no-daemon
|
||||||
|
$ pm2 start app.js --no-vizion
|
||||||
|
$ pm2 start app.js --no-autorestart
|
||||||
|
```
|
||||||
|
|
||||||
|
### 更新 PM2
|
||||||
|
|
||||||
|
我们让它变得简单,版本之间没有重大变化,过程很简单
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ npm install pm2@latest -g
|
||||||
|
```
|
||||||
|
|
||||||
|
然后更新内存中的PM2
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ pm2 update
|
||||||
|
```
|
||||||
|
|
||||||
|
另见
|
||||||
|
--------
|
||||||
|
|
||||||
|
- [QUICK START](https://pm2.keymetrics.io/docs/usage/quick-start/) _(pm2.keymetrics.io)_
|
@ -110,6 +110,84 @@ class=tag&data-info=👆看看还缺点儿什么?
|
|||||||
|
|
||||||
添加 `class=tag&data-lang=Python` 类名和参数,会在卡片右上角标记 _`Python`_
|
添加 `class=tag&data-lang=Python` 类名和参数,会在卡片右上角标记 _`Python`_
|
||||||
|
|
||||||
|
### Command Help
|
||||||
|
|
||||||
|
```bash
|
||||||
|
Usage: refs-cli [output-dir] [--help|h]
|
||||||
|
|
||||||
|
显示帮助信息
|
||||||
|
|
||||||
|
Options:
|
||||||
|
|
||||||
|
--version, -v 显示版本号
|
||||||
|
--help, -h 显示帮助信息
|
||||||
|
--watch, -w 观看并编译 Markdown 文件
|
||||||
|
--output, -o 输出目录。默认(分布)
|
||||||
|
--force, -f 强制文件重新生成
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
$ npx refs-cli
|
||||||
|
$ refs-cli --watch
|
||||||
|
$ refs-cli --output website
|
||||||
|
$ refs-cli
|
||||||
|
|
||||||
|
refs-cli@v0.0.1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Config
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"title": "文档网站名称",
|
||||||
|
"description": "{{description}} 网站说明",
|
||||||
|
"keywords": "关键字,refs-cli,refs,cli",
|
||||||
|
"data-info": "👆需要你的参与",
|
||||||
|
"search": {
|
||||||
|
"label": "搜索",
|
||||||
|
"placeholder": "搜索备忘清单",
|
||||||
|
"cancel": "取消"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"label": "编辑"
|
||||||
|
},
|
||||||
|
"github": {
|
||||||
|
"url": "https://<github url>"
|
||||||
|
},
|
||||||
|
"home": {
|
||||||
|
"label": "首页",
|
||||||
|
"url": "https://<你的网站>"
|
||||||
|
},
|
||||||
|
"footer": "<br />备案号:支持HTML字符串",
|
||||||
|
"license": "支持 HTML 字符串"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
将 `.refsrc.json` 存放在项目的根目录下
|
||||||
|
|
||||||
|
### 环境变量
|
||||||
|
|
||||||
|
导航菜单
|
||||||
|
|
||||||
|
```ini
|
||||||
|
REF_URL=http://ref.ecdata.cn/
|
||||||
|
REF_LABEL=网站首页
|
||||||
|
```
|
||||||
|
|
||||||
|
页脚添加 (支持 HTML 字符串)
|
||||||
|
|
||||||
|
```ini
|
||||||
|
REF_FOOTER=备案号:沪ICP备20220000000号-1
|
||||||
|
```
|
||||||
|
|
||||||
|
修改版权信息 (支持 HTML 字符串)
|
||||||
|
|
||||||
|
```ini
|
||||||
|
LICENSE=Copyright (c) <b>2022</b> 小弟调调™
|
||||||
|
```
|
||||||
|
|
||||||
|
在项目根目录中创建 <pur>**.env**</pur> 文件
|
||||||
|
|
||||||
Markdown 语法注释
|
Markdown 语法注释
|
||||||
---
|
---
|
||||||
|
|
||||||
|
1638
docs/react-native.md
Normal file
162
docs/rust.md
@ -354,6 +354,14 @@ rand.capacity() // => 13
|
|||||||
|
|
||||||
以字节为单位计算字符串的容量
|
以字节为单位计算字符串的容量
|
||||||
|
|
||||||
|
### with_capacity()
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let s = String::with_capacity(10);
|
||||||
|
```
|
||||||
|
|
||||||
|
指定一个足够大的容量值,来减少内存拷贝
|
||||||
|
|
||||||
### .contains()
|
### .contains()
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
@ -484,6 +492,147 @@ let arr = vec![
|
|||||||
`drain(range)` | 删除 `vec` 中指定范围的元素,同时返回一个迭代该范围所有元素的迭代器
|
`drain(range)` | 删除 `vec` 中指定范围的元素,同时返回一个迭代该范围所有元素的迭代器
|
||||||
`split_off(index)` | 切分 `vec`,索引左边的元素保留在原 `vec` 中(含索引),索引右边的元素(不含索引)在返回的 `vec` 中
|
`split_off(index)` | 切分 `vec`,索引左边的元素保留在原 `vec` 中(含索引),索引右边的元素(不含索引)在返回的 `vec` 中
|
||||||
|
|
||||||
|
Rust HashMap\<K,V>
|
||||||
|
--------
|
||||||
|
|
||||||
|
### 使用
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut map: HashMap<String, i32> = HashMap::new();
|
||||||
|
map.insert(String::from("blue"), 100);
|
||||||
|
// 查询Yellow对应的值,若不存在则插入默认值
|
||||||
|
let v: &mut i32 =
|
||||||
|
map.entry("Yellow".to_string()).or_insert(5);
|
||||||
|
let v: &mut i32 =
|
||||||
|
map.entry("Yellow".to_string()).or_insert(50); // 不会修改值
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 获取元素
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let mut scores = HashMap::new();
|
||||||
|
|
||||||
|
scores.insert(String::from("Blue"), 10);
|
||||||
|
scores.insert(String::from("Yellow"), 50);
|
||||||
|
|
||||||
|
let team_name = String::from("Blue");
|
||||||
|
let score: Option<&i32> = scores.get(&team_name);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 遍历
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let mut scores = HashMap::new();
|
||||||
|
|
||||||
|
scores.insert(String::from("Blue"), 10);
|
||||||
|
scores.insert(String::from("Yellow"), 50);
|
||||||
|
|
||||||
|
for (key, value) in &scores {
|
||||||
|
println!("{}: {}", key, value);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### vec -> HashMap
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let teams_list = vec![
|
||||||
|
("中国队".to_string(), 100),
|
||||||
|
("美国队".to_string(), 10),
|
||||||
|
("日本队".to_string(), 50),
|
||||||
|
];
|
||||||
|
let teams_map: HashMap<_,_> =
|
||||||
|
teams_list.into_iter().collect();
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let teams = vec![String::from("blue"),String::from("red")];
|
||||||
|
let intial_scores = vec![10,50];
|
||||||
|
let scores:HashMap<_,_> =
|
||||||
|
teams.iter().zip(intial_scores.iter()).collect();
|
||||||
|
```
|
||||||
|
|
||||||
|
Option & Result
|
||||||
|
--------
|
||||||
|
|
||||||
|
### Option
|
||||||
|
|
||||||
|
```rust
|
||||||
|
enum Option<T> {
|
||||||
|
Some(T),
|
||||||
|
None,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 使用
|
||||||
|
|
||||||
|
```rust
|
||||||
|
fn main(){
|
||||||
|
let a = Some(5);
|
||||||
|
// 直接获取原始值
|
||||||
|
println!("{}", a.unwrap());
|
||||||
|
// 给出错误信息
|
||||||
|
let x: Option<&str> = None;
|
||||||
|
x.expect("fruits are healthy"); // panics 带有 `fruits are healthy`
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Result
|
||||||
|
|
||||||
|
```rust
|
||||||
|
enum Result<T, E> {
|
||||||
|
Ok(T),
|
||||||
|
Err(E),
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 使用
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use std::fs::File;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let f: Result<File,Error> = File::open("hello.txt");
|
||||||
|
let f = match f {
|
||||||
|
Ok(file) => file,
|
||||||
|
Err(error) => {
|
||||||
|
panic!("Problem opening the file: {:?}", error)
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 宏 `?`
|
||||||
|
|
||||||
|
`?` 只能用于返回结果是 Result 或者 Option 的函数,或者实现了 Try 类型
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::{self, Read};
|
||||||
|
|
||||||
|
fn read_username_from_file() -> Result<String, io::Error> {
|
||||||
|
let mut s = String::new();
|
||||||
|
File::open("hello.txt")?.read_to_string(&mut s)?;
|
||||||
|
Ok(s)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
```rust
|
||||||
|
fn first(arr: &[i32]) -> Option<&i32> {
|
||||||
|
let v = arr.get(0)?;
|
||||||
|
Some(v)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
<!--rehype:className=wrap-text -->
|
||||||
|
|
||||||
枚举
|
枚举
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@ -853,12 +1002,25 @@ let (x, _, y) = (1, 2, 3);
|
|||||||
println!("{x},{y}");
|
println!("{x},{y}");
|
||||||
```
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
```rust
|
||||||
|
fn get_count_item(s: &str) -> (&str, &str) {
|
||||||
|
let mut it = s.split(' ');
|
||||||
|
let (Some(str1),Some(str2)) = (it.next(),it.next()) else {
|
||||||
|
panic!("Can't segment count item pair");
|
||||||
|
};
|
||||||
|
(str1, str2)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### 函数中的模式匹配
|
### 函数中的模式匹配
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
fn add((x, y): (i32, i32)) -> i32 {
|
fn add((x, y): (i32, i32)) -> i32 {
|
||||||
x + y
|
x + y
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main(){
|
fn main(){
|
||||||
let sum = add(1, 2);
|
let sum = add(1, 2);
|
||||||
println!("{sum}");
|
println!("{sum}");
|
||||||
|
@ -114,6 +114,25 @@ Sublime Text 备忘清单
|
|||||||
`⇧ ⌃ 2` | 将文件移动到组 2
|
`⇧ ⌃ 2` | 将文件移动到组 2
|
||||||
<!--rehype:className=shortcuts-->
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 书签
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `F2` | 切换书签
|
||||||
|
`F2` | 下一个书签
|
||||||
|
`Shift` `F2` | 上一个书签
|
||||||
|
`Ctrl` `Shift` `F2` | 清除书签
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
|
### 查找/替换
|
||||||
|
|
||||||
|
快捷键 | 说明
|
||||||
|
:- | -
|
||||||
|
`Ctrl` `F` | 查找
|
||||||
|
`Ctrl` `H` | 代替
|
||||||
|
`Ctrl` `Shift` `F` | 在文件中查找
|
||||||
|
<!--rehype:className=shortcuts-->
|
||||||
|
|
||||||
### 文本操作
|
### 文本操作
|
||||||
|
|
||||||
快捷键 | 说明
|
快捷键 | 说明
|
||||||
@ -148,3 +167,4 @@ $ subl README.md
|
|||||||
|
|
||||||
- [Sublime Text 官网](https://www.sublimetext.com/) _(sublimetext.com)_
|
- [Sublime Text 官网](https://www.sublimetext.com/) _(sublimetext.com)_
|
||||||
- [Sublime 编辑器快捷键](https://jaywcjlove.github.io/handbook/Shortcuts/sublime.html) _(jaywcjlove.github.io)_
|
- [Sublime 编辑器快捷键](https://jaywcjlove.github.io/handbook/Shortcuts/sublime.html) _(jaywcjlove.github.io)_
|
||||||
|
- [Keyboard shortcuts for Sublime Text](http://docs.sublimetext.info/en/latest/reference/keyboard_shortcuts_win.html) _(docs.sublimetext.info)_
|
||||||
|
@ -1325,6 +1325,84 @@ const point = [3, 4] as const
|
|||||||
// type 'readonly [3, 4]'
|
// type 'readonly [3, 4]'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### satisfies
|
||||||
|
|
||||||
|
`satisfies` 允许将验证表达式的类型与某种类型匹配,而无需更改该表达式的结果类型。
|
||||||
|
|
||||||
|
```ts
|
||||||
|
type Colors = 'red' | 'green' | 'blue';
|
||||||
|
|
||||||
|
type RGB = [red: number, green: number, blue: number];
|
||||||
|
|
||||||
|
const palette: Record<Colors, string | RGB> = {
|
||||||
|
red: [255, 0, 0],
|
||||||
|
green: '#00ff00',
|
||||||
|
blue: [0, 0, 255],
|
||||||
|
};
|
||||||
|
|
||||||
|
// 通常的方式会推导出 redComponent 为 string | number | undefined
|
||||||
|
const redComponent = palette.red.at(0);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 使用 satisfies
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const palette = {
|
||||||
|
red: [255, 0, 0],
|
||||||
|
green: '#00ff00',
|
||||||
|
blue: [0, 0, 255],
|
||||||
|
} satisfies Record<Colors, string | RGB>
|
||||||
|
|
||||||
|
// undefined | number
|
||||||
|
const redComponent = palette.red.at(0)
|
||||||
|
```
|
||||||
|
|
||||||
|
<!--rehype:className=wrap-text-->
|
||||||
|
|
||||||
|
### 范型实例化表达式
|
||||||
|
|
||||||
|
不使用的情况下:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const errorMap: Map<string, Error> = new Map()
|
||||||
|
// 或者使用 type 定义别名
|
||||||
|
type ErrorMapType = Map<string, Error>
|
||||||
|
```
|
||||||
|
|
||||||
|
使用泛型实例化表达式:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const ErrorMap = Map<string, Error>
|
||||||
|
const errorMap = new ErrorMap()
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 泛型实例化函数
|
||||||
|
|
||||||
|
```ts
|
||||||
|
function makeBox<T>(value: T) {
|
||||||
|
return { value };
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
不使用:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
function makeHammerBox(hammer: Hammer) {
|
||||||
|
return makeBox(hammer);
|
||||||
|
}
|
||||||
|
// or...
|
||||||
|
const makeWrenchBox: (wrench: Wrench) => Box<Wrench> = makeBox;
|
||||||
|
```
|
||||||
|
|
||||||
|
使用:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const makeStringBox = makeBox<string>;
|
||||||
|
makeStringBox(42);
|
||||||
|
```
|
||||||
|
|
||||||
CLI
|
CLI
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ Webstorm Windows & Linux 键盘映射
|
|||||||
`Alt` `Up` | 转到上一个方法
|
`Alt` `Up` | 转到上一个方法
|
||||||
`Alt` `Down` | 转到下一个方法
|
`Alt` `Down` | 转到下一个方法
|
||||||
`Ctrl` `]` _/_ `[` | 移动到代码块结束/开始
|
`Ctrl` `]` _/_ `[` | 移动到代码块结束/开始
|
||||||
`Cltrl` `Shift` `M` | 将插入符号移动到匹配的大括号
|
`Ctrl` `Shift` `M` | 将插入符号移动到匹配的大括号
|
||||||
`Ctrl` `F12` | 文件结构弹出
|
`Ctrl` `F12` | 文件结构弹出
|
||||||
`Ctrl` `H` | 类型层次结构
|
`Ctrl` `H` | 类型层次结构
|
||||||
`Ctrl` `Alt` `H` | 调用层次结构
|
`Ctrl` `Alt` `H` | 调用层次结构
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wcj/reference",
|
"name": "@wcj/reference",
|
||||||
"version": "1.27.0",
|
"version": "1.30.0",
|
||||||
"description": "为开发人员分享快速参考备忘单(主要是方便自己)。",
|
"description": "为开发人员分享快速参考备忘单(主要是方便自己)。",
|
||||||
"author": "jaywcjlove",
|
"author": "jaywcjlove",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -25,7 +25,7 @@
|
|||||||
"husky": "^8.0.1",
|
"husky": "^8.0.1",
|
||||||
"lint-staged": "^13.0.3",
|
"lint-staged": "^13.0.3",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"refs-cli": "^0.0.11"
|
"refs-cli": "^1.2.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=16.0.0"
|
||||||
|