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

推荐订阅源

N
Netflix TechBlog - Medium
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
NISL@THU
NISL@THU
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
The Register - Security
The Register - Security
Jina AI
Jina AI
Spread Privacy
Spread Privacy
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
The Blog of Author Tim Ferriss
GbyAI
GbyAI
J
Java Code Geeks
S
Securelist
Y
Y Combinator Blog
T
Threat Research - Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
W
WeLiveSecurity
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
Martin Fowler
Martin Fowler
TaoSecurity Blog
TaoSecurity Blog
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
DataBreaches.Net
L
LINUX DO - 热门话题
T
Tailwind CSS Blog
T
Tor Project blog
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
I
Intezer
V
V2EX
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
量子位
AI
AI
Cyberwarzone
Cyberwarzone
T
Troy Hunt's Blog
N
News | PayPal Newsroom
H
Help Net Security

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 杂谈 - 关于快速编辑 读书笔记-重构: 章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版本 关于知识管理工具的思考 Logstash+ElasticSearch+Kibana处理nginx访问日志
vim 杂谈 - 关于移动
2017-03-20 · via Posts on WKLKEN THINKING

这个专栏的主要目的, 是介绍后台开发, vim, python, 工具, 效率, 项目等等一些所思所想. 欢迎关注及交流.


k-vim 这个项目, 虽然一年只更新一两次, 但是里面很多配置, 都是基于使用中的痛点, 以及 符合自觉 的原则进行的变更.

整体而言, k-vim 虽然做成了一个开箱即用的配置, 但是很多使用者更想知道一些更具体的说明, 包含配置项, 配置原因等等.

之前有个blog有提过一句

Don’t put anything in your .vimrc you don’t understand!

虽然我不是十分赞同(我更倾向于基于一个完备的配置再进行深入了解和 DIY, 毕竟从0打造成本略高).

但是觉得有必要, 写一写, 谈一谈vim中的一些配置的原因.

目测会成系列, 从前到后你也能个性化自己的完整配置. 也可以借鉴一些技巧和插件使用(总共会提及约60+插件)

第一篇, 移动.

HJKL

一谈到移动, 首先想到的是hjkl, 最基本的上下左右

h 左移
l 右移

k 上移
j 下移 (记忆 jump)

当然, 左右只是字符间移动, 上下是行之间的移动

优化HJKL

首先, 为了防止自己情不自禁使用 上下左右 方向键, 可以禁用之.

" 关闭方向键, 强迫自己用 hjkl
map <Left> <Nop>
map <Right> <Nop>
map <Up> <Nop>
map <Down> <Nop>

其次, 当一行超长之后, se wrap, 一行就显示为多行(一个物理行 - 多个展示行), 如果是默认配置, 使用 jk 移动时, 将会是物理行维度的, 而直觉上应该在展示行维度跳转(视觉上), 所以加配置, 使得jk在展示行之间上下跳转

"Treat long lines as break lines (useful when moving around in them)
"se swap之后,同物理行上直接跳
nnoremap k gk
nnoremap gk k
nnoremap j gj
nnoremap gj j

另外, 当上下移动时, 默认光标到顶/到底后, 再用jk时, 光标是贴着终端顶部或底部的, 需要配置, 保证光标距离顶部或底部一定行数, 这样显示视觉效果更好.

" 在上下移动光标时,光标的上方或下方至少会保留显示的行数
set scrolloff=7

单词间移动

wbe, 原先是wWbBeE, 大小写都是有各自含义的, 但是, 更懒的做法, 只用小写wbe, 毕竟, 使用大写WBE, 你还得多按一个shift键, 以及, 肌肉记忆下, 操作的一瞬间, 你很难将你想要的和使用大写还是小写分别代表什么动作, 句子里哪个是标点关联起来.

所以, 直接无视大写吧

w 移到下一个单词 (记忆 next word)
b 移动到单词开头 (记忆 back)
e 移动到单词尾部

关于 0和$, 以及 HML 的优化

0$, 分别是

0 移动到行首
$ 移动到行尾

而, 0, 需要手指离开字母区, $更惨, 还得多按一个shift. 另外其实还有个^的, 实在按不着>_<#

HML 是同屏间, 快速移动到屏幕顶部/中间/底部, 顶部和底部还好, 中间到底在哪? 具体哪一行, 这个是比较范的操作, 非精确操作(不能一次性移动到想要的位置), 所以我的结论是: 废掉

H映射成移动到行首(最左边), 将L映射成移动到行尾(最右边), 和原先hjkl意义同, 且在字母区. 更符合直觉

" Go to home and end using capitalized directions
noremap H ^
noremap L $

行内: fFtT

f/F, 同一行内向前/向后跳转, 而t/T同, 只是会调到目标位置的前面一个字符

我的做法是, 忘掉tT, fF更符合直觉, 真正的指哪到哪, 而且f=find也好记

f  跳转到向前搜索的字母位置
F  跳转到向后搜索的字母位置

在这里, 推荐一个插件(被动生效), 可以高亮显示目标字母: quick-scope A Vim plugin that highlights which characters to target for f, F and family. No mappings are needed.

文件: 关于 ctrl + fbud

ctrl + f/b 下翻/上翻一页, 而ctrl + u/d 下翻/上翻半页.

我的做法是, 忘掉ctrl + f/b, 只用ctrl + u/d

我们经常做的操作是, 不停的上翻/下翻, 连续动作, 一整页太多, 看内容很容易思维上断开, 需要返回去重看, 而半页有一半的东西是连着的; 而对于使用压掌大法ctrl的人来说, 按住ctrl再反复fb, 特别是 b, 特别难按, fb都在左边, 左手太累

ud, 可以将操作放到两手, 也方便(肌肉)记忆

ctrl + u 上翻半页(记忆 up)
ctrl + d 下翻半页(记忆 down)

文件: 头尾和某一行

gg  跳转到文件头
G   跳转到文件尾

:n  精确移动到第几行

记住这三个, 基本够了吧?

分屏移动

ctrl + w + hjkl 是默认分分屏的快捷键, 去掉w更快些

" 分屏窗口移动, Smart way to move between windows
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

插件: 标记跳转增强 vim-signature

默认, m + 字母, 可以在当前打一个标记, 然后 反引号+字母 可以跳转到标记行

但是存在的缺点是: 标记不可见, 且反引号实在难按

所以做了些增强

安装这个插件: vim-signature

具体安装/配置/演示: VIM插件: VIM-SIGNATURE(快速标记跳转)

" 交换 单引号/反引号, 使得可以快速使用 单引号 跳到marked位置
nnoremap ' `
nnoremap ` '

其常用的几个快捷键

" 显示marks - 方便自己进行标记和跳转
" m[a-zA-Z] add mark
" '[a-zA-Z] go to mark
" m<Space>  del all marks
" m/        list all marks
" m.        add new mark just follow previous mark

插件: 终极跳转 easymotion

有一个插件, 对跳转做了深入的定制, 那就是: vim-easymotion

安装了之后, 简直想怎么跳就怎么跳. 作为一个必备插件, 大家有必要深入学习下用法, 跳转效率翻倍

之前写的一篇博文介绍: VIM插件: EASYMOTION(快速跳转)

  • 用法1: 跳转到当前光标前后的位置(w/b)
  • 用法2: 搜索跳转(s)
  • 用法3: 行级跳转(jk)
  • 用法4: 行内跳转(hl)
  • 用法5: 重复上一次动作(.)

具体配置及演示见博文

其他

vim中跳转的配置大抵这些就够用了.

下一篇, 将介绍如何快速编辑. 后续还有搜索替换等等一系列内容