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

VIM 有什么功能是 Sublime 无法实现的?

  •  
  •   sicongliu · 2015-12-24 03:18:24 +08:00 · 19538 次点击
    这是一个创建于 1214 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一直用 Sublime Text3 ,看到网上很多 VIM fans 想必 VIM 一定有什么独特功能是 ST 无法实现的。
    花了两天时间研究 VIM, 配置好 vimrc 装好一系列插件,发现 VIM 除了模式概念是其他编辑器没有的之外并没有什么秒杀 ST 的地方。反倒是 ST 有很多比 VIM 舒服的地方比如:

    ST 速度奇快,不装插件的 VIM 在 mac 下都没有 ST 快,装了一大堆插件的 VIM 就更没法比了.
    ST 开箱功能齐全, CRTLP, CTRL+D 多选等功能虽然 VIM 可以通过插件实现但是不如 ST 原生的顺手.
    ST 插件管理 package control 比 VIM 的 vundle 更加直观方便.
    感觉 ST 搭配一些插件和可定义快捷键并不比 VIM 的命令模式差,更何况 ST 自己也有命令模式.
    ST 在 mac 下对 trackpad 和鼠标支持很平滑,在 mac 下其实多用用 trackpad 并不影响效率因为 trackpad 离键盘区域很近。
    169 回复  |  直到 2016-03-03 17:21:10 +08:00
    1  2  
        101
    iEverX   2015-12-25 00:05:48 +08:00
    vim 是开源的, sublime 是花钱的,所以转到 atom 和 vscode 了
        102
    iEverX   2015-12-25 00:06:46 +08:00
    vim 是开源的, sublime 需要买,所以转到 atom 和 vscode 了
        103
    chemzqm   2015-12-25 00:09:42 +08:00
    vimscript....会了以后才发现编辑器还可以这么玩
        104
    djyde   2015-12-25 01:37:22 +08:00   ♥ 2
    我不明白为什么很多人说 vi 因为可以在 terminal 里使用就『完胜』 sublime.. 很想知道大家都是直接在 server 上写代码的吗?我们讨论的难道不是日常 coding 时的对比么?很多人总是喜欢先利用别人的局限假定一个场景然后说『你能这样吗?』、『你用它这样做给我看看?』

    还有人讨论打开几百 M 的文件对比速度的。我唯一因为打开文件速度慢而舍弃的编辑器是 Atom ,因为打开一个 1MB 以上的文件或者 uglify 后的 single line 文件都会慢得不能让我接受,这在日常开发都是经常会遇到的。我又很想知道大家在日常开发的时候什么会打开几百 M 的文件?这种对比真是无聊。

    我很少用 vi ,但是我相信 vi 能做的事情和 sublime 能做的事情是同样的。谁也不会比谁多或比谁少。我见过很多和我一样是写前端的,用 vi 写前端和我用 sublime 写没多大区别, syntax highlight 你有我也有。他用 vi 很开心,我用 sublime 也很开心。反正只要我们都是用两空格缩进我就开心,管你用什么 editor. :P

    用 vi 还是用 sublime ,我觉得很大部分的选择其实在于自己先接触的是哪一个,先用习惯了一个,我觉得很少人会有时间和精力再学习另一个了。我也经常羡慕用 vi 用得很 6 的朋友(因为我个人很喜欢 CLI ),但是学 vi 对现在的我来说已经没有足够的精力(我是尝试过的),而且没多大的必要了。

    说用 vi 是在装逼的人我都不知道说啥好,不过说出这种话的人如果不是出于自嘲,大概也称不上是一个 coder...
        105
    bramblex   2015-12-25 01:42:46 +08:00
    @djyde

    vim 和 sublime 不是一个层次的东西。

    当然啦,如果仅仅知识拿来编辑东西,那其实没多大差别。
        106
    zonghua   2015-12-25 03:27:13 +08:00 via iPhone
    @matrix67 为了记住快捷键,你废了多少苦心。
        107
    KentY   2015-12-25 05:33:16 +08:00
    @zonghua 当你想用电脑快速打字, 你一定要熟悉键盘布局, 注意, 常用的键盘布局你要适应一段才能盲打. 你也费了苦心, 但这个值得.

    顺便, "废"是错别字, 这里纠正一下, 因为"苦心"不会白"废"
        108
    ncisoft   2015-12-25 06:08:39 +08:00
    @djyde 回答你我不明白为什么很多人说 vi 因为可以在 terminal 里使用就『完胜』 sublime 的问题吧

    做为开发环境,同时需要一个编辑窗口,一个编译窗口(可选),一个单元测试窗口,一个服务器启动停止窗口(看日志总是要的),一个数据库操作窗口(可选),一个帮助窗口查 manual (可选),若想才在同一屏上都能操作,以我有限的知识,这只能用平铺窗口管理器或者是更简单的 tmux 才能达成目标,否则就得不停地切换窗口。

    即使是不在 server 上写代码,也不妨碍用这种方式做为开发方式。 sublime 不能在 terminal 上用,也就使得上述的使用方式无法成立, vim/emacs 则完全不同,天生适应 terminal ,所以说完胜。

    可能因为你是写前端的,体会不到这种开发模式的便利性,但如果是后端甚至是内核开发,就完全不同了。
        109
    KentY   2015-12-25 06:16:24 +08:00
    @ncisoft 非常同意你的意见. 我一直用 vim, 但是 80%以上都是在终端用 vim , tmux, c-z, fg 非常顺, gvim 虽然优势很多, 比如色彩支持,一写特殊按键的映射容易度等, 但实在不愿意没事就 alt-tab 换窗口. 在这个问题回答里, 我也提到这个, 虽然是主观看法:

    http://stackoverflow.com/questions/22517896/linux-gvim-vs-vim/22520443#22520443
        110
    ncisoft   2015-12-25 07:27:35 +08:00 via Android
    @djyde 补充,在平铺窗口管理器上用 ST ,还是可以的,可惜我没找到 winWindows 上可用的平铺窗口管理器,窗口边框实在太大,远不如 tmux 细细的一条线来切分窗口看着清爽(在 tmux 中叫 panel )
        111
    v2014   2015-12-25 07:46:22 +08:00
    vim 敢叫 vim , Sublime 不敢叫 vim
        112
    dsdshcym   2015-12-25 08:26:17 +08:00 via Android
    @djyde
    因为题目问的是 vim 能做而 sublime 做不了的事。

    所以当然是拿 sublime 的局限来说事了,毕竟这是能比较明显地看出来的。如果这都不让说,该如何回答题目呢?
        113
    IndexXuan   2015-12-25 08:26:53 +08:00 via iPhone
    两个都用,近一年 vim 越来越多
    1. 按键绑定随心所欲,语法简单(最爱行内移动绑定 emacs 按键)。
    2. 和命令行窗口结合,轻量快捷。
    3. 底部直接执行命令,功能强大。
    4. 原生的 vim 模式比插件 vim 模式会强大很多!!!
    5. vim 定制性更随心所欲一些,网上 cp 几行 vimscript ,就更加一个很有趣的功能很好玩。

    不得不说,写代码重点是脑子。。。多写。。。少质疑别人的工具,对两者用户都是。。。
        114
    sinux   2015-12-25 08:46:11 +08:00
    这就好比 a1 驾照和 C 驾照的区别。会 vim 去用普通编辑器也不过就是随便用用 ctrl shift 之类的问题而已,而只会 SublimeText 可算不上什么本事。你也知道 SublimeText 的便利性,便利到谁都会用,反过来则不是这样的,我见过很多人在命令行下甚至不会用 git 的默认的编辑器 nano ,这算是 CLI 下最简单的了吧?
        115
    djyde   2015-12-25 09:15:25 +08:00 via Android
    @dsdshcym 我不同同意的是说『完胜』
        116
    jemyzhang   2015-12-25 09:31:23 +08:00
    比如说命令行使用,还有如 @sinux 所说和其他工具集成
        117
    hei1000   2015-12-25 09:36:12 +08:00 via Android
    @chemzqm vimscript ?你是没用过 Emacs 吧
        118
    hei1000   2015-12-25 09:45:12 +08:00 via Android
    @matrix67 什么是彩虹分割?
        119
    qianlifeng   2015-12-25 09:51:46 +08:00
    sublime 有宏么?
        120
    ben548   2015-12-25 09:55:35 +08:00
    逼格
        121
    zhaoshanhe   2015-12-25 10:02:03 +08:00
    我感觉记事本用的 6 也是一样的 屌不屌还得看代码 用啥写代码完全看个人喜好
        122
    lightening   2015-12-25 10:21:52 +08:00
    @chemzqm Sublime 用 Python ,怎么看都比 Vimscript 好用。
        123
    lightening   2015-12-25 10:25:02 +08:00
    @gmgardus 这个现在很多人推崇。因为现在如果你用笔记本的的话,鼠标(触摸板)离你平时打字的位置其实是非常近的,移过去操作一下其实非常快。
        124
    ispinfx   2015-12-25 10:28:35 +08:00
    Emacs 用户表示情绪稳定… Elisp 和 Vimscript ,果断前者…
        125
    luikore   2015-12-25 10:37:06 +08:00
    sublime 用 python
    emacs 用 elisp
    atom 用 coffee
    vim 可以用 vimscript / lua / python / ruby / perl / tcl

    而 textmate, 可以用任何语言写插件

    http://screencasts.textmate.org/intro_to_tm_dialog.mov
        126
    zxdhuge   2015-12-25 10:41:12 +08:00
    @matrix67 彩虹分割是什么命令啊?
        127
    matrix67   2015-12-25 10:42:42 +08:00 via Android
    统一回复一下,彩虹分割是个插件,我绑定一个快捷键而已
        128
    datou552211   2015-12-25 10:59:53 +08:00 via iPhone
    @hackevin 当遇到堡垒机
        129
    bramblex   2015-12-25 11:04:18 +08:00
    @lightening vim 还能用 python / lua / ruby 写插件呢……无知不要拿来炫耀
        130
    Changxu   2015-12-25 11:07:03 +08:00
    就觉得 Vim 的编辑键位比较方便,没别的了。。。所以我现在用 Emacs 但是编辑键位还是 Vim 的
        131
    bramblex   2015-12-25 11:17:44 +08:00
    @luikore 其实 vim 命令行的亲和性使得 vim 可以轻松利用任何命令行工具来增强自己的功能……这点还是必将强的。

    而且 vim 打开了就是 vimscrpt 的 repl ,这跟支持 xxx 语言的插件根本不可同日而语。
        132
    zonghua   2015-12-25 11:40:34 +08:00 via iPhone
    @KentY 谢谢。输入法问题,出糗。
        133
    xuboying   2015-12-25 11:48:50 +08:00 via Android
    vvim 的 Python 补全没有 vs 做的好,所以我用 vs 啦
        134
    bikegl   2015-12-25 12:34:19 +08:00
    vim 已经内化到我的系统中,用的时候感觉不到它的存在
        135
    zzn   2015-12-25 12:53:27 +08:00
    彩虹分割是什么鬼?
        136
    ncisoft   2015-12-25 13:41:37 +08:00
    @KentY 看了你的 retmux ,非常棒,目前 tmux 1.9a 之后支持 pannel 最大化和恢复, prefix c-z 即可,很好用
        137
    ncisoft   2015-12-25 14:10:16 +08:00
    更爽歪歪的是, tmux 可以配置成 vim keybind 方式使用, copy/paste 用一样的方法。没有一个工具,具备 vim keybind 这样广泛的病毒特征。学会 ST 的 keybind 只能自己暗爽,换个环境就得苦逼地训练新的肌肉记忆。说句透露年龄的话, 20 多年前,我上大学一上机就用的是 vi ,一色的 vt 终端,没想到到了现在基本用法还没过时,站在学了不过时的角度来说,到迄今为止, vim 完胜 ST 。

    从 IDE 角度来说,我用过感觉最好的是 Ietellij IDEA ,重构不要太爽利,自动补全这些就不用说了,写 java 必备啊,写 c 、脚本语言这种类库不那么复杂、类名、变量名不那么冗长的, vim 挺好用。补说一句, IDEA 也提供 vim keybinding
        138
    zlandjj   2015-12-25 14:30:32 +08:00
    vim 不用鼠标。 尤其是服务端码农。
        139
    zlandjj   2015-12-25 14:42:48 +08:00
    为什么我在这里回答问题还减分呢? vim 确实是可以不用鼠标的啊。
        140
    luikore   2015-12-25 14:45:38 +08:00
    @bramblex 调用命令行工具都没问题的.

    textmate 不同的地方是命令脚本通过 shared file descriptor 和编辑器通信, 所以在任何语言里都能控制编辑器行为, 而其他编辑器最终还是得写宿主语言才能控制编辑器行为

    interactive shell 只是把 terminal 的功能复制到编辑器中而已, 不太符合 TextMate 的 unix 哲学, 要做插件也可以像 r-console-rdaemon 这么做
        141
    bramblex   2015-12-25 15:03:07 +08:00
    @luikore

    emacs 我不熟。那你一定没有听过 vim 的 remote 模式了
        142
    bramblex   2015-12-25 15:04:38 +08:00
    @luikore

    vim / emacs 比较像一台通用计算机,反正最终都是在他们的 CPU 之上跑。
    TextMate 像一台可以 ssh 过去的小霸王……
        143
    luikore   2015-12-25 15:38:01 +08:00
    @bramblex 相反, 我对绝大部分编辑器都熟...

    我平时是 vim 和 textmate 混用, vim 的一个重要优势是用户群比 textmate 大, 有很多脑洞插件, 但 remote 模式不是我用 vim 的原因...

    而主要用 textmate 是因为用户体验比较好, 例如字体渲染, 动画效果等, 插件也最容易制作 (vim 和 emacs 里我也写过一些, 但并没有在 textmate 写插件命令的体验好)
        144
    bramblex   2015-12-25 15:46:42 +08:00
    @luikore

    你说的这些就不在讨论范围了,要说用户体验,怎么样也轮不到 vim 了
        145
    slrey   2015-12-25 17:21:15 +08:00
    @ncisoft 非常同意。 man 手册里上下移动也是 jk ,感觉 vi 的基因已经融入到系统里了。
        146
    KentY   2015-12-25 17:29:33 +08:00
    我就不回复具体人了.
    有朋友说道触摸板, 鼠标, 离键盘近所以效率也不低.

    这些其实也对, 但是还是说, vim, emacs 这些编辑器, 的确是支持鼠标的, 可是他们优势不是对鼠标能做什么高级功能. 你用好了别说手离开键盘, 手都不想离开键盘的 home row. 不是说这就能多快多有效率, 只是看问题的角度不同.
        147
    KentY   2015-12-25 17:35:22 +08:00
    @ncisoft 谢谢你试用 retmux 其实两年多前在我写这个的时候, 已经有一些类似功能的应用了, 甚至提供更多的功能, 比如进程的恢复等. 但是我想要个备份, 恢复起来很快很方便的. 一些软件要自己手写一个配置文件, 然后 tmux 起的时候加载那个, 形成初始的布局和目录啊等. 为什么不能在 tmux 用的时候觉得这个布局或状态我以后会用, 一行命令就存了. 呵呵. 就跟这个帖子争论的一样, 各人使用习惯和角度不同吧.

    另, 你有个笔误, 你说的 tmux 功能应该是 prefix + **z**, 不是 prefix + c-z, 因为 c-z 怎么都会把 tmux 给扔后面去;)
        148
    mozartgho   2015-12-25 17:38:30 +08:00
    vim 的搜索非常难用,我非常喜欢 SublimeText 和 notepad++的搜索功能,搜索结果直接显示在一个 panel 里,单击结果跳转到对应行
        149
    KentY   2015-12-25 17:40:50 +08:00
    @ncisoft 我也是用了 15+年的 eclipse, 换到最后这个公司统一要求 intellij, 硬着头皮换了以后发现, 200 多欧的价格不是白给的, 确实比 eclipse 厉害, 只是没有 vim 真没法顺利的用.幸好有 idea-vim 的插件, 虽然和 vim 自身无法比, 但比 eclipse 里的一系列插件好太多了.

    还有在 intellij 类的 ide 里, 配置好外部编辑器 vim, 也觉得天空又亮了一些.
        150
    KentY   2015-12-25 17:44:23 +08:00
    @mozartgho :h vimgrep :h quickfix :h location-list :h :g
    搜索是文本编辑器最最常用的功能之一了, 作为 vim 这种那么多人用的(先不说好坏)编辑器, 搜索怎么会"非常难用" ? 你说呢? 搜索的方法真太多了. 你说的那个放到一个 panel 里跳转的搜索大概 20 年前就没问题了.可能你没发现.. 还有比较常用的, 比如搜索一个字符串, 把包含这个字符串的所有行都 copy 出来等等这些...都是 vim 默认就带的了
        151
    billlee   2015-12-25 19:50:41 +08:00
    less
    vim
    readline vi mode
    tmux vi keybinding
    都能用同一套快捷键
        152
    xuboying   2015-12-25 22:14:28 +08:00
    借这个帖子的人气,请教一下如何让 vim 的 wxpython 匹配做的和 visual studio 一样好
    毕竟可能会到 linux 下开发,就没有 vs 用了
    https://pbs.twimg.com/media/CW1PtWTUEAAsQco.png:large
        153
    ncisoft   2015-12-25 23:27:32 +08:00 via Android
    @billlee 谢谢普及。我一直都是用 more ,英文博客总是用 less ,原来如此
        154
    wweir   2015-12-25 23:56:56 +08:00 via Android
    @sinux 哈哈哈😄,习惯了 vi , nano 对我而言就是一种折磨
        155
    Arnie97   2015-12-26 00:06:51 +08:00
    @billlee readline 默认是 emacs …
    作为 vim 党,好不容易学会了这套热键,不久就发现,原来还有 vi mode …
        156
    Arnie97   2015-12-26 00:11:02 +08:00
    @wweir 没错,每次装好系统都要 pacman -R nano …
        157
    billlee   2015-12-26 00:16:33 +08:00
    @Arnie97 可以 export EDITOR=vim 的。。
        158
    tracyone   2015-12-26 00:33:41 +08:00 via Android
    @mozartgho easygrep 插件达到同样的效果,或者 ag.vim 更快的搜索速度,需要安装 ag 命令。他们当然都支持正则……简单映射下即可,可参考我配置。
    @djyde 有部分职业的人的确实在服务器上写代码,比如说我啦,嵌入式 linux 。
        159
    Earthman   2015-12-26 00:34:54 +08:00 via Android
    你们那么叼,怎么没人写高阶 vim 教程
        160
    ncisoft   2015-12-26 00:42:03 +08:00 via Android
    @Earthman 没义务+没心情,叼不
        161
    alvin2ye   2015-12-26 00:47:14 +08:00
    @luikore 我们居然用法一样.

    看代码时我大多是 Textmate 写代码 macvim
        162
    tracyone   2015-12-26 00:48:03 +08:00 via Android
    @Earthman 你看了这么多。回复你也知道,用 vim 最基本就是记住众多按键,然后练熟悉,简单改改配置,用用插件,这算低阶咯,高阶就直接写插件或者给 vim 贡献代码,给你几个链接,看看程序员多疯狂。
    https://github.com/Shougo
    https://github.com/tpope
        163
    Epirus   2015-12-26 03:01:10 +08:00
    vim+tmux =♡(IDE)

    Undotree macros goyo(like ai-writer) nvim(terminal ) ...

    to be lazy~
        164
    Evovil   2015-12-26 09:08:04 +08:00
    @djyde 话说的不要这么绝对。。就同 @tracyone 一样, 1 我就在服务器写代码,编译组件和调试 2 我也做嵌入式平台,涉及到交叉编译,没有 vim/Emacs ,怎么写代码??
    这还不是关键,怎么调试?
    vim 和 gdb 配合仿真器调试最好不过了
    另, linux 内核调试, linux 驱动调试和编写? Sublime ?。呵呵

    开着 windows 拿鼠标在花花绿绿的 os 下写代码的,不要把你们的想法强加在只有个黑屏幕满屏幕密密麻麻字写代码的人身上。。
    所谓神器
    就是。。。。。。。
    在什么都没有(甚至鼠标)的情况下,可以写代码,编译,调试。
    上手之快,效率之高。

    我曾经 ssh 到服务器就用 vim 和 ipdb 紧急调试了服务器发布的源码。 sublime ?
        165
    dalang   2015-12-26 10:25:18 +08:00 via iPhone
    要想挑起编辑器的圣战,我觉得还轮不到 ST 来插一脚吧
        166
    bugsnail   2015-12-26 10:42:53 +08:00
    楼主, 你用 sublime text 和 vim 打开一个 40M 以上的文本文件试试, 别说遇不到, log 大于 40M 的有的是, 如果加上其它操作, 呵呵

    各有各的优点, 只是基本功 VIM 是无话可说的
        167
    yan97ao   2015-12-26 14:28:15 +08:00
    帮助乌干达的小朋友
        168
    zhaihaifeng123   2015-12-26 17:17:25 +08:00
    @djyde 介绍一下, ICer 确实都在 server 写代码和工作的, vim 是基本工作技能之一。
        169
    ghostheaven   2016-03-03 17:21:10 +08:00 via Smartisan T1
    在没有 ui 的服务器上
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2162 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 07:17 · PVG 15:17 · LAX 00:17 · JFK 03:17
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1