392
1 min regexp 相关
1
2
3
4
5
6
7
8
| # 统计正则匹配到的次数
:%s/pattern//ng
# 利用 global 把匹配到的行打印出来
:global/pattern/print
# 或者
:global/pattern
|
日志过滤
global
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # [d]elete all lines not(!) matching patterns
:g!/pattern/d
:v/pattern/d
# 匹配多个单词
:v/onStart\|onStop/d
# 忽略大小写,可以直接 `:set ignorecase`,或者:
# 强制忽略大小写:\c
:g/\cpattern/z#.1|echo "================================"
# 强制匹配大小写:\C
:g/\Cpattern/z#.1|echo "================================"
# 更多信息可查看帮助 `:help /ignorecase`
# 将匹配的行移动到最后吗
:g/pattern/m0
# 将匹配的行移动到最前面(顺序会变成倒序)
:g/pat/m$
# 展示匹配该正则表达式的列表
:g/regular-expression/p
|
[I, ilist
1
2
3
4
5
| # Display all lines that contain the keyword under the cursor.
[I
# Like "[I" and "]I", but search in [range] lines (default: whole file).
:il /pattern1\|patter2\|pattern3/
|
quickfix, location list
1
2
| :vimgrep pattern %
:lvim pattern %
|
文件编辑相关
Json 格式化
1
2
| # V 选中 json 字符串,然后调用 json.tool 格式化 json 字符串
:'<,'>!python3 -m json.tool
|
二进制编辑
使用 xxd
命令,切换到二进制模式: :%!xxd
1316
3 mins Emacs 中的变量
要解释本地变量,先解释一下 Emacs 里面变量的作用。
Emacs 中有很多功能(内置的或者插件提供的)都可以通过设置一些变量的值来
进行一些个性化的定制。
这里举几个例子加以说明:
1869
4 mins Go 的并发哲学
Don’t Communicate by sharing memory, share memory by communicating.
不要通过共享内存来通信;相反,通过通信来共享内存。
Generator 发生器
Generator 指返回一个 chan 的函数。这是一种十分常见的使用 goroutine +
chan 的方式,可以说是一种标准用法了。