V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChrisFreeMan
V2EX  ›  Vim

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

  •  
  •   ChrisFreeMan · 2021-09-10 20:19:02 +08:00 · 5534 次点击
    这是一个创建于 1174 天前的主题,其中的信息可能已经有所发展或是发生改变。
    35 条回复    2021-10-22 13:36:55 +08:00
    ChrisFreeMan
        1
    ChrisFreeMan  
    OP
       2021-09-10 20:19:09 +08:00
    fy
        2
    fy  
       2021-09-10 20:50:34 +08:00
    2021 年了,别再 vim 了吧
    jdhao
        3
    jdhao  
       2021-09-10 20:55:24 +08:00
    @ChrisFreeMan 之前看过,有点用,不过自带的功能,有时候易用性上面还是差点,所以我选择用插件增强。。
    ChrisFreeMan
        4
    ChrisFreeMan  
    OP
       2021-09-10 20:57:54 +08:00
    @fy come man, this is so fun and so cool
    ChrisFreeMan
        5
    ChrisFreeMan  
    OP
       2021-09-10 20:59:01 +08:00
    @jdhao 那个 buffer 管理还挺不错的第一次知道,还有 find,还有 error list
    FrankFang128
        6
    FrankFang128  
       2021-09-10 21:01:57 +08:00
    vim 永远也做不好的事情:格式化一个同时含有 HTML CSS JS 代码的文件
    ChrisFreeMan
        7
    ChrisFreeMan  
    OP
       2021-09-10 21:02:39 +08:00
    @FrankFang128 😂放过 vim 吧,让它干一些比较纯粹的事情
    ChrisFreeMan
        8
    ChrisFreeMan  
    OP
       2021-09-10 21:03:19 +08:00
    @FrankFang128 不过话说应该有一些 IDE 插件能够做到,比如说 coc.nvim
    chendy
        9
    chendy  
       2021-09-10 21:08:10 +08:00
    ideavim 路过。。。
    感觉自己的听力水平不支持这个视频。。。
    xarthur
        10
    xarthur  
       2021-09-10 21:08:19 +08:00 via iPhone
    @fy 2021 年当然要继续用 Vim (
    xarthur
        11
    xarthur  
       2021-09-10 21:09:11 +08:00 via iPhone
    @FrankFang128 可以啊,Neovim 现在都原生支持 LSP 和 Treesitter 了。
    ChrisFreeMan
        12
    ChrisFreeMan  
    OP
       2021-09-10 21:09:52 +08:00
    @chendy 听个大概就差不多了,结合他的操作和一些专有名词,就能懂个大概了
    levelworm
        13
    levelworm  
       2021-09-10 21:17:45 +08:00
    习惯用 vscode 等编辑器,vim 还是留给儿子以后学吧。。。
    ChrisFreeMan
        14
    ChrisFreeMan  
    OP
       2021-09-10 21:20:13 +08:00
    @levelworm 🤪尝试一下教你儿子不好吗,做一个酷老爹
    FrankFang128
        15
    FrankFang128  
       2021-09-10 21:20:51 +08:00
    @xarthur neovim 还好,原版 vim 我已经失望了
    levelworm
        16
    levelworm  
       2021-09-10 21:34:02 +08:00
    @ChrisFreeMan 我会一点,就是最基本的剪切拷贝粘贴这些,涉及到语言的高亮神马的我就弃疗了。
    ChrisFreeMan
        17
    ChrisFreeMan  
    OP
       2021-09-10 21:40:04 +08:00   ❤️ 1
    @levelworm 给你推荐一个开箱即用号称终极 vim 配置的 GitHub 库,等你一点一点读懂他的配置后(他组织的挺好的,易读)就可以自己裁剪不需要的东西,最终走向自己定制。https://github.com/amix/vimrc
    frankyzf
        18
    frankyzf  
       2021-09-10 22:04:14 +08:00
    @levelworm vim 和 vscode 不冲突,vim 是一种输入方式而不只是编辑器,几乎所有的 ide 都有 vim plugin,浏览器也有相应的 plugin 。
    levelworm
        19
    levelworm  
       2021-09-10 23:13:19 +08:00
    @frankyzf 的确。其实我还挺喜欢 vim 这个输入风格的,他有点逻辑性,不像其他编辑器,基本上就是硬背或者用熟了肌肉反应。
    kkocdko
        20
    kkocdko  
       2021-09-10 23:14:23 +08:00 via Android
    感觉 vim 没必要深入学,只要大概熟练,能在自己编译的 linux 或者其他纯命令行环境里用就行了
    levelworm
        21
    levelworm  
       2021-09-10 23:22:56 +08:00
    @ChrisFreeMan 多谢。其实我有点比较好奇,vim 是否支持对语义上的结构进行编辑?我可能说的不专业,所谓语义上的意思,我举个例子,比如说很多语言都有 block 这个概念,那么 vim 是否支持比如说一组快捷键选中 /删除 /拷贝一个 block ?
    nalzok
        22
    nalzok  
       2021-09-11 00:40:21 +08:00
    @frankyzf 确实,vim 最大的特色是 modal editing,类似的编辑器还有 kakoune
    agagega
        23
    agagega  
       2021-09-11 01:51:21 +08:00 via iPhone
    @levelworm
    Text Objects

    我从 17 年开始自己弄了一套基本的 Vim 配置,四年来没怎么动过,跨越的笔记本和服务器加起来十多二十台了吧,很舒服,这个投入产出比很高。而且 Vim 移植性比 Emacs 强多了,很多老点的系统里都能找到 Vim 8,然而 Emacs 版本却不够装常见的 Doom 或者 Spacemacs 之类
    ChrisFreeMan
        24
    ChrisFreeMan  
    OP
       2021-09-11 05:11:37 +08:00
    @levelworm 你说的块具体是啥不清楚但是 vim 有超级多的方式去选中你要的区域,比如( )“” { } [ ] ` ` ' ' 这些内容可以在选中情况下:shift v, i 加上需要进入的块里面的符号,比如要进入{ }内,就 shift v i { 或者 }, 你就会在 VISUAL 模式下选中{ }中的所有内容,类似这些,魔法操作还有很多,要自己去试试就会发现很有意思,有点飞的感觉
    ChrisFreeMan
        25
    ChrisFreeMan  
    OP
       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
        26
    ykk  
       2021-09-11 17:12:35 +08:00
    挺好的,我用 gedit + pycharm
    Dragonphy
        27
    Dragonphy  
       2021-09-11 18:47:46 +08:00
    我就用 VIM 修改一些配置文件,其余的都是 VS Code 了
    zhea55
        28
    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
        29
    piping  
       2021-09-12 03:53:47 +08:00
    @zhea55 vim 里面找代码我用三次键盘敲击就行 <leader>gd 映射到 cscope 的查找当前光标下的单词。这个方法同样适用于 lsp 插件。你说的几个功能都是可以自己配置的,操作用两三个按键就完成了
    ChrisFreeMan
        30
    ChrisFreeMan  
    OP
       2021-09-12 10:27:11 +08:00
    @zhea55 你说的这些个功能,算是基本功能了,vim 都有现成的,你说的项目内搜索代码 ctrlsf.vim 插件可以替代,它就是模仿的 sublimeText,还可以实时预览查找。变量全部重命名,用 coc.nvim,说白了你还是喜欢熟食,建议你去用一些开箱即用的 vim IDE 比如 SpaceVim, 又或者是基于 neovim 的 NvChad, 选择了用 vim 就要学会自己打猎,功能不会凭空跑出来,这就是为什么有些人的配置有攒了 10 年。
    JetMac
        31
    JetMac  
       2021-09-12 21:46:47 +08:00

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


    -----

    只能说你对 Vim 知之甚少,不要对不了解的事物轻易评价。
    jdhao
        32
    jdhao  
       2021-09-13 00:46:53 +08:00
    @zhea55 如果用 LSP 的话,也很快啊,譬如我配置的快捷键是 <leader>rn,那我按下这三个键,然后输入新的变量名就可以了,你的认识还停留在古老时代。
    seyoatda
        33
    seyoatda  
       2021-09-13 13:48:36 +08:00
    很多人说 VIM 没有 IDE 好用,但是本来就是配合着 IDE 用的啊。像开发 java 肯定是用 Intellij, 没人会用 Vim 开发,但是用 IDE 里的 vim 插件可以大大减少鼠标的使用率,提高效率,这不就和快捷键是一个道理。
    yuancoder
        34
    yuancoder  
       2021-09-13 18:00:17 +08:00
    使用 vim 的好处是拿起 terminal 就能开干
    FGW
        35
    FGW  
       2021-10-22 13:36:55 +08:00
    @zhea55 给你一个快捷键一个就行了是不是更快
    nnoremap & :<c-u>/g<home>%s/<c-r><c-w>/
    按& 输入替换内容
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3111 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:24 · PVG 22:24 · LAX 06:24 · JFK 09:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.