V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ZeroW
V2EX  ›  程序员

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

  •  1
     
  •   ZeroW · May 22, 2018 via Android · 26315 views
    This topic created in 2905 days ago, the information mentioned may be changed or developed.
    149 replies    2019-04-18 17:21:59 +08:00
    1  2  
    xsown
        101
    xsown  
       May 23, 2018
    @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  
       May 23, 2018
    @xsown hmm 你知道 Sublime、Atom、VSCode 几乎都照搬了 Emacs 快捷键(因为无状态比较符合直觉)。另外 Mac OS 全局支持 Emacs 快捷键,包括在这个 V2 编辑窗口中。
    lightening
        103
    lightening  
       May 23, 2018
    @xsown 是的,normal 模式有些操作确实很方便。但是我发现很多情况下,基于传统的 先选择再操作,并没有增加很多操作量。比如 diw 删除一个单词,和按住 cmd, D 再删除,一样都是按 3 个键……
    行内 f 某个字符快速跳转过去等功能,其实都很容易写插件解决,只是要多一个辅助键。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    GUI 也不是万能的,IDE 的 Prefereces 里面照样一堆配置,很多配置你甚至搞不清在哪个节点,于是要么问 google,要么一页一页的翻,最后才找到配置。
    pony279
        142
    pony279  
       May 24, 2018
    @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  
       May 24, 2018
    @pony279
    > hmm... 这样学习成本比较高
    其实也并没有很高,我都用 Sublime :-)。而且,所有这些除 Vim 以外的编辑器 /IDE 都实现了基本的 Emacs 快捷键,其实兼容性很高。至于某语言专用 IDE 的专有 features,本来就是要单独学的嘛。
    pony279
        144
    pony279  
       May 24, 2018
    > 我提供一个初步的思路给关心这个问题的其他人,用 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  
       May 24, 2018
    DiamondbacK
        146
    DiamondbacK  
       May 24, 2018
    @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  
       May 24, 2018
    @pony279 #144
    又发现我的 Alt 也很好按,也可以考虑用 Alt 组合键。
    Pegasus
        148
    Pegasus  
       Jul 8, 2018
    可以看看这个 vim 视频 https://zhuanlan.zhihu.com/vim-video
    jkhere
        149
    jkhere  
       Apr 18, 2019
    现在接手了构建工程,需要经常改动一大批 shell 脚本(改动变化不大,但变化的地方多),比较适合使用 shell。如果正常代码开发还是 IDE 效率高。
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4070 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 127ms · UTC 10:19 · PVG 18:19 · LAX 03:19 · JFK 06:19
    ♥ Do have faith in what you're doing.