来补课,教你怎么省下插件,用 vim 自带的功能完成大部分的事情

2021-09-10 20:19:02 +08:00
 ChrisFreeMan
5240 次点击
所在节点    Vim
35 条回复
levelworm
2021-09-10 23:22:56 +08:00
@ChrisFreeMan 多谢。其实我有点比较好奇,vim 是否支持对语义上的结构进行编辑?我可能说的不专业,所谓语义上的意思,我举个例子,比如说很多语言都有 block 这个概念,那么 vim 是否支持比如说一组快捷键选中 /删除 /拷贝一个 block ?
nalzok
2021-09-11 00:40:21 +08:00
@frankyzf 确实,vim 最大的特色是 modal editing,类似的编辑器还有 kakoune
agagega
2021-09-11 01:51:21 +08:00
@levelworm
Text Objects

我从 17 年开始自己弄了一套基本的 Vim 配置,四年来没怎么动过,跨越的笔记本和服务器加起来十多二十台了吧,很舒服,这个投入产出比很高。而且 Vim 移植性比 Emacs 强多了,很多老点的系统里都能找到 Vim 8,然而 Emacs 版本却不够装常见的 Doom 或者 Spacemacs 之类
ChrisFreeMan
2021-09-11 05:11:37 +08:00
@levelworm 你说的块具体是啥不清楚但是 vim 有超级多的方式去选中你要的区域,比如( )“” { } [ ] ` ` ' ' 这些内容可以在选中情况下:shift v, i 加上需要进入的块里面的符号,比如要进入{ }内,就 shift v i { 或者 }, 你就会在 VISUAL 模式下选中{ }中的所有内容,类似这些,魔法操作还有很多,要自己去试试就会发现很有意思,有点飞的感觉
ChrisFreeMan
2021-09-11 08:58:49 +08:00
@levelworm 大半夜迷糊没有讲清楚,vim 如果没有 IDE 插件就是一个纯文本编辑器,但是本身的编辑功能非常丰富,比如跳转,w 键可以按单词跳转,f + 你需要跳转的单词开头可以飞过去,[[ ]]可以向上段落翻或者向下段落翻,esc 退出编辑模式后会进入一个 normal 模式,这个情况下,按 v 进入一个选择模式,你可以按上下左右键移动光标选择需要选中的内容,有点类似鼠标拖拽,或者 shit + v 键直接选中整行,接着提到上面没有讲清楚的,就是你需要将光标移动到你要选中的块中比如你要选中{ some code }的 { }中的所有代码,先按 f + { 将光标移动到 { 上,这个时候 shift + v + i + { 就会选中里面的所有内容,这些都是很基本的编辑技巧,你需要花点时间都了解一下,按你需要的功能去记就好了,都是有规律可循的,比如 w 按单词跳转,w 记为 word(单词),v 为 visual (视觉选中),shit + v + i + { 记为选中整行进入 (inside) { 内
ykk
2021-09-11 17:12:35 +08:00
挺好的,我用 gedit + pycharm
Dragonphy
2021-09-11 18:47:46 +08:00
我就用 VIM 修改一些配置文件,其余的都是 VS Code 了
zhea55
2021-09-11 20:25:39 +08:00
最近安装了一套 lunar vim,感觉比几年前的 vim 确实好了太多。几年前,每一个插件都有快捷键,都需要配置,并且需要记忆和学习。目前的 lunar vim 只要按下空格,后面的功能可以一步步的提示下去,几乎不需要去记忆快捷键位了。

我对 neovim 的 treesitter 非常感兴趣。这个东西提供的代码高亮,确实是令人影响深刻。

不过目前,在对代码格式化后,或者写代码过程中出现了语法错误(括号没关闭)会导致 treesitter 的高亮出现一些问题。



我感觉 neovim 的生态对前端项目的支持,还是有些落后,虽然说有 LSP,但是提示的方法,都比较死板。

不像 vscode 那样,基本提示的东西都是你可以马上按回车确认的代码。

neovim 的提示需要上下选很久。



另外,我曾经很痴迷,vim 的各种命令操作。但是真实去写代码的时候发现,还是 sublime 的那套快捷键,高效,速度快。

就说项目内搜索代码,ctrl+shift+f 然后输入关键字,按下回车就搜索完成了。

vim 里面需要操作多少步?即使是使用目前最先进的 telescope 。它的实时预览,跟 sublime 的鼠标滚动搜索页面的内容,差距还是很大。


再说给变量重命名。vim 需要敲多少的代码? sublime 直接选中变量,alt+f3,就改完了。


可以说效率不在一个级别。





目前还在观望中,基本效率开发还是 vscode,虽然我不喜欢它的性能。但是确实是生态最好的开发工具了。



sublime 的更新节奏偏慢,而且第三方的插件龙蛇混杂,就一个 prettier 插件,落后 vscode 很多。稍微大一点的文件,vscode 能够格式化完成,虽然慢一点。sublime 的插件直接导致编辑器卡死。
piping
2021-09-12 03:53:47 +08:00
@zhea55 vim 里面找代码我用三次键盘敲击就行 <leader>gd 映射到 cscope 的查找当前光标下的单词。这个方法同样适用于 lsp 插件。你说的几个功能都是可以自己配置的,操作用两三个按键就完成了
ChrisFreeMan
2021-09-12 10:27:11 +08:00
@zhea55 你说的这些个功能,算是基本功能了,vim 都有现成的,你说的项目内搜索代码 ctrlsf.vim 插件可以替代,它就是模仿的 sublimeText,还可以实时预览查找。变量全部重命名,用 coc.nvim,说白了你还是喜欢熟食,建议你去用一些开箱即用的 vim IDE 比如 SpaceVim, 又或者是基于 neovim 的 NvChad, 选择了用 vim 就要学会自己打猎,功能不会凭空跑出来,这就是为什么有些人的配置有攒了 10 年。
JetMac
2021-09-12 21:46:47 +08:00

再说给变量重命名。vim 需要敲多少的代码? sublime 直接选中变量,alt+f3,就改完了
可以说效率不在一个级别。


-----

只能说你对 Vim 知之甚少,不要对不了解的事物轻易评价。
jdhao
2021-09-13 00:46:53 +08:00
@zhea55 如果用 LSP 的话,也很快啊,譬如我配置的快捷键是 <leader>rn,那我按下这三个键,然后输入新的变量名就可以了,你的认识还停留在古老时代。
seyoatda
2021-09-13 13:48:36 +08:00
很多人说 VIM 没有 IDE 好用,但是本来就是配合着 IDE 用的啊。像开发 java 肯定是用 Intellij, 没人会用 Vim 开发,但是用 IDE 里的 vim 插件可以大大减少鼠标的使用率,提高效率,这不就和快捷键是一个道理。
yuancoder
2021-09-13 18:00:17 +08:00
使用 vim 的好处是拿起 terminal 就能开干
FGW
2021-10-22 13:36:55 +08:00
@zhea55 给你一个快捷键一个就行了是不是更快
nnoremap & :<c-u>/g<home>%s/<c-r><c-w>/
按& 输入替换内容

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

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

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

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

© 2021 V2EX