有没有 Vim 操作智能提醒/纠正工具?

2021-01-30 12:23:05 +08:00
 AndyAO

2021 年了,你还在用 Vim 吗(一份 vim 导航快捷键) - V2EX

看到这篇帖子,发下了学习 Vim 的愿望,没想到这么快就行动了


学习 Vim 的曲线真的很陡峭 !

如果有一款插件就好了

当进行某个比较愚蠢的操作时,能够直接给出更短的 Vim 操作

这样的话学习速度必然会提升很多


对于我这个新手来说,明明还知道有更好的操作

但就是没办法用,因为需要翻阅资料就打断现在的思路了,真的有时候挺纠结的

看文章上说要完全适应的话,大约也要两周[^1]


在适应阶段,操作效率比用普通的方式往往是更低的

而且有很强的割裂感


当然这个工具听起来就不是那么好实现,我不确定是否真的存在,去网上搜过,没有找到什么线索,所以发在 V2EX 问问.

[1]:简明 Vim 练级攻略 | 酷 壳 - CoolShell

1504 次点击
所在节点    问与答
22 条回复
zeroDev
2021-01-30 12:37:23 +08:00
coc.nvim
AndyAO
2021-01-30 12:37:37 +08:00
不知道有人是否感兴趣

如果有那么一款插件的话,我觉得名字可以叫**Vim 教练**.
zeroDev
2021-01-30 12:38:59 +08:00
补全这种东西是一种叫做语言服务器标准的东西实现的,是单独的一种软件,跨平台跨工具的
AndyAO
2021-01-30 12:39:07 +08:00
当然我这里说的 Vim

不局限于 Vim 编辑器本身

指的一切主流编辑器平台上的 Vim 模式

例如 Visual Studio Code/Visual Studio/JetBrains 等
zeroDev
2021-01-30 12:39:46 +08:00
哦,看错了
你可以看看 一个安卓 APP
Vim Master
AndyAO
2021-01-30 12:42:46 +08:00
@zeroDev
安卓端...
令人绝望.
主要是不会在这种平台上写代码的 ε=(´ο`*)))

那你将我的想法看成了什么?
是什么原因促使你推荐 coc?
AndyAO
2021-01-30 12:46:54 +08:00
@zeroDev #5 我好像有点懂了,你以为我是在问'有没有 Vim 的代码自动补全工具'.
这个当然有了
对于老手来说
看到这个标题,首先不这样想也是自然而然的
superrichman
2021-01-30 12:54:06 +08:00
没啥好纠结的 用自己习惯的操作就是最好的
AndyAO
2021-01-30 13:38:59 +08:00
@zeroDev #5
问个问题

如何在 Vim 中复制粘贴文本?
当然我知道具体用什么命令!我只是不知道该如何'思考'这个问题.

![]( https://cdn.jsdelivr.net/gh/Andy-AO/GitHubPictureBed/img/20210130133752.png)

目前我的想法是用`y<number>w`,但是我好像要先数一下 number,那这个速度有点慢了.
首先用 w 数了,才发现是 9 个,因为有各种符号和单词,所以我好像不太会数.

熟练的人是能看一眼就能数出来吗?
如果是这样的话,我想应该多练习练习数 number.

还是说有更好的操作方法?
xujiahui
2021-01-30 13:54:15 +08:00
最近刚好在看«Vim 实用技巧» 边看边用 还挺舒服的
AndyAO
2021-01-30 14:00:08 +08:00
@xujiahui #9 俺也举个爪
whenov
2021-01-30 14:03:56 +08:00
@AndyAO 先在 visual 模式下多次 w 或 W 或 t 或 f 选中,再 y 复制。
Leviathann
2021-01-30 14:10:40 +08:00
@AndyAO
如果复制终点的字符比较特殊,那直接 yt 或者 yf 接终点字符
比如 abcdefc
光标在 a
那 yte 就是复制 a 到 d,yfe 就是 a 到 e

ytc 就是 a 到 c,y2tc 就是复制到第二个 c

另外还有快速查找跳转的插件比如 easymotion
y 后面接跳转操作就是从当前复制到哪个字符
AndyAO
2021-01-30 14:54:35 +08:00
@zeroDev @xujiahui @whenov @Leviathann

目前来看最佳答案是 ya`

学好 Vim 真不容易

如果谁能开发出 Vim 教练就太好了
AndyAO
2021-01-30 15:07:23 +08:00
@Leviathann #12
你这个思路和 ya`的思路可以互相补充
他这个的好处就是只要在包裹体的内部就行
你这个普适性更强一些

查了一下,在我看的那本书里面第 48 页才开始讲这个内容
看来我还要学习很长一段时间
Numbcoder
2021-01-30 15:13:53 +08:00
Vim / Emacs 的入门门槛在于没有一个开箱即用的环境,需要自己一点一点去找插件,配置成自己舒服的使用方式,所以我是强烈不建议完全复制别人配置或者寻找一个所谓唯一最佳的操作方式,很多东西都是在慢慢使用中找到最适合自己的,所以没必要强制去训练,几年以后会形成一套属于自己的配置,成为你的终生财富
Leviathann
2021-01-30 19:16:12 +08:00
@AndyAO 我没看图
原来说的是这个
可以用%跳转的 pair 都是 textobject
包括各种引号括号
IgniteWhite
2021-01-30 21:14:13 +08:00
@Numbcoder 同感,这是个很私人的东西,需要在使用中查找参考别人的方案,然后积累到自己最顺手的设置里。我从本科第一次学习 Vim,5 年之后才有了自己的感触配了适合自己的 vimrc
https://github.com/g6ai/dotfiles
还在不断改进中,欢迎交流
DrakeXiang
2021-01-30 22:52:02 +08:00
我感觉这种东西不可能出现,一个是制作难度的问题,要识别你的意图不容易,新手可能需要三步才能达到自己的目的,高手用一步就可以,但是 vim 怎么识别你的目的是在哪一步达到?

另一个是 vim 有很多命令,但是常用的就这么多,之前见过一个网站,给定一段文本和目标,然后用 vim 来实现,最后以字符长度从短到长排序,里面就能看到很多不认识的命令和 hack,学习这种骚操作并不一定能提高效率,因为有些实现用常用命令更简单,高级操作虽然字符数少了,但是心智负担更大,要么是要学,要么是要记,要么是要算,当然有些也确实能学到更简便的方法。

我的建议是先熟悉常用的命令,然后针对自己经常碰到的需求自己做命令组合的优化或者直接上网搜,能用英文搜就更好,中文我很怀疑有没有搜索结果,如果实在找不到也可以发贴问或者加 vim 的群问,然后可以看一看一些 vim 布道师的演讲啥的,里面针对的一般都是不了解 vim 或者 vim 新手,场景比较常见。总之要想用得很溜需要一个积累的过程。

举个例子:快速移动到对应的行
之前很长时间我是用 j 、k 来移动,但是这样发现在大范围的移动比较笨也慢,后来配合“相对行号” 使用 数字 + j 、k 来实现快了很多,但是在一屏中间大范围移动时有时候觉得行号多了还是有点麻烦,就再配合 shift + h/m/b 移动到屏幕大概的位置,缩短了相对举例之后然后再进行小范围移动就舒服一点
DrakeXiang
2021-01-30 22:53:29 +08:00
@DrakeXiang 写错了。。shift + H/M/L

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749805

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX