惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Simon Willison's Weblog
Simon Willison's Weblog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
Last Week in AI
Last Week in AI
月光博客
月光博客
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
U
Unit 42
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
H
Hacker News: Front Page
Recent Announcements
Recent Announcements
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
小众软件
小众软件
P
Palo Alto Networks Blog
PCI Perspectives
PCI Perspectives
Security Latest
Security Latest
S
Secure Thoughts
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
O
OpenAI News
S
Securelist
云风的 BLOG
云风的 BLOG
H
Help Net Security
T
Troy Hunt's Blog

Posts on WKLKEN THINKING

apisix 中的 lrucache apisix 中的服务发现机制 apisix 中的负载均衡 apisix etcd机制 聊聊框架 关于 k8s 的 zero downtime deployment 一些建议 apisix 遇到的一些问题 关于在除夕前一天换了一个洗衣机的故事 Django DRF 性能优化 DRF 的一些实践 Part1: Serializer DRF继承关系图 Better Code: 关于接口的灵活性 新的仓库: wklken/naming 缓存使用的一些经验 Better Code: 抽象: 可扩展性与可维护性的抉择 Better Code: 异常时, 该提示用户哪些信息? Better Code: 更好的异常日志打印 Go: some libs Go: go-redis/cache升级的坑 Go: logrus性能提升 Go: gin validation 远程办公的一点总结 Go: 开发过程中的一些bug 项目管理实践: 风险驱动开发 Go: 一种error wrap调用链处理方式 漫谈技术选型 Go: 基于 apitest 做handler层单元测试 Go: go-sql-driver interpolateparams参数优化 [分享]深度工作 你需要更多的思考时间 Django项目重构小结 工作七年小结: 学习,生活及其他 [分享]bash日常: bash-utils 极客时间推广海报 2017总结: 予时光以意义 k8s APIServer源码: api注册详细细节 k8s APIServer源码: api注册主体流程 k8s APIServer源码: 服务启动 k8s APIServer源码: go-restful框架 重构 - 读书笔记(Python示例) 写给新人的沟通建议 vim 杂谈 - 关于快速编辑 vim 杂谈 - 关于移动 读书笔记-重构: 章11 处理概括关系 读书笔记-重构: 章10 简化函数调用 读书笔记-重构: 章9 简化表达式 读书笔记-重构: 章8 重新组织数据 读书笔记-重构: 章7 在对象之间搬移特性 读书笔记-重构: 章6 重新组织函数 Python 代码规范小结 [分享]关于vim ElasticSearch集群部署文档 Logstash+ElasticSearch处理mysql慢查询日志 [分享]关于代码调试DE那些事 Logstash+ElasticSearch+Kibana- 实现相对通用的数据收集分析 ELK维护的一些点(二) [分享]Python源码剖析-数据结构 一些Centos Python生产环境的部署命令 摘录<<6个月学会任何一种外语>> ELK 维护的一些点 也许是一个新的开始 一些vim的个性化配置 读书笔记-调试九法 这段时间的一些想法 Python 源码阅读 - 垃圾回收机制 我为什么要写博客 APUE笔记-第一章 UNIX基础知识 Python源码阅读-闭包的实现 Python源码阅读-内存管理机制(二) Python源码阅读-内存管理机制(一) Python-基础-数据结构小结 '活动'设计的一些trick 一些简单的Python测试题 我的tmux配置及说明【k-tmux】 Review and Restart 工作四周年小结 vim插件: surround & repeat[成对符号编辑] vim插件: gundo[时光机] vim插件: expand-region[区域选中] vim插件: quickrun[快速执行] vim插件: trailing-whitespace[行尾空格处理] vim插件: closetag[成对标签补全] vim插件: ctrlp[文件搜索] vim插件: airline[状态栏增强] vim插件: theme[主题] vim插件: tagbar[大纲式导航] vim插件: nerdcommenter[快速注释] vim插件: rainbow_parentheses[括号高亮] vim插件: syntastic[语法检查] vim插件: delimitmate[符号自动补全] vim插件: matchit[成对标签跳转] vim插件: easy-align[快速对齐] vim插件: multiple-cursors[多光标操作] vim插件: vim-signature[快速标记跳转] vim插件: easymotion[快速跳转] vim插件: vundle[管理插件] Elasticsearch几个问题的解决 分享一份 Vim 简介PPT k-vim 更新9.0版本 关于知识管理工具的思考
[翻译]130+vim基本命令
2013-08-17 · via Posts on WKLKEN THINKING

文章 链接

从八十年代起,vi和vim在程序员中十分流行.5年前,我写了《程序员必须知道的100个vim命令》,这是重写更新版本,希望你喜欢!

基础

:e filename     在编辑器中打开一个文件
:w              保存文件
:q              退出vim
:q!             退出但不保存
:x              写文件(如果有做修改)并退出
:sav filename   保存为
.               在正常模式中重复执行上一个变更
5.              重复五次

移动

k or Up Arrow   上移一行
j or Down Arrow 下移一行
e               移动到单词末尾
b               移动到单词开头
0               移动到行首
G               移动到文件末尾
gg              移动到文件开头
L               移动到屏幕底
:59             移动到59行
20|             移动到第20列
%               移动到匹配的括号
[[              到函数头
[{              到块开始位置

剪切,复制和粘贴

y   拷贝选中部分到剪贴板
p   粘贴剪贴板中内容
dd  剪切当前行
yy  拷贝当前行
y$  拷贝到行尾
D   剪切到行尾

搜索

/word           从开头到结尾搜索单词word
?word           从结尾到卡头
*               搜索光标下单词
/\cstring       搜索string或STRING, 大小写不敏感
/jo[ha]n        搜索john 或 joan
/\< the         搜索以the开头的,the, theatre 或 then
/the\>          搜索以the结尾的,the 或 breathe
/\< the\>       搜索the
/\< ¦.\>        搜索所有含有四个字母的
/\/             搜索fred 但不是alfred 或 frederick
/fred\|joe      搜索fred 或 joe
/\<\d\d\d\d\>   搜索仅有四个数字的
/^\n\{3}        搜索连续3个空行的
:bufdo /searchstr/  在所有打开buf中搜索
bufdo %s/something/somethingelse/g  在所有打开buf中搜索并替换

替换

:%s/old/new/g           将所有出现的old替换为new
:%s/onward/forward/gi   将所有onward替换为forward,大小写不敏感
:%s/old/new/gc          替换前确认
:2,35s/old/new/g        将第2行到第35行之间的old替换为new
:5,$s/old/new/g         将第5行到文件结尾的old替换为new
:%s/^/hello/g           在每一行开头加入hello
:%s/$/Harry/g           在每一行结尾加入Harry
:%s/ *$//g              删除每行末尾无用空格
:g/string/d             删除所有包含string的行
:v/string/d             删除所有不包含string的行
:s/Bill/Steve/          替换当前行第一个Bill为Steve
:s/Bill/Steve/g         替换当前行中所有Bill
:%s/Bill/Steve/g        替换文件中所有Bill
:%s/^M//g               删掉DOS保存文件中(^M)
:%s/\r/\r/g             Transform DOS carriage returns in returns
:%s#<[^>]\+>##g         删除html标签但是保留文本
:%s/^\(.*\)\n\1$/\1/    删除所有连续出现过两次的行,保留一行
Ctrl+a                  递增光标下的数字
Ctrl+x                  递减光标下的数字
ggVGg?                  文本转换为 Rot13

大小写

Vu                  整行小写
VU                  整行大写
g~~                 整行大小写反转
vEU                 单词转为大写
vE~                 单词大小写反转
ggguG               所有文本小写
gggUG               所有文本大写
:set ignorecase     搜索中忽略大小写
:set smartcase      搜索中忽略大小写,除非搜索词中存在大小写字母
:%s/\<./\u&/g       将所有单词首字母大写
:%s/\<./\l&/g       将所有单词首字母小写
:%s/.*/\u&          将每行第一个字母大写
:%s/.*/\l&          将每行第一个字母小写

读写文件

:1,10 w outfile     1到10行内容写到outfile
:1,10 w >> outfile  1到10行内容追加到outfile
:r infile           插入文件内容
:23r infile         插入文件23行的内容

文件浏览器

:e .                打开完整文件浏览器
:Sex                切分窗口,打开文件浏览器
:Sex!               同上,垂直切分
:browse e           图像化文件浏览器
:ls                 列出buffers
:cd ..              移到上一层目录
:args               列出文件
:args *.php         打开文件列表
:grep expression *.php  返回包含expression的php文件列表
gf                  打开光标下文件名对应的文件

和Unix交互

:!pwd               执行pwd命令,返回结果
!!pwd               执行命令并插入结果到文件中
:sh                 临时返回unix
$exit               从unix中返回vim

对齐

:%!fmt              所有行对齐
!}fmt               当前位置所有行对齐
5!!fmt              后五行对齐

Tabs和Windows

:tabnew             创建一个新的tab
gt                  展示下一个tab
:tabfirst           展示第一个tab
:tablast            展示最后一个tag
:tabm n(position)   重排tab
:tabdo %s/foo/bar/g 在所有tab中执行一个命令
:tab ball           将所有打开文件放入tab中
:new abc.txt        在新window中编辑abc.txt

窗口分屏

:e filename         在当前窗口中编辑文件
:split filename     切分当前窗口并打开文件(缩写 :sp filename)
ctrl-w up arrow     移到上一个文件
ctrl-w ctrl-w       移到下一个窗口
ctrl-w_             当前窗口垂直最大化
ctrl-w|             当前窗口水平最大化
ctrl-w=             所有窗口等大小
10 ctrl-w+          当前窗口增加10行
:vsplit file        竖直切分窗口
:sview file         同:split, 只读模式
:hide               关闭当前窗口
:nly               关闭出了当前窗口之外的所有窗口
:b 2                打开2号窗口

自动补全

Ctrl+n Ctrl+p (插入模式)  补全单词
Ctrl+x Ctrl+l           补全行
:set dictionary=dict    定义dict为dictionnary
Ctrl+x Ctrl+k           用字典中内容补全

标签

m {a-z}                 在当前位置做标签{a-z}
' {a-z}                 移动到标签位置
''                      移动到上一个位置

缩写

:ab mail mail@provider.org      定义mail 作为 mail@provider.org的缩写

文本缩进

:set autoindent         打开自动缩进
:set smartindent        打开自动智能缩进
:set shiftwidth=4       缩进设为4个空格
ctrl-t, ctrl-d          插入模式中缩进/去缩进
>>                      缩进
<<                      去缩进
=%                      缩进括号中的代码
1GVG=                   缩进整个文件

语法高亮

:syntax on              打开语法高亮
:syntax off             关闭语法高亮
:set syntax=perl        强制语法高亮