Skip to content

Commit 4806ac5

Browse files
authored
Merge pull request #40 from hotoo/feat/date
Feat/date
2 parents b3cfc1b + 80d3c09 commit 4806ac5

File tree

4 files changed

+150
-18
lines changed

4 files changed

+150
-18
lines changed

README.md

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,49 @@
44

55
它会将一些不规范,或不推荐的排版方式,在保存文件时进行自动格式化、规范化。
66

7-
![image](https://user-images.githubusercontent.com/143572/150163233-3697396a-e5ee-448c-ac5a-73188e02331f.png)
8-
9-
107
## 功能
118

129
* 中英文字符间增加一个半角空白。
10+
* 特殊的,日期可以指定不添加空白。
1311
* 中文前后的半角标点转成全角标点。
1412
* 全角英文、数字转成半角字符。
1513
* 连续的句号自动转省略号。
1614
* 感叹号、问号最多允许连续重复 3 次。
1715
* 其他中文标点符号不允许重复出现。
1816

17+
```diff
18+
- 中文和English之间要有空白.
19+
+ 中文和 English 之间要有空白。
20+
21+
let g:pangu_rule_date = 0
22+
- 今天是 2022 年 1 月 21 日星期五。
23+
+ 今天是2022年1月21日星期五。
24+
25+
let g:pangu_rule_date = 1
26+
- 今天是2022年1月21日星期五。
27+
+ 今天是 2022年1月21日 星期五。
28+
29+
- <世界观: 现代人必须要懂的科学哲学和科学史>这本书重建了我的科学观和世界观.
30+
+ 《世界观:现代人必须要懂的科学哲学和科学史》这本书重建了我的科学观和世界观。
31+
32+
- 0123456789
33+
+ 0123456789
34+
35+
- ABCDEFG...XYZ
36+
+ ABCDEFG...XYZ
37+
- abcdefg...xyz
38+
+ abcdefg...xyz
39+
40+
- 真是太无语了。。。
41+
+ 真是太无语了......
42+
43+
- 苍天哪!!!!!这是怎么了??????
44+
+ 苍天哪!!!这是怎么了???
45+
46+
- 不小心多打了标点,,,和符号。。
47+
+ 不小心多打了标点,和符号。
48+
```
49+
1950
## 支持的文件格式
2051

2152
推荐在以下文件格式中使用:
@@ -25,21 +56,21 @@
2556
* Wiki (*.wiki)
2657
* Vim 中文文档 (*.cnx)
2758

28-
如果想在其他格式的文件中使用这个功能,可以执行 `:Pangu` 命令。
59+
如果想在其他格式的文件中使用这个功能,可以执行 `:[range]Pangu` 命令。
2960

30-
同时可以在 vimrc 中开启自动规范化功能。开启方式:
61+
同时可以在 vimrc 中开启保存文件时自动规范化功能。开启方式:
3162

3263
```viml
3364
autocmd BufWritePre *.markdown,*.md,*.text,*.txt,*.wiki,*.cnx call PanGuSpacing()
3465
```
3566

36-
> **注意:目前只对纯文本格式的文件支持较好,其他如 html 等,请谨慎开启。**
67+
> **注意:目前只对纯文本格式的文件支持较好。其他源代码场景,请谨慎开启。**
3768
>
3869
> 如果有合适的文件格式推荐,请提交 [Issue](https://github.com/hotoo/pangu.vim/issues)
3970
4071
## 安装
4172

42-
via vim-plug
73+
via vim-plug:
4374

4475
```viml
4576
Plug "hotoo/pangu.vim"
@@ -48,7 +79,7 @@ Plug "hotoo/pangu.vim"
4879
via Vundle:
4980

5081
```
51-
Bundle "hotoo/pangu.vim"
82+
Plugin "hotoo/pangu.vim"
5283
```
5384

5485
## 用法
@@ -85,7 +116,7 @@ $ vim a.md b.md c.md
85116
:wq
86117
```
87118

88-
### 持久化禁用
119+
## 持久化禁用
89120

90121
在编辑的文档中任何位置注明 `PANGU_DISABLE`,则整个文档不自动规范化。
91122

doc/pangu.txt

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,50 @@
55
https://github.com/hotoo/pangu.vim
66

77

8-
1. 用法 |pangu-usage|
9-
2. 配置 |pangu-config|
10-
3. 规则 |pangu-rules|
8+
1. 安装 |pangu-install|
9+
2. 命令 |pangu-command|
10+
3. 配置 |pangu-config|
11+
4. 规则 |pangu-rules|
12+
5. 技巧 |pangu-tricks|
13+
1114

1215
==============================================================================
13-
USAGE *pangu-usage*
16+
INSTALL *pangu-install*
17+
18+
via vim-plug: >
19+
Plug "hotoo/pangu.vim"
20+
<
21+
22+
via Vundle: >
23+
Plugin "hotoo/pangu.vim"
24+
<
25+
26+
==============================================================================
27+
COMMANDS *pangu-command*
28+
29+
*:[range]Pangu*
30+
手动执行命令,对指定范围的中文进行规范化。 >
31+
:Pangu
32+
<
33+
34+
*:PanguAll*
35+
手动执行命令,对当前 Buffer 的所有中文进行规范化。 >
36+
:PanguAll
37+
<
1438

15-
关闭 Pangu 插件。 >
1639
*:PanguDisable*
17-
>
40+
关闭 Pangu 插件。 >
1841
:PanguDisable
1942
<
43+
44+
持久化禁用:
45+
46+
在文档中任何位置注明 `PANGU_DISABLE`,则整个文档不自动规范化。
47+
48+
2049
*:PanguEnable*
2150
打开 Pangu 插件。 >
22-
:PanguDisable
51+
:PanguEnable
2352
<
2453

2554
==============================================================================
@@ -31,7 +60,7 @@ CONFIGURATION *pangu-config*
3160
<
3261

3362
==============================================================================
34-
CONFIGURATION *pangu-config*
63+
RULES *pangu-rules*
3564

3665
*g:pangu_rule_fullwidth_punctuation*
3766

@@ -64,12 +93,33 @@ http://www.moe.gov.cn/ewebeditor/uploadfile/2015/01/13/20150113091548267.pdf
6493
let g:pangu_rule_spacing = 0
6594
<
6695

96+
*g:pangu_rule_date*
97+
98+
“年月日”之间的数字,默认通过 `g:pangu_rule_spacing` 规则会被空格隔开。
99+
如果你希望“年月日”之间的数字不以空白隔开,可以使用这个新增的这个设置: >
100+
let g:pangu_rule_date = 0 " 年月日两头不留白
101+
" eg: 今天是2022年1月21日星期五。
102+
103+
let g:pangu_rule_date = 1 " 年月日两头留白
104+
" eg: 今天是 2022年1月21日 星期五。
105+
<
106+
默认值 `2`,为了和之前默认行为兼容。
107+
67108
*g:pangu_rule_trailing_whitespace*
68109

69110
删除前置空白和尾空白。默认开启,如需关闭可以设置: >
70111
let g:pangu_rule_trailing_whitespace = 0
71112
<
72113

73114
==============================================================================
74-
PANGU_DISABLE
115+
TRICKS *pangu-tricks*
116+
117+
批量规范化多个文档。 >
118+
$ vim a.md b.md c.md
119+
120+
:argdo PanguAll | update
121+
:wq
122+
<
123+
124+
==============================================================================
75125
vim:tw=78:fo=tcroq2mM:et:sts=2:sw=2:ft=help:norl:

plugin/pangu.vim

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ endif
2525
if !exists("g:pangu_rule_trailing_whitespace")
2626
let g:pangu_rule_trailing_whitespace=1
2727
endif
28+
if !exists("g:pangu_rule_date")
29+
let g:pangu_rule_date = 2
30+
endif
2831

2932
function! PanGuSpacingCore(mode) range
3033
let ignore = search("PANGU_DISABLE", 'n')
@@ -110,6 +113,32 @@ function! PanGuSpacingCore(mode) range
110113
silent! execute firstline . ',' . lastline . 's/\([a-zA-Z0-9!&;=\]\,\.\:\?\$\%\^\-\+\)\\]\)\([\u4e00-\u9fa5\u3040-\u30FF]\)/\1 \2/g'
111114
endif
112115

116+
" 默认日期每个数字都留白,向前兼容。
117+
" 例:
118+
" 在 2017 年 8 月 7 日生日。
119+
" 在2017年8月7日。
120+
if g:pangu_rule_date == 0
121+
" 日期两端也不留白
122+
" 例:
123+
" 我在2017年8月7日生日。
124+
" 在2017年8月7日。
125+
silent! execute firstline . ',' . lastline . 's/\s*\(\d\{4,5}\)\s*年\s*\(\d\{1,2}\)\s*月/\1年\2月/g'
126+
silent! execute firstline . ',' . lastline . 's/\s*\(\d\{1,2}\)\s*月\s*\(\d\{1,2}\)\s*日/\1月\2日/g'
127+
silent! execute firstline . ',' . lastline . 's/\s*\(\d\{4,5}\)\s*年\s*\(\d\{1,2}\)\s*月\s*\(\d\{1,2}\)\s*日/\1年\2月\3日/g'
128+
" 去除两端留白
129+
silent! execute firstline . ',' . lastline . 's/\(\(\d\{4,5}年\)\?\d\{1,2}月\(\d\{1,2}日\)\?\)\s\+\([\u4e00-\u9fa5\u3040-\u30FF]\)/\1\4/g'
130+
elseif g:pangu_rule_date == 1
131+
" 日期两端留白
132+
" 例:
133+
" 我在 2019年12月1日 生日。
134+
" 在 2017年8月7日。
135+
silent! execute firstline . ',' . lastline . 's/\(\d\{4,5}\)\s*年\s*\(\d\{1,2}\)\s*月/\1年\2月/g'
136+
silent! execute firstline . ',' . lastline . 's/\(\d\{1,2}\)\s*月\s*\(\d\{1,2}\)\s\+日/\1月\2日/g'
137+
silent! execute firstline . ',' . lastline . 's/\(\d\{4,5}\)\s*年\s*\(\d\{1,2}\)\s*月\s*\(\d\{1,2}\)\s\+日/\1年\2月\3日/g'
138+
" 两端留白
139+
silent! execute firstline . ',' . lastline . 's/\(\(\d\{4,5}年\)\?\d\{1,2}月\(\d\{1,2}日\)\?\)\([\u4e00-\u9fa5\u3040-\u30FF]\)/\1 \4/g'
140+
endif
141+
113142
if g:pangu_rule_trailing_whitespace == 1
114143
silent! execute firstline . ',' . lastline . 's/^ \[/[/'
115144
silent! execute firstline . ',' . lastline . 's/\s\+$//'

test/date.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
日期测试用例:
2+
3+
在2021年1月。
4+
我在2021年1月生日
5+
在1月1日。
6+
我在1月1日生日
7+
在2021年1月1日。
8+
我在2021年1月1日生日
9+
10+
在2021年1月。
11+
我在 2021年1月 生日
12+
在 1月1日。
13+
我在 1月1日 生日
14+
在 2021年1月1日。
15+
我在 2021年1月1日 生日
16+
17+
在 2021 年 1 月。
18+
我在 2021 年 1 月生日
19+
在 1 月 1 日。
20+
我在 1 月 1 日生日
21+
在 2021 年 1 月 1 日。
22+
我在 2021 年 1 月 1 日生日

0 commit comments

Comments
 (0)