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

为什么都说 vim 好用,简单体验过后并没有惊艳的感觉啊,求解释~

  •  1
     
  •   ZeroW · 2018-05-22 20:11:56 +08:00 via Android · 24415 次点击
    这是一个创建于 2380 天前的主题,其中的信息可能已经有所发展或是发生改变。
    149 条回复    2019-04-18 17:21:59 +08:00
    1  2  
    xsown
        101
    xsown  
       2018-05-23 15:19:12 +08:00
    @lightening 还有一些细腻的操作也是很方便的,比如 normal 状态下的 yiw 复制单词、diw 删单词、shift i 或 a 跳行首或行尾编辑、shift v 行选、行内 f 某个字符快速跳转过去、xp 对调字符、等等,都是多模式换来的效率
    左右移动光标的时候我都是先一阵 w/b 最后才 h/l,会快很多。而普通编辑器要 w/b 操作,得一直按住 alt 键,而且有时候我会用 e 而不是 w 来正好停在某个我想要的字符上,alt+方向键也是做不到如此细腻的
    其它的诸如 shift j 拼接两行、o/O 插行编辑、句号重复操作、ctrl a/x 增减数字、ctrl u/U 改大小写等等,也是非常实用的,都是有 normal 模式才能做到如此简洁好用且符合直觉
    当然 emacs 也都可以做到,只是另一种小指疼痛的交换哲学而已 ;D
    lightening
        102
    lightening  
       2018-05-23 15:26:03 +08:00
    @xsown hmm 你知道 Sublime、Atom、VSCode 几乎都照搬了 Emacs 快捷键(因为无状态比较符合直觉)。另外 Mac OS 全局支持 Emacs 快捷键,包括在这个 V2 编辑窗口中。
    lightening
        103
    lightening  
       2018-05-23 15:31:43 +08:00
    @xsown 是的,normal 模式有些操作确实很方便。但是我发现很多情况下,基于传统的 先选择再操作,并没有增加很多操作量。比如 diw 删除一个单词,和按住 cmd, D 再删除,一样都是按 3 个键……
    行内 f 某个字符快速跳转过去等功能,其实都很容易写插件解决,只是要多一个辅助键。

    其实本质问题还是,是要多模式,还是在操作时多按一个辅助键。个人觉得把 ctrl 换到 caps 位后,多按一个辅助键很方便,我个人并不怀念 Vim 的多模式编辑。
    xsown
        104
    xsown  
       2018-05-23 15:33:41 +08:00
    @lightening 我知道呀,emacs 的 ctrl fbnp 我也经常用因为我键盘上没有方向键 XD
    我只是想说,vi/vim 的多模式是为了它的效率服务的,在频繁的文字调整时,整体效率确实是有显著提高的,至少对我来说是如此。这个观点针对的是 sublime/nano/textedit/notepad++等纯文本编辑器
    tylerdurden
        105
    tylerdurden  
       2018-05-23 15:35:59 +08:00
    这是钓鱼贴 这是钓鱼贴 这是钓鱼贴
    awesomes
        106
    awesomes  
       2018-05-23 15:37:51 +08:00
    习惯了搜狗你只会觉得用五笔的都是在装逼
    xsown
        107
    xsown  
       2018-05-23 15:40:26 +08:00
    @lightening diw 是删除光标所在位置的单词,比如 easy,你光标落在 e/a/s/y,都是删除这个单词。还可以用 ciw,删除之后立即原地进入 insert 模式,仅这个例子而言,对比普通文本编辑器,确实是便捷的,形成肌肉记忆之后再改回去很不习惯(先 alt 右到单词尾,再 alt shift 左选中单词,再 del,麻烦多了)
    snailsir
        108
    snailsir  
       2018-05-23 15:42:44 +08:00
    尝试着打开了 emacs,求退出去的方法 😂
    lightening
        109
    lightening  
       2018-05-23 15:43:54 +08:00
    @DiamondbacK
    @pony279

    是这样的,所有针对选区的操作,在多重选取后,都是分别作用于所有选区的,包括第三方插件;而且你可以做一系列连续操作而不用强求一条命令完成。

    Dot 可以替代一些多重选取的功能,但局限性比较大,毕竟只能重复一条命令。至于选取上的容错性,在选的时候就有容错啊。

    宏的话……哪个编辑器没有宏?

    @pony279
    这么说 NeoVim 已经可以实用了?上次 check 的时候,NeoVim 还不能正常日常使用。那真是可喜可贺,算是解决了一个问题。
    我指的多文件管理是以目录为基本单位,方便在目录内跳转,配合文件浏览器、模糊匹配、跳转到定义处、自动补全 import 等功能。
    Vimscript 懂得人多不多是个相对的概念啊。你现在是要和 Python 和 JavaScript 比懂得人数了……
    tylerdurden
        110
    tylerdurden  
       2018-05-23 15:45:14 +08:00
    一场圣战又要开始了,你们啊,还是太年轻。
    lightening
        111
    lightening  
       2018-05-23 15:47:02 +08:00
    @xsown 对啊,比如我有个 easy,开始时光标放在 e/a/s/y 任意位置,cmd + d 会选中 easy 单词,然后如果我要删除就按 delete,要修改就直接开始打字。按键数量其实比 ciw 还少一个 @_@
    xsown
        112
    xsown  
       2018-05-23 15:47:08 +08:00
    @lightening 我并没说多模式比辅助键更好,vi 和 emacs 对文本的操作方式各有利弊。我的观点是这两种方式都比普通纯文本编辑器( sublime text 等)在文字编辑的效率上更好。
    另外,这里说的是编辑器自身的理念,所以是朴素状态的比较。加了自己写的文本编辑插件,就已经不是大家认知上的 sublime 了
    gnaggnoyil
        113
    gnaggnoyil  
       2018-05-23 15:49:22 +08:00
    我就想提醒 LS 捧 vim 的各位,装 ycmd/cquery 的 vim 和什么插件都没装的 vim 是两个编辑器

    当然如果你说是 ssh 过去这种应用场景那当我没说,毕竟那种情况下没人会傻到用 nano.
    xsown
        114
    xsown  
       2018-05-23 15:52:36 +08:00
    @lightening 你说的好像是 sublime text 自己的快捷键。在各种代码编辑器里、textedit 里 cmd d 都没有效果。如果 sublime 自己有一套强化的快捷键并且很好用,那它也是个不错的选择
    lightening
        115
    lightening  
       2018-05-23 15:53:22 +08:00
    @xsown 我觉得你对 Sublime Text 等好像有些误解。
    Sublime、Atom、VSCode 都是直接支持 Emacs 操作方式的,所以他们不是你所说的“普通纯文本编辑器”啊。
    megachweng
        116
    megachweng  
       2018-05-23 15:58:09 +08:00 via iPhone
    个人感觉 vim 老是要按 esc 挺烦的,关键是 esc 还那么远
    xsown
        117
    xsown  
       2018-05-23 16:00:02 +08:00
    @lightening 可能我了解的有限,至少 emacs 的选区操作、cut、copy,yank 这几组,sublime、textedit 等等都不支持呀。我所理解的是那些编辑器只支持最基本的光标移动之类的快捷键,不然 jetbrains 的插件库里也不会有好几个 emacs 插件来补全进阶功能了
    wangjams4
        118
    wangjams4  
       2018-05-23 16:01:23 +08:00
    @coolesting 其实 IDE 在加个 vim 插件也差不多,没有很难吃吧。哈哈。
    nG29DOMuRYTWfcSr
        119
    nG29DOMuRYTWfcSr  
       2018-05-23 16:05:22 +08:00 via Android
    仔细读读这篇 vim 的教程吧,相信你会有收获:

    https://github.com/wsdjeg/vim-galore-zh_cn
    marcong95
        120
    marcong95  
       2018-05-23 16:09:59 +08:00
    所以我决定尝试一下 emacs (手动滑稽
    noNOno
        121
    noNOno  
       2018-05-23 16:18:38 +08:00
    @snailsir 退出
    ctrl+x
    ctrl+c
    fy
        122
    fy  
       2018-05-23 16:26:37 +08:00
    哇 这就 120 个回复了……

    还有什么成为大师后才体会到 vim 的牛逼都来了。。。

    就写代码这件事情来说,承认 vim 没有那么方便是件很难的事情吗?而且确实没有惊艳的感觉没毛病啊。

    用你认为好用的东西,做认为有意义的事情。吹捧工具是无聊的行为。
    calon
        123
    calon  
       2018-05-23 16:27:00 +08:00
    想搭车问问其他编辑器有重新选择的快捷键吗?类似于 Vim 中 gv 这样的
    这个功能救过我很多次啊
    snailsir
        124
    snailsir  
       2018-05-23 16:31:16 +08:00
    @noNOno 终于退出来了,好阔怕 😂
    noNOno
        125
    noNOno  
       2018-05-23 16:36:23 +08:00
    @fy 因为真的很好用....
    qf19910623
        126
    qf19910623  
       2018-05-23 16:39:17 +08:00
    曾经强迫自己去用了用 vim,最终还是滚回了 IDE,最烦的就是记一堆命令了,我的原则是能视图化的东西就不要用命令,我甚至认为要不是大多数开源项目都只支持 linux,我都想一辈子用 windows
    fy
        127
    fy  
       2018-05-23 16:41:43 +08:00
    @noNOno #125 我曾经也是一整年 ssh 连开发服务器,纯用 vim 写代码的人,还配置了不少插件。

    可能给我的印象没那么好吧,我还是喜欢开箱即用的现代程序编辑器。
    lightening
        128
    lightening  
       2018-05-23 16:52:13 +08:00
    @xsown 嗯,其实就是缺 kill-ring。
    PopeyeLau
        129
    PopeyeLau  
       2018-05-23 16:54:59 +08:00 via iPhone
    好用 效率明显提升。
    whnzy
        130
    whnzy  
       2018-05-23 17:46:44 +08:00
    从头到尾学习一下 vim,你会发现,vim 效率极高。个人使用 vim,但是感觉 emacs 太厉害了。
    zhangsen1992
        131
    zhangsen1992  
       2018-05-23 17:54:52 +08:00
    月经贴
    bao3
        132
    bao3  
       2018-05-23 20:54:41 +08:00 via iPhone
    从 2002 年用到现在,之前也是用一会放弃一会,无非就是个文本工具,直到后来搞定了几个很难的文本才顺道入门了 vim。一用就是 10 多年,这个工具是入门曲线非常陡的,可是后期收益大。其他工具是入门极易,前期收益大。楼主自己选择就好
    glues
        133
    glues  
       2018-05-23 20:59:00 +08:00
    @fy 承认自己智商低有那么难吗?
    RryLee
        134
    RryLee  
       2018-05-23 21:03:41 +08:00
    主要是没有击到你的痛点,不用着急,我从向往 vim 到开始使用 vim,经历了大概 5 年。
    可以从其他编辑器的 vim 模式开始,慢慢习惯之后后面就是安利党了
    fy
        135
    fy  
       2018-05-24 01:03:17 +08:00
    @glues #133 谢谢你向大家证明并没那么困难,为你的勇气鼓掌。
    chrisqin
        136
    chrisqin  
       2018-05-24 08:59:43 +08:00
    @awesomes 用搜狗五笔的请问怎么破
    bbsteel
        137
    bbsteel  
       2018-05-24 09:08:19 +08:00 via Android
    lz 还要什么解释,“简单体验过后”你就想惊艳的感觉,lz 还是小学生?
    caixiangyu17
        138
    caixiangyu17  
       2018-05-24 11:36:48 +08:00
    单从文字操作上来说 vim 的确要好用很多,不过 vim 这个编辑器装插件调试太麻烦了。
    所以喷气脑袋全家桶配 ideavim 完美解决,有的操作用 vim 有的用快捷键
    还有 vim 得 visual mode 超级好用,正则替换也比 ide 得替换好用,不过查找我倒是觉得 ide 得好用一些
    pony279
        139
    pony279  
       2018-05-24 15:48:21 +08:00
    @lightening

    > 宏的话……哪个编辑器没有宏?

    关于这点我必须要说一句:纯键盘操作 + 宏绝对是最好的搭配,VIM 是第一个让我感受到宏的强大的编辑器。

    我用其他 GUI 编辑器的时候从来没有想过要用宏,即使我知道大部分编辑器都有宏。因为这类编辑器根本不适合纯键盘操作。

    > 我指的多文件管理是以目录为基本单位,方便在目录内跳转,配合文件浏览器、模糊匹配、跳转到定义处、自动补全 import 等功能。

    “跳转到定义处、自动补全 import 等功能。 ” 属于语言支持的部分,这部分 LSP 插件,还有各类语言插件已经可以做的足够好了: https://github.com/autozimu/LanguageClient-neovim

    文件浏览,vim 自带的够用,如果喜欢多窗口,有人用 NerdTree。模糊搜索丝毫不差: https://github.com/junegunn/fzf

    大部分 GUI 编辑器能做的事情,理论上 vim 都能做,也许没那么酷炫,但是效率并不差。除了展示图片,拖控件这种硬伤真心没办法。VIM 最失败的地方是当初核心维护者不思进取,拿 unix 哲学当偷懒的挡箭牌,以至于后来有了 neovim 这样的项目。
    lightening
        140
    lightening  
       2018-05-24 15:53:25 +08:00
    @pony279 我用 Sublime Text 也根本不需要鼠标啊。我觉得,如果你像学 Vim 一样学一个其他编辑器,你会发现他们都很好用。
    pony279
        141
    pony279  
       2018-05-24 16:03:19 +08:00
    @qf19910623

    > 曾经强迫自己去用了用 vim,最终还是滚回了 IDE,最烦的就是记一堆命令了,我的原则是能视图化的东西就不要用命令,我甚至认为要不是大多数开源项目都只支持 linux,我都想一辈子用 windows

    "最烦的就是记一堆命令了"

    大部分初学者都有这样的恐惧。然而事实并不是这样子的。

    日常用的命令也就那几条,剩下的,偶尔用,过几天就忘了。

    那怎么办?查文档啊,vim 的文档系统非常好用。有一个系统的感觉之后,查问当找答案随手的事情。实在不行,问 google 啊。

    linux 的 man/info 也一样,遇到忘记的选项,查就是了。还有 cheat 之类的工具,帮助记录各种命令的常用写法,根本不需要全部记下来。常用的,自然而然就熟了,不常用的,从来也不会被落下。

    GUI 也不是万能的,IDE 的 Prefereces 里面照样一堆配置,很多配置你甚至搞不清在哪个节点,于是要么问 google,要么一页一页的翻,最后才找到配置。
    pony279
        142
    pony279  
       2018-05-24 16:20:22 +08:00
    @lightening

    > 我用 Sublime Text 也根本不需要鼠标啊

    我知道 Sublime 有很多快捷键。但是习惯了 vim 以后会习惯不了别家的快捷键的。因为不需要各种 ctrl,alt,上下左右。text object 的概念也恨实用啊。

    也许在 IDE 里面安装 VIM 插件是一种不错的选择吧。

    > 如果你像学 Vim 一样学一个其他编辑器

    hmm... 这样学习成本比较高,写 C/C++ 的时候用 VS ?写 Java 的时候用 IDEA ?写 Python 的时候 Pycharm。HTML / CSS ?

    > 你会发现他们都很好用。

    我并没有认为哪个编辑器 / IDE 不好用,更多的是个人习惯和喜好。

    就像知乎上有个答案说的:“如果让我选择用 Vim 还是 IDE 来证明自己, 我当然是愿意用 Vim. 因为 Vim 才是我喜欢的范, 但是如果别人用 IDE 来证明了自己, 我也同样会拍手叫好, 因为他们已经证明了, 用什么重要么?” ( https://www.zhihu.com/search?type=content&q=vim)
    lightening
        143
    lightening  
       2018-05-24 16:36:46 +08:00
    @pony279
    > hmm... 这样学习成本比较高
    其实也并没有很高,我都用 Sublime :-)。而且,所有这些除 Vim 以外的编辑器 /IDE 都实现了基本的 Emacs 快捷键,其实兼容性很高。至于某语言专用 IDE 的专有 features,本来就是要单独学的嘛。
    pony279
        144
    pony279  
       2018-05-24 17:31:21 +08:00
    > 我提供一个初步的思路给关心这个问题的其他人,用 vvj 在 insert mode 下从任意位置移动光标到下一行行首:
    :inoremap vvj <Esc>jI

    neovim 可以区分 <c-j> 和 enter 了

    所以 insert 模式下可以

    imap <c-j> <c-o>j
    imap <c-k> <c-o>k

    不过我感觉作用不大。我习惯的跳转是在 normal 模式下 <num> + j/k,然后用 f/t + <key> 到我想要的位置。

    我常用的 insert 模式跳转是 EMACS 的 c-a 和 c-e,直接到行首,行尾很方便。

    一直感觉基于 word 的移动在 insert 模式下好像也有用,可是 map 了又总是忘记用它,也许是错觉吧
    pony279
        145
    pony279  
       2018-05-24 17:31:56 +08:00
    DiamondbacK
        146
    DiamondbacK  
       2018-05-24 20:57:02 +08:00
    @pony279 #144
    insert mode 下 <c-e> 和 <c-y> 这一对默认功能我还是常用的,所以我不倾向于使用组合键。
    我也从来不在 insert mode 下移动光标。
    如果一定要,我或许会考虑用类似 <leader> 键的模式来在 insert mode 下移动光标,除了前面临时想出的 vv,我的 <Esc> 和 <BS> 在 insert mode 都是用不着的,可以充当 <leader>。而且我的键盘比较特殊,这两个键都不用挪动手掌。

    顺便试了一下,Vim 7.4 和 Vim 8 也区分 <c-j> 和 <Enter>。不过 7.4 后期基本等于 8 了,不能说明 Vim 7 都区分。<c-m> 是跟 <Enter> 一样的。
    DiamondbacK
        147
    DiamondbacK  
       2018-05-24 20:59:52 +08:00
    @pony279 #144
    又发现我的 Alt 也很好按,也可以考虑用 Alt 组合键。
    Pegasus
        148
    Pegasus  
       2018-07-08 09:00:10 +08:00
    可以看看这个 vim 视频 https://zhuanlan.zhihu.com/vim-video
    jkhere
        149
    jkhere  
       2019-04-18 17:21:59 +08:00
    现在接手了构建工程,需要经常改动一大批 shell 脚本(改动变化不大,但变化的地方多),比较适合使用 shell。如果正常代码开发还是 IDE 效率高。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3360 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.