修改鼠标样式
This commit is contained in:
parent
13bd63d11d
commit
f484e52275
@ -16,7 +16,8 @@ beautify:
|
|||||||
title-prefix-icon: '\f0c1'
|
title-prefix-icon: '\f0c1'
|
||||||
title-prefix-icon-color: "#F47466"
|
title-prefix-icon-color: "#F47466"
|
||||||
# 加載動畫 Loading Animation
|
# 加載動畫 Loading Animation
|
||||||
preloader: true
|
preloader:
|
||||||
|
true
|
||||||
# enable: false
|
# enable: false
|
||||||
# source
|
# source
|
||||||
# 1. fullpage-loading
|
# 1. fullpage-loading
|
||||||
@ -28,7 +29,7 @@ preloader: true
|
|||||||
# 图片格式 background: url(http://xxxxxx.com/xxx.jpg)
|
# 图片格式 background: url(http://xxxxxx.com/xxx.jpg)
|
||||||
# 顔色 background: '#49B202'
|
# 顔色 background: '#49B202'
|
||||||
# 留空 显示白色
|
# 留空 显示白色
|
||||||
background: '#efefef'
|
background: "#efefef"
|
||||||
# background: url(https://i.loli.net/2019/09/09/5oDRkWVKctx2b6A.png)
|
# background: url(https://i.loli.net/2019/09/09/5oDRkWVKctx2b6A.png)
|
||||||
|
|
||||||
highlight_theme: mac light
|
highlight_theme: mac light
|
||||||
@ -39,7 +40,6 @@ code_word_wrap: true
|
|||||||
index_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/BBC19066-E176-47C2-9D22-48C81EE5DF6B.jpeg
|
index_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/BBC19066-E176-47C2-9D22-48C81EE5DF6B.jpeg
|
||||||
archive_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
|
archive_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
|
||||||
|
|
||||||
|
|
||||||
# Footer设置
|
# Footer设置
|
||||||
since: 2022
|
since: 2022
|
||||||
footer_custom_text: Hi, welcome to my Xiaoda blog!
|
footer_custom_text: Hi, welcome to my Xiaoda blog!
|
||||||
@ -74,6 +74,7 @@ aplayerInject:
|
|||||||
per_page: true
|
per_page: true
|
||||||
inject:
|
inject:
|
||||||
head:
|
head:
|
||||||
|
- <link rel="stylesheet" href="/css/mouse.css">
|
||||||
bottom:
|
bottom:
|
||||||
# 7427714271
|
# 7427714271
|
||||||
- <div class="aplayer no-destroy" data-id="7755841452" data-server="netease" data-type="playlist" data-fixed="true" data-mini="true" data-listFolded="false" data-order="random" data-lrctype="1" data-preload="none" data-autoplay="true" muted></div>
|
- <div class="aplayer no-destroy" data-id="7755841452" data-server="netease" data-type="playlist" data-fixed="true" data-mini="true" data-listFolded="false" data-order="random" data-lrctype="1" data-preload="none" data-autoplay="true" muted></div>
|
||||||
|
|||||||
16
_config.yml
16
_config.yml
@ -5,11 +5,11 @@
|
|||||||
# Site
|
# Site
|
||||||
title: XiaodaのBlog
|
title: XiaodaのBlog
|
||||||
#subtitle: 'XiaodaBlog'
|
#subtitle: 'XiaodaBlog'
|
||||||
description: '欢迎访问小达的博客!'
|
description: "欢迎访问小达的博客!"
|
||||||
keywords: 编程
|
keywords: 编程
|
||||||
author: Wen Yongda
|
author: Wen Yongda
|
||||||
language: zh-CN
|
language: zh-CN
|
||||||
timezone: 'Asia/Shanghai'
|
timezone: "Asia/Shanghai"
|
||||||
|
|
||||||
# URL
|
# URL
|
||||||
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
|
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
|
||||||
@ -37,7 +37,7 @@ titlecase: false # Transform title into titlecase
|
|||||||
external_link:
|
external_link:
|
||||||
enable: true # Open external links in new tab
|
enable: true # Open external links in new tab
|
||||||
field: site # Apply to the whole site
|
field: site # Apply to the whole site
|
||||||
exclude: ''
|
exclude: ""
|
||||||
filename_case: 0
|
filename_case: 0
|
||||||
render_drafts: false
|
render_drafts: false
|
||||||
post_asset_folder: true
|
post_asset_folder: true
|
||||||
@ -57,14 +57,14 @@ prismjs:
|
|||||||
enable: false
|
enable: false
|
||||||
preprocess: true
|
preprocess: true
|
||||||
line_number: false
|
line_number: false
|
||||||
tab_replace: ''
|
tab_replace: ""
|
||||||
|
|
||||||
# Home page setting
|
# Home page setting
|
||||||
# path: Root path for your blogs index page. (default = '')
|
# path: Root path for your blogs index page. (default = '')
|
||||||
# per_page: Posts displayed per page. (0 = disable pagination)
|
# per_page: Posts displayed per page. (0 = disable pagination)
|
||||||
# order_by: Posts order. (Order by date descending by default)
|
# order_by: Posts order. (Order by date descending by default)
|
||||||
index_generator:
|
index_generator:
|
||||||
path: ''
|
path: ""
|
||||||
per_page: 10
|
per_page: 10
|
||||||
order_by: -date
|
order_by: -date
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ meta_generator: true
|
|||||||
date_format: YYYY-MM-DD
|
date_format: YYYY-MM-DD
|
||||||
time_format: HH:mm:ss
|
time_format: HH:mm:ss
|
||||||
## updated_option supports 'mtime', 'date', 'empty'
|
## updated_option supports 'mtime', 'date', 'empty'
|
||||||
updated_option: 'mtime'
|
updated_option: "mtime"
|
||||||
|
|
||||||
# Pagination
|
# Pagination
|
||||||
## Set per_page to 0 to disable pagination
|
## Set per_page to 0 to disable pagination
|
||||||
@ -106,8 +106,8 @@ theme: butterfly
|
|||||||
# Deployment
|
# Deployment
|
||||||
## Docs: https://hexo.io/docs/one-command-deployment
|
## Docs: https://hexo.io/docs/one-command-deployment
|
||||||
deploy:
|
deploy:
|
||||||
type: 'git'
|
type: "git"
|
||||||
repo: https://gitee.com/wenyongda/xiaoda-blog.git
|
repo: https://github.com/wenyongda/XiaodaBlog.git
|
||||||
branch: master
|
branch: master
|
||||||
|
|
||||||
aplayer:
|
aplayer:
|
||||||
|
|||||||
@ -205,6 +205,127 @@ Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一
|
|||||||
|
|
||||||
### 使用 Dockerfile 定制镜像
|
### 使用 Dockerfile 定制镜像
|
||||||
|
|
||||||
|
1. 定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)
|
||||||
|
在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM nginx
|
||||||
|
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
2. FROM 和 RUN 指令的作用
|
||||||
|
**FROM**: 定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
|
||||||
|
**RUN**: 用于执行后面跟着的命令行命令。有以下俩种格式:
|
||||||
|
shell 格式:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
RUN <命令行命令>
|
||||||
|
# <命令行命令> 等同于,在终端操作的 shell 命令。
|
||||||
|
```
|
||||||
|
|
||||||
|
exec 格式:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
RUN ["可执行文件", "参数1", "参数2"]
|
||||||
|
# 例如:
|
||||||
|
# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
|
||||||
|
```
|
||||||
|
|
||||||
|
**注意**: Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM centos
|
||||||
|
RUN yum -y install wget
|
||||||
|
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
|
||||||
|
RUN tar -xvf redis.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
以上执行会创建 3 层镜像。可简化为以下格式:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM centos
|
||||||
|
RUN yum -y install wget \
|
||||||
|
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
|
||||||
|
&& tar -xvf redis.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
如上,以 **&&** 符号连接命令,这样执行后,只会创建 1 层镜像。
|
||||||
|
|
||||||
|
### 开始构建镜像
|
||||||
|
|
||||||
|
在 Dockerfile 文件的存放目录下,执行构建动作。
|
||||||
|
|
||||||
|
以下示例,通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)。
|
||||||
|
|
||||||
|
**注**: 最后的`.`代表本次执行的上下文路径,下一节会介绍。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker build -t nginx:v3 .
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 上下文路径
|
||||||
|
|
||||||
|
上一节中,有提到指令最后一个 **.** 是上下文路径,那么什么是上下文路径呢?
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker build -t nginx:v3 .
|
||||||
|
```
|
||||||
|
|
||||||
|
上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
|
||||||
|
|
||||||
|
**解析**:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。
|
||||||
|
|
||||||
|
如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。
|
||||||
|
|
||||||
|
**注意**:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。
|
||||||
|
|
||||||
|
### 指令详解
|
||||||
|
|
||||||
|
| Dockerfile 指令 | 说明 |
|
||||||
|
| --------------- | ------------------------------------------------------------ |
|
||||||
|
| FROM | 指定基础镜像,用于后续的指令构建。 |
|
||||||
|
| MAINTAINER | 指定Dockerfile的作者/维护者。(已启用,推荐使用LABEL指令) |
|
||||||
|
| LABEL | 添加镜像的元数据,使用键值对的形式。 |
|
||||||
|
| RUN | 在构建过程中在镜像中执行命令。 |
|
||||||
|
| CMD | 指定容器创建时的默认命令。(可以被覆盖) |
|
||||||
|
| ENTRYPOINT | 设置容器创建时的主要命令。(不可被覆盖) |
|
||||||
|
| EXPOSE | 声明容器运行时监听的特定网络端口。 |
|
||||||
|
| ENV | 在容器内部设置环境变量。 |
|
||||||
|
| ADD | 将文件、目录或远程URL复制到镜像中。 |
|
||||||
|
| COPY | 将文件或目录复制到镜像中。 |
|
||||||
|
| VOLUME | 为容器创建挂载点或声明卷。 |
|
||||||
|
| WORKDIR | 设置后续指令的工作目录。 |
|
||||||
|
| USER | 指定后续指令的用户上下文。 |
|
||||||
|
| ARG | 定义在构建过程中传递给构建器的变量,可使用"docker build"命令设置。 |
|
||||||
|
| ONBUILD | 当该镜像被用作另一个构建过程的基础时,添加触发器。 |
|
||||||
|
| STOPSIGNAL | 设置发送给容器以退出的系统调用信号。 |
|
||||||
|
| HEALTHCHECK | 定义周期性检查容器健康状态的命令。 |
|
||||||
|
| SHELL | 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT。 |
|
||||||
|
|
||||||
|
#### COPY
|
||||||
|
|
||||||
|
复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
|
||||||
|
|
||||||
|
格式:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
COPY [--chown=<user>:<group>] <源路径1>... <目标路径>
|
||||||
|
COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
|
||||||
|
```
|
||||||
|
|
||||||
|
**[--chown=<user>:<group>]**:可选参数,用户改变复制到容器内文件的拥有者和属组。
|
||||||
|
|
||||||
|
**<源路径>**:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
COPY hom* /mydir/
|
||||||
|
COPY hom?.txt /mydir/
|
||||||
|
```
|
||||||
|
|
||||||
|
**<目标路径>**:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Docker 实例
|
# Docker 实例
|
||||||
@ -215,14 +336,11 @@ Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull mariadb:10.2
|
docker pull mariadb:10.2
|
||||||
```
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker images
|
docker images
|
||||||
docker run --name mariadb10.2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.2
|
docker run --name mariadb10.2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.2
|
||||||
```
|
```
|
||||||
|
|
||||||
## Docker Redis主从复制集群搭建
|
## Docker Redis 主从复制集群搭建
|
||||||
|
|
||||||
拉取redis4.0.11镜像
|
拉取redis4.0.11镜像
|
||||||
|
|
||||||
@ -294,7 +412,7 @@ info Replication
|
|||||||
auth <slave-password>
|
auth <slave-password>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Docker Redis哨兵高可用集群搭建
|
## Docker Redis 哨兵高可用集群搭建
|
||||||
|
|
||||||
## Docker 安装 code-server
|
## Docker 安装 code-server
|
||||||
|
|
||||||
@ -384,7 +502,7 @@ docker pull mcr.microsoft.com/mssql/server
|
|||||||
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Wyd210213" -p 1433:1433 --memory 2000M --name sqlserver2022 -v /etc/sqlserver_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server
|
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Wyd210213" -p 1433:1433 --memory 2000M --name sqlserver2022 -v /etc/sqlserver_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server
|
||||||
```
|
```
|
||||||
|
|
||||||
## Docker安装PostgreSQL
|
## Docker 安装 PostgreSQL
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull postgres:latest
|
docker pull postgres:latest
|
||||||
|
|||||||
BIN
source/_posts/Docker/dockerfile2.png
Normal file
BIN
source/_posts/Docker/dockerfile2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
BIN
source/_posts/Docker/image-20231101093813381.png
Normal file
BIN
source/_posts/Docker/image-20231101093813381.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
@ -51,3 +51,31 @@ hexo new [layout] <title>
|
|||||||
```
|
```
|
||||||
|
|
||||||
新建一篇文章。如果没有设置 `layout` 的话,默认使用 [_config.yml](https://hexo.io/zh-cn/docs/configuration) 中的 `default_layout` 参数代替。如果标题包含空格的话,请使用引号括起来。
|
新建一篇文章。如果没有设置 `layout` 的话,默认使用 [_config.yml](https://hexo.io/zh-cn/docs/configuration) 中的 `default_layout` 参数代替。如果标题包含空格的话,请使用引号括起来。
|
||||||
|
|
||||||
|
## 鼠标样式修改
|
||||||
|
|
||||||
|
1. 在\themes\butterfly\source\css路径下创建一个mouse.css文件,在文件中添加如下代码:
|
||||||
|
```css
|
||||||
|
body {
|
||||||
|
cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/default.cur),
|
||||||
|
default;
|
||||||
|
}
|
||||||
|
a,
|
||||||
|
img {
|
||||||
|
cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/pointer.cur),
|
||||||
|
default;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2. 打开站点的主题配置文件_config.butterfly.yml,找到inject,在head处直接引入该文件:
|
||||||
|
```yaml
|
||||||
|
inject:
|
||||||
|
head:
|
||||||
|
- <link rel="stylesheet" href="/css/mouse.css">
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3. 重新部署,即可看到效果
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
# Mybatis
|
# Mybatis
|
||||||
|
|
||||||
***
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Maven引入Mybatis
|
## Maven引入Mybatis
|
||||||
|
|
||||||
|
|||||||
@ -27,3 +27,36 @@ Set-Content <文件名>.<扩展名后缀> -value "<内容>"
|
|||||||
Set-Content my.ini -value ""
|
Set-Content my.ini -value ""
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 新建文件夹
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
New-Item data -ItemType Directory
|
||||||
|
```
|
||||||
|
|
||||||
|
# 做 sudo 命令
|
||||||
|
|
||||||
|
在Windows系统上sudo对应的就是管理员权限了。
|
||||||
|
|
||||||
|
一般使用Powershell时,并不会管理员启动,当执行需要权限的命令(比如net start mysql),就需要以管理员打开新的窗口。
|
||||||
|
|
||||||
|
为了一步到位,这里给powershell创建一个`alias` -> `sudo` 来运行需要管理员权限的命令。
|
||||||
|
|
||||||
|
在文档目录中(在`powershell`执行`$profile`即可输出此文件路径),新建文件夹`WindowsPowerShell`,新建文件`Microsoft.PowerShell_profile.ps1`。
|
||||||
|
|
||||||
|
> 此文件是在启动Powershell时执行的脚本。set-alias 在退出后就会失效,所以放到启动脚本中。
|
||||||
|
|
||||||
|
追加如下代码,**然后重启Powershell窗口。**
|
||||||
|
|
||||||
|
```text
|
||||||
|
function _sudo {
|
||||||
|
$ss = "$args ; pause"
|
||||||
|
Start-Process powershell -Verb runAs -ArgumentList $ss
|
||||||
|
}
|
||||||
|
set-alias -name sudo -value _sudo
|
||||||
|
```
|
||||||
|
|
||||||
|
保存后发现无法加载,因为默认不加载外部脚本,管理员权限下 powershell 运行:
|
||||||
|
|
||||||
|
```text
|
||||||
|
set-ExecutionPolicy RemoteSigned
|
||||||
|
```
|
||||||
|
|||||||
@ -209,9 +209,9 @@ println!("a is {0}, a again is {0}", a);
|
|||||||
```
|
```
|
||||||
|
|
||||||
在`{}`之间可以放一个数字,它将把之后的可变参数当做一个数组来访问,下标从0开始。
|
在`{}`之间可以放一个数字,它将把之后的可变参数当做一个数组来访问,下标从0开始。
|
||||||
|
{% raw %}
|
||||||
如果要输出 **{** 或 **}** 怎么办呢?格式字符串通过 **{{** 和 **}}** 分别转义代表 { 和 } 。但是其他常用转义字符与 C 语言里的转义字符一样,都是反斜杠开头的形式。
|
如果要输出 **{** 或 **}** 怎么办呢?格式字符串通过 **{{** 和 **}}** 分别转义代表 { 和 } 。但是其他常用转义字符与 C 语言里的转义字符一样,都是反斜杠开头的形式。
|
||||||
|
{% endraw %}
|
||||||
```rust
|
```rust
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("{{}}");
|
println!("{{}}");
|
||||||
|
|||||||
@ -17,6 +17,170 @@ vim 有6种工作模式。
|
|||||||
|
|
||||||
vim 的各种工作模式可以通过不同的键进行切换,用户统一使用`ESC`键返回到普通模式。
|
vim 的各种工作模式可以通过不同的键进行切换,用户统一使用`ESC`键返回到普通模式。
|
||||||
|
|
||||||
# 光标移动命令
|
## 命令模式
|
||||||
|
|
||||||
|
**用户刚刚启动vim,便进入里命令模式**
|
||||||
|
|
||||||
|
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下`i`,并不会输入一个字符,`i`被当作了一个命令。
|
||||||
|
|
||||||
|
以下是普通模式常用的几个命令:
|
||||||
|
|
||||||
|
- `i` -- 切换到输入模式,在光标当前位置开始输入文本。
|
||||||
|
- `x` -- 删除当前光标所在处的字符。
|
||||||
|
- `:` -- 切换到底线命令模式,以在最底一行输入命令。
|
||||||
|
- `a` -- 进入插入模式,在光标下一个位置开始输入文本。
|
||||||
|
- `o` -- 在当前行的下方插入一个新行,并进入插入模式。
|
||||||
|
- `O` -- 在当前行的上方插入一个新行,并进入插入模式。
|
||||||
|
- `dd` -- 删除当前行。
|
||||||
|
- `yy` -- 复制当前行。
|
||||||
|
- `p`(小写)-- 粘贴剪贴板内容到光标下方。
|
||||||
|
- `P`(大写)-- 粘贴剪贴板内容到光标上方。
|
||||||
|
- `u` -- 撤销上一次操作。
|
||||||
|
- `Ctrl + r` -- 重做上一次撤销的操作。
|
||||||
|
- `:w` -- 保存文件。
|
||||||
|
- `:q` -- 退出 Vim 编辑器
|
||||||
|
- `:q!` -- 强制退出 Vim 编辑器,不保存修改。
|
||||||
|
|
||||||
|
若要编辑文本,只需要启动 Vim,进入了命令模式,按下`i`切换到输入模式即可。
|
||||||
|
|
||||||
|
命令模式只有一些最基本的命令,因此仍要依靠**底线命令行模式**输入更多命令。
|
||||||
|
|
||||||
|
## 输入模式
|
||||||
|
|
||||||
|
在命令模式下按下`i`就进入了输入模式,使用`Esc`键可以返回到普通模式。
|
||||||
|
|
||||||
|
在输入模式中,可以使用以下按键:
|
||||||
|
|
||||||
|
- **字符按键以及Shifi组合**,输入字符
|
||||||
|
- **ENTER**,回车键,换行
|
||||||
|
- **BACK SPACE**,退格键,删除光标前一个字符
|
||||||
|
- **DEL**,删除键,删除光标后一个字符
|
||||||
|
- **方向键**,在文本中移动光标
|
||||||
|
- **HOME/END**,移动光标到行首/行尾
|
||||||
|
- **Page Up/Page Down**,上/下翻页
|
||||||
|
- **Insert**,切换光标输入为输入\替换模式,光标将变成竖线/下划线
|
||||||
|
- **ESC**,退出输入模式,切换到命令模式
|
||||||
|
|
||||||
|
## 底线命令模式
|
||||||
|
|
||||||
|
在命令模式下按下`:`(英文冒号)就进入了底线命令模式。
|
||||||
|
|
||||||
|
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
|
||||||
|
|
||||||
|
在底线命令模式中,基本的命令有(已经省略了冒号):
|
||||||
|
|
||||||
|
- :w: 保存文件
|
||||||
|
- :q: 退出 Vim 编辑器
|
||||||
|
- :wq: 保存文件并退出 Vim 编辑器
|
||||||
|
- :q!: 强制退出 Vim 编辑器,不保存修改
|
||||||
|
|
||||||
|
按`ESC`键可随时退出底线命令模式。
|
||||||
|
|
||||||
|
简单的说,我们可以将这三个模式想成底下的图标来表示:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Vim 的按键说明
|
||||||
|
|
||||||
|
## 第一部分:命令模式可用的光标移动、复制粘贴、搜索替换等
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2">移动光标的方法</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>h 或 向左箭头键(←)</td>
|
||||||
|
<td>光标向左移动一个字符</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>j 或 向下箭头键(↓)</td>
|
||||||
|
<td>光标向下移动一个字符</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>k 或 向上箭头键(↑)</td>
|
||||||
|
<td>光标向上移动一个字符</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>l 或 向右箭头键(→)</td>
|
||||||
|
<td>光标向右移动一个字符</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Ctrl + f</td>
|
||||||
|
<td>屏幕『向下』移动一页,相当于 Page Down 按键 (常用)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Ctrl + b</td>
|
||||||
|
<td>屏幕『向上』移动一页,相当于 Page Up 按键 (常用)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Ctrl + d</td>
|
||||||
|
<td>屏幕『向下』移动半页</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Ctrl + u</td>
|
||||||
|
<td>屏幕『向上』移动半页</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>+</td>
|
||||||
|
<td>光标移动到非空格符的下一行</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-</td>
|
||||||
|
<td>光标移动到非空格符的上一行</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>n『空格』</td>
|
||||||
|
<td>那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20『空格』 则光标会向后面移动 20 个字符距离。</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>0 或功能键[Home]</td>
|
||||||
|
<td>这是数字『 0 』:移动到这一行的最前面字符处 (常用)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>$ 或功能键[End]</td>
|
||||||
|
<td>移动到这一行的最后面字符处(常用)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>H</td>
|
||||||
|
<td>光标移动到这个屏幕的最上方那一行的第一个字符</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>M</td>
|
||||||
|
<td>光标移动到这个屏幕的中央那一行的第一个字符</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>L</td>
|
||||||
|
<td>光标移动到这个屏幕的最下方那一行的第一个字符</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>G</td>
|
||||||
|
<td>移动到这个档案的最后一行(常用)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>nG</td>
|
||||||
|
<td>n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>gg</td>
|
||||||
|
<td>移动到这个档案的第一行,相当于 1G 啊! (常用)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>n『 Enter 』</td>
|
||||||
|
<td>n 为数字。光标向下移动 n 行(常用)</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2">搜索替换</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
|
||||||
查找下一个 n 查找上一个 N
|
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
---
|
---
|
||||||
|
title: tags
|
||||||
|
date: 2018-09-30 18:23:38
|
||||||
|
type: "tags"
|
||||||
|
layout: "tags"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 快捷键
|
# 快捷键
|
||||||
|
|
||||||
## 注释:Ctrl+K+C
|
## 注释:Ctrl+K+C
|
||||||
|
|||||||
133
source/_posts/新建 Markdown File.md
Normal file
133
source/_posts/新建 Markdown File.md
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
# Furion
|
||||||
|
|
||||||
|
## 脚手架
|
||||||
|
|
||||||
|
Furion+SqlSugar WebAPI
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
从.NET5到.NET8都可以选择
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 引用
|
||||||
|
|
||||||
|
Core -> Application -> Web.Core -> Web.Entry
|
||||||
|
|
||||||
|
↓ -> System -> Web.Core -> Web.Entry
|
||||||
|
|
||||||
|
依赖在Core中安装
|
||||||
|
|
||||||
|
## 依赖安装
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Blog.Core
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
### 后端
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 前端
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 引用
|
||||||
|
|
||||||
|
Model -> Common -> IServices -> Services -> Entensions -> Api
|
||||||
|
|
||||||
|
-> Tasks
|
||||||
|
|
||||||
|
## 依赖安装
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
`AutoMapper` -> **Model**
|
||||||
|
|
||||||
|
`AutoMapper.Extensions.Microsoft.DependencyInjection` -> **Model**
|
||||||
|
|
||||||
|
`log4net` -> **Common**
|
||||||
|
|
||||||
|
`Autofac.Extras.DynamicProxy` -> **Extensions**
|
||||||
|
|
||||||
|
`Autofac.Extensions.DependencyInjection` -> **Extensions**
|
||||||
|
|
||||||
|
`Newtonsoft.Json` -> **Extensions**
|
||||||
|
|
||||||
|
`Quartz` -> **Tasks**
|
||||||
|
|
||||||
|
`SqlSugarCore` -> **Model**
|
||||||
|
|
||||||
|
`StackExchange.Redis` -> **Common**
|
||||||
|
|
||||||
|
`FluentValidation.AspNetCore` -> **Api**
|
||||||
|
|
||||||
|
`FluentValidation.DependencyInjectionExtensions` -> **Api**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ZRAdmin.NET
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
### 后端
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 前端
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[ZRAdmin.NET在线文档 (izhaorui.cn)](http://www.izhaorui.cn/doc/)
|
||||||
|
|
||||||
|
## 引用
|
||||||
|
|
||||||
|
common -> Tasks ->
|
||||||
|
|
||||||
|
Model -> Repository -> Service -> WebApi
|
||||||
|
|
||||||
|
Infrastructure ->
|
||||||
|
|
||||||
|
项目结构比较像Java的若依框架
|
||||||
|
|
||||||
|
## 依赖安装
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# 优缺点对比
|
||||||
|
|
||||||
|
| | Furion | Blog.Core | ZRAdmin.NET |
|
||||||
|
| ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||||
|
| 项目结构 | 跟MVC三层架构还是有不少差别,可能有DDD的思想在里面,只是业务层做了系统和应用层区分,和B端的ERP有很大差别 | 比较符合MVC三层架构,但是其中的时间总线和路由,是项目用不上的,如果做拆分,会有依赖引用问题 | 比较像Java的若依框架,经典三层架构,只是Infrastructure ,其实可以合并到Common中 |
|
||||||
|
| 依赖安装 | Furion集成不少依赖,虽然开发方便,但由于都是集成的,后续有升级难度,定时任务是框架重写了一套,没有用到Quartz.Net | 集成的都是常用的,但是也集成了不少微服务开发和分布式总线上才用到的,会显得比较臃肿 | 集成的有常用的,有较新的,比如NLog,Mapster,但实际看来是比Log4Net和AutoMapper性能要强,Autofac没有集成,使用ASP.Net自带的封装注解,Redis客户端工具类使用的是CSRedisCore,没有用StackExchange.Redis,但是据说存在不定时连接超时的问题,还有就是没有IdentityServer 4的集成 |
|
||||||
|
| 文档 | 全 | 较全,但文档日期停留在 2021-08-21 | 全,比较像Java的若依框架文档 |
|
||||||
|
| 近期维护更新 | 常有,最近的是2小时前,但是仔细看提交记录,其实更新主要还是在文档上 | 有,最近的是20小时前,着重于日志,多租户方面的更新 | 有,最近的是15天前,目前项目总体进入维护状态,大的改动没有,比较稳定,只有针对ISSUE的提交 |
|
||||||
|
| 其他 | 脚手架方便搭建,但是Furion更像是一个工具包集合,而不是框架,没有Admin等功能,所以这部分还需要自己去完成,因为这只是个架子 | 有博客端也有Admin端,但是仍是使用的Vue2,技术栈较久,今年年末就会停止维护,API没有进行分层,都写在一个JS中,后期不好维护,层叠样式表使用CSS,相比较SCSS,语法上较为麻烦 | 有Vue2,也有Vue3版的管理端,可以着重于应用业务上的开发,唯一的是前端使用了JavaScript开发,如果是TypeScript会更好,前端风格跟Java的若依框架前端基本一致,功能也是。后端Redis没有默认开启,需要手动集成,作者很贴心的留了注解,ORM用了sqlsugar,用了多租户,但是配置是在代码中,其实自己给移到配置文件里是最好的 |
|
||||||
|
| 推荐指数 | 3 | 4 | 5 |
|
||||||
|
|
||||||
|
# 后端开发环境
|
||||||
|
|
||||||
|
`Visual Studio 2022`
|
||||||
|
|
||||||
|
**dotnet-sdk-7.0.202-win-x64.exe** [下载 .NET 7.0 SDK (v7.0.202) - Windows x64 Installer (microsoft.com)](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer)
|
||||||
|
|
||||||
|
# 前端开发环境
|
||||||
|
|
||||||
|
`Visual Studio Code`
|
||||||
|
|
||||||
|
安装扩展
|
||||||
|
|
||||||
|
`Volar` `i18n Ally`
|
||||||
|
|
||||||
|
**node-v16.20.1-x64.msi** [Index of /download/release/v16.20.0/ (nodejs.org)](https://nodejs.org/download/release/v16.20.0/)
|
||||||
|
|
||||||
|
https://nodejs.org/download/release/v16.20.0/node-v16.20.0-x64.msi
|
||||||
|
|
||||||
9
themes/butterfly/source/css/mouse.css
Normal file
9
themes/butterfly/source/css/mouse.css
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
body {
|
||||||
|
cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/default.cur),
|
||||||
|
default;
|
||||||
|
}
|
||||||
|
a,
|
||||||
|
img {
|
||||||
|
cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/pointer.cur),
|
||||||
|
default;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user