既然你们说 Vim 这么好,那么 Vim 要怎么入门呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Pastsong
V2EX    Vim

既然你们说 Vim 这么好,那么 Vim 要怎么入门呢?

  •  
  •   Pastsong 2015-12-26 10:53:41 +08:00 13479 次点击
    这是一个创建于 3665 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 OS X 下是用 MacVim 好还是, Terminal 里面用 Vim 好,还是 iTerm2 里用 Homebrew 装的 Vim 好?

    还有别人的 .vimrc 要怎么自己配才好用?

    需要在墙上挂个 Vim 快捷键 Cheatsheet 吗?

    64 条回复    2018-10-07 04:53:20 +08:00
    tangbao
        1
    tangbao  
       2015-12-26 11:01:52 +08:00   2
    老老实实用 Sublime ,别为了用一个工具而去适应和学习这个工具。多关注你用这些工具产出的东西,而不是在用什么,如何去用什么工具。
    songjiaxin2008
        2
    songjiaxin2008  
       2015-12-26 11:01:58 +08:00
    jiyinyiyong
        3
    jiyinyiyong  
       2015-12-26 11:14:50 +08:00
    第一步, 安装 Sublime Text, 第二步, 开启 vintage
    https://www.sublimetext.com/docs/2/vintage.html
    第三步, 掌握 Vim 快捷键
    http://coolshell.cn/articles/5426.html
    第四步, 脱离 Sublime 纯粹使用 Vim(该步骤未经本人验证)

    Cheatsheet 刚开始看看就好了, 用多了看 Cheatsheet 太慢
    iTerm2 好, 哪个版本的 Vim 我也不清楚, 不过记得看哪个版本号更高吧
    .vimrc 都是一次次使用, 发现有需要一点点加上去的, 当然有现成觉得顺手的也可以拿过来, 再自己改
    onlyice
        4
    onlyice  
       2015-12-26 11:17:23 +08:00 via Android
    建议找个 sph13 的 .vimrc 直接用就好了,遇到一些具体的使用场景再查怎么用
    congeec
        5
    congeec  
       2015-12-26 11:21:15 +08:00
    vim 好和 vim 需要入门有什么必然联系么?
    nasta
        6
    nasta  
       2015-12-26 11:25:39 +08:00
    @jiyinyiyong sublime text 的 vintage mode 与 vim 不完全兼容
    chrishine
        7
    chrishine  
       2015-12-26 11:26:56 +08:00   1
    vim 就和 C++ 一样,这个时候还不会就完全没必要学了。
    Evovil
        8
    Evovil  
       2015-12-26 11:41:02 +08:00   4
    有没有必要学是一回事,

    怎么学是另一回事,


    既然你们说 Vim 这么好,(好不好见仁见智的事情不瞎搀和。)
    Vim 要怎么入门呢?(学 vim 到可以有个简单的入门方式)

    我是这么入坑的:

    ----
    “ 学 vim 最简单的入门方法就是看 manual 。”
    有 linux/mac
    直接在 termianl 里敲 vimtutor 。
    通俗易懂深入浅出。

    英文看不懂当然有中文版。 自行搜索 vimtutor 中文版


    基本学会后就可以 help xxx 在 vim 中继续学习了。
    Evovil
        9
    Evovil  
       2015-12-26 11:42:36 +08:00
    需要在墙上挂个 Vim 快捷键 Cheatsheet 吗?

    可以设置成电脑桌面 2333333
    matthewz
        10
    matthewz  
       2015-12-26 11:43:29 +08:00
    现在用什么都一样 但我个人觉得 ST 不是个长久之计 因为 ST 的作者已经基本没有在维护了 而 Vim 和 Emacs 在可见的未来不会有这个问题
    qiukun
        11
    qiukun  
       2015-12-26 11:51:05 +08:00 via Android
    vsc!
    htfy96
        12
    htfy96  
       2015-12-26 11:52:41 +08:00
    ncisoft
        13
    ncisoft  
       2015-12-26 12:02:09 +08:00 via Android
    说说我学 vi 的过程吧:大一那会,老师每人发了一张 vi 键位说明的纸,然后自己去 vt 终端连上 Unix 练习,直到形成肌肉记忆,然后有了互联网,遇上了 vim ,一路自学过来,感谢 vim help ,感谢 yahoo google
    onemoo
        14
    onemoo  
       2015-12-26 12:02:25 +08:00
    和 8L 一样,强烈推荐 vimtutor ,这是一个很好的官方入门教程,随 vim 安装的。
    其次就是在 vim 中键入 :help ,其中的 manual 从浅入深讲解了 vim 的方方面面,也很值得看。

    建议在使用别人的.vimrc 前先读过 manual ,这样在需要时能让你理解别人的 vimrc 为什么是这样的。
    Evovil
        15
    Evovil  
       2015-12-26 12:11:26 +08:00
    同 @onemoo 学习 vim 的时候有个很大的误区。。
    就是插件。

    当年我刚开始搞了一堆巨量插件。花里胡哨又漂亮,功能又多,感觉开了个高达,马上就能开地图炮毁灭世界了。。。启动要 2.5s 。。
    后来随着用,越来越发现 花里胡哨的东西,漂亮的东西,颜色的东西,慢慢都没啥用。。

    就跟大多数大神一样 。。 vim 基本就几个插件,(<7 ) map 也基本很少用。颜色也没有奇形怪状的. 后来在 single 模式下写代码基本上 t_Co= 16...速度越来越快。。效率越来越高。。

    以上 在充分了解 vimrc 和插件用途之前不建议急着上。。。(不然就用 ide 了)
    Evovil
        16
    Evovil  
       2015-12-26 12:14:30 +08:00   1
    随着使用越来越多,和代码能力的增进
    慢慢的插件都会退化掉

    所以慢慢的就不需要 nerdtree , taglist 等等等。
    相反 buffer 的使用, tab 的使用,慢慢占据主导。。

    这也是大多数人需要 ide (不引战) 喷 vim/emacs 的缘由。。因为他们可能会依赖鼠标 /solution/文件夹列表等辅助写代码构建。。。
    bramblex
        17
    bramblex  
       2015-12-26 13:19:57 +08:00
    @Evovil

    IDE 一般针对特定语言做优化,就光一个静态分析 vim 就要日 doge 了。

    举个栗子。在做一些语义层面上的分析,最简单的,我要重命名一个函数,其他所有地方调用到这个函数的地方都要进行相应的修改,这个要怎么办?

    一般方法是 sed -i 's/func_name/new_func_name/g' * ,然而这样真的对吗?不同作用域有相同的函数名怎麽办?闭包里面覆盖了这个函数怎么办?传递了这个函数的引用的怎么办?这完全就是日 doge 了好么……这种情况需要分析整个项目,构建语法树,并且模拟执行一遍才能完成整个分析。

    最为一个 vim 死忠党表示, vim 仅仅还只是一个编辑器而已。不需要那么多插件,仅仅是因为那些插件没 IDE 好用,还出各种 bug ,出了 bug 我还要花时间去改那那么多年没人维护又臭又长的蛋疼代码( vimscript 语言原生没有模块这个概念,我还给 vimscript 造了一个类似 nodejs/python/ruby 那样的模块 /包系统)。如果真的需要用那些插件的话,我就直接上 IDE 了。

    作为一个熟练的 vim 党, vim 完全不需要开开关关,一个 vim 完全能完成所有工作。并且,打字速度和编码速度是两码事。当只需要无无脑拍代码的时候,我觉得很可能说明这部分代码多数是无意义的重复。无意义的重复写个 DSL 自动生成代码就好了,手写是浪费时间……

    一个完善的 IDE 应该是能够在不使用文本编辑器的情况下完成项目开发的。而 vim ,仅仅还只是编辑器而已……即便 vim 再好都无卵用
    elgoog1970
        18
    elgoog1970  
       2015-12-26 13:23:52 +08:00
    常用就熟悉了,只是为了练习,白费
    keithsliu
        19
    keithsliu  
       2015-12-26 13:41:35 +08:00
    盲目崇拜。。
    spww
        20
    spww  
       2015-12-26 13:47:18 +08:00
    多用,先用简单功能,哪里觉得效率不够了就去 google 看有什么快速实现的方法没,然后慢慢就熟悉了
    Evovil
        21
    Evovil  
       2015-12-26 13:51:42 +08:00
    @bramblex 确实。。语言在发展。。单纯的编辑器已经无法胜任工作了。。高级 ide 在 code refactor 上和项目控制上(配合版本控制)有着无可比拟的优势。。
    而且越发成熟的设计方法,可替代的重复模块构建,甚至是后续的配合组建(包括 ORM 框架,可视化生成,测试驱动, ut 等也越来越具有优势。。)

    不过, 一些基础项目, 特别是 linux 项目(内核,驱动),对 vim 的依赖还是很大, 因为从调试到设计到版本控制( git )到文档撰写( Tex ) 都很难脱离 vim 。

    所以反过来说, linux 的产品些列(包括运维) 是基于 terminal 的一套解决方案,而 vim 是在 terminal 的解决方案中的核心。难以替代。。。所以我在 linux 写 py 项目依旧是 vim/ipdb 。。。即使是我连标准库都记不清楚。。

    所以不绕远,从题主问题一分为二来说,还是要看需求。。。
    就学习 vim 来说。 我觉得还是有必要的。。毕竟脱离鼠标的 coding 方式更容易和思维衔接,更容易追求极致的效率
    gimp
        22
    gimp  
       2015-12-26 14:06:29 +08:00
    使用 VIM 后会中毒的,换成一个没有 vim 模式的编辑器时,疯狂的想按 hjkl 和 Esc ,发现不管用,简直是难以忍受的事情...使用后会爱上它的。
    gorilla
        23
    gorilla  
       2015-12-26 14:10:52 +08:00
    个人感觉啊,用什么工具完全看需求,需要写什么东西?

    Mac 下写 sql 脚本、写 python ,个人建议不一定非要限定 vim , sublime 也挺好用,当然我会开启 vim 模式,因为这样更方便

    如果你在服务器上做调试,那 vim 肯定是首选

    vim 的学习路线也不是很陡峭,尝试着去做一些常用操作,慢慢熟练就可以了

    纯属个人建议,题主完全看自己的操作习惯和需求
    zhicheng
        24
    zhicheng  
       2015-12-26 14:11:08 +08:00
    强迫自己用 Vim ,两天就会了,对,就是这么简单,虽然我不用。
    haogefeifei
        25
    haogefeifei  
       2015-12-26 14:11:43 +08:00
    慢慢来吧,系统学习后我表示不再惧怕在 Linux 终端里面改文件了。。
    hackpro
        26
    hackpro  
       2015-12-26 14:33:00 +08:00
    1. 和 Emacs 一样,新手不要自己折腾,用别人的配置

    2. 多敲,变成肌肉记忆
    theJian
        27
    theJian  
       2015-12-26 14:40:47 +08:00
    了也是忘, 直接用就是了, 用查不知不就住了.
    Pastsong
        28
    Pastsong  
    OP
       2015-12-26 14:45:38 +08:00   1
    @zhicheng 之前在 ssh 连过去只会 i 和 :wq
    zhicheng
        29
    zhicheng  
       2015-12-26 14:56:45 +08:00   1
    @Pastsong 知道几个基的,方向 hjkl ,进入插入模式 i ,回到正常模式 Esc ,保存 :w ,退出 :q ,保存并退出 :wq 知道这几个,你就能开始写代码了。剩下的,一边用一边熟悉,比如 :行号, g ,gg, G 等命令,用一用,时间久了,你发现学这个根本不是个事儿。
    billlee
        30
    billlee  
       2015-12-26 15:06:30 +08:00
    不要直接拿别人的配置,自己一点一点做加法,需要什么配什么,灵活可配置才是 vim 的优势嘛。
    billlee
        31
    billlee  
       2015-12-26 15:09:28 +08:00
    @Evovil 就版本控制来说,还没有见到有 IDE 能比 git CLI 好用的, interactive add 和 interactive rebase 这两个功能似乎没有 IDE 能提供。
    rungo
        32
    rungo  
       2015-12-26 15:15:24 +08:00
    说 vim 好的是叶公好龙,这是上一代人的东西,现在有那么多好用学习成本低的编辑器可用,何必和科技进步过不去呢。
    wudanyang
        33
    wudanyang  
       2015-12-26 15:19:41 +08:00
    先使用 gvim ,练练手
    pagict
        34
    pagict  
       2015-12-26 15:21:42 +08:00
    先别看花里胡哨的配置什么的 先熟悉键位吧
    尽量用 vim ,找个键位图随时查看,过不了多久就肌肉记忆了 然后再花心思慢慢配置
    n6DD1A60
        35
    n6DD1A640  
       2015-12-26 15:28:20 +08:00
    既然你这么问那就直接回答问题好了,楼上那些说没必要之类的直接反对+没有帮助

    1. 有些插件比如 YouCompleteMe 只支持 MacVim ,如果你要用到就装 MacVim 吧。后面两者本质上一样的,不过 HomeBrew 的版本比自带的高。个人还是推荐 MacVim
    2. 先找几个热门的 vimrc 配置伸手过来用,不顺手的地方再改
    3. 不需要。用得多了自然会熟练。或者自己改快捷键配置。
    whatever00
        36
    whatever00  
       2015-12-26 15:29:17 +08:00
    一直也想学, 但是没那个精力, 还是 IDE 来的快...
    这里有篇入门文章:http://wyw.dcweb.cn/vim/VimArticle.pdf
    HentaiMew
        37
    HentaiMew  
       2015-12-26 15:30:27 +08:00
    vim ,会用它,也会记一些常用的快捷键。但是从来不用它写实际项目。
    几乎任何编辑器重构代码都是噩梦,除非写几个小脚本,写简单的小脚本任何编辑器都行,只需要语法高亮即可。

    用 vim 是为了操作 linux... 操作 linux 一定得接触一点 vim... 就这样 而已。。。
    PublicID
        38
    PublicID  
       2015-12-26 15:47:54 +08:00
    firefox 浏览器 有一个插件 Pentadactyl ,能够差不离的模拟 vim 的操作。

    你要上网的吧? 可以试试
    yqf3139
        39
    yqf3139  
       2015-12-26 15:51:52 +08:00
    可从 chrome 的 vim 键绑定扩展开始,永久了就越来越想在编辑器上统一体验。
    zhuangzhuang1988
        40
    zhuangzhuang1988  
       2015-12-26 16:02:24 +08:00
    千万别作死...
    zzn
        41
    zzn  
       2015-12-26 16:03:04 +08:00
    vimtutor
    然后尽可能地使用
    KentY
        42
    KentY  
       2015-12-26 20:31:25 +08:00   1
    不要为了去学一个东西而学, 只有你需要再学.
    我第一次接触 vim 是 2000 年, 当时心里把这种"反人类"的编辑器骂的不行, 但是必须在 server 弄些东西, 每次尽量用 winscp 编辑.:)

    2002 年开始只有 linux 系统, 2003 年左右开始接受 vim 并开始用. 到今天, 在我个人心里, 我的编辑器选择只有 vim.用的也很顺手了, 使用中一般不会去想, 去查. 也写过一些插件

    说一下我个人体会的"学习"路径:
    1. 每天用它, 但用在不重要, 没有时间压力的文本编辑任务上
    2. 每天用它, 慢慢重要的编辑任务也有它的身影, 但关键的编辑还是用你以前的 notepad 什么的
    3. 所有编辑都用它, 没它觉得很不方便
    4. 遇到重复 3 次以上的操作, 就查查 google,帮助等,看有没有简单的方法, stackoverflow, vimgolf 等都是很好的地方
    5. 自己某需求频繁,但没有更快的方法, 自己写插件
    6. 继续用, 继续学

    我个人从 1 完全到 3 这个转变大概花费了 2 到 3 年, 从第 3 步以后, 到现在已经经历了 10 年, 还是在第 6 步.
    Evovil
        43
    Evovil  
       2015-12-26 20:40:29 +08:00 via iPhone
    @rungo c 语言这么落后的东西了 又落后 又原始 还有这么多陷阱 这么多指针 写他干嘛 说 c 语言好的都是叶公好龙 233333 什么大神都在用 c 语言? 你们都是个人崇拜 2333
    等出了意念编程再来喷 vim 吧
    Evovil
        44
    Evovil  
       2015-12-26 20:43:20 +08:00 via iPhone
    @billlee 同意 git 在 cli 方面 完爆所有 ide “落后的” cli 反到是最先进的最效率的
    rungo
        45
    rungo  
       2015-12-26 21:06:17 +08:00   2
    @Evovil 类比是论坛里面讨论问题最幼稚的一种方式
    SonicY
        46
    SonicY  
       2015-12-26 21:07:58 +08:00
    怎么天天有这么些关于 vim 的问题。
    使用 Vi 的步骤:
    1.买一条鱼,大于 5 英寸就行;
    2.放到冰箱里,冷冻一晚上;
    3.第二天拿出这条鱼,启动 Vi ;
    4.拿这条鱼使劲砸你的头,砸到头破血流,直到决定使用另一款编辑器为止。
    join
        47
    join  
       2015-12-26 21:08:57 +08:00
    Orzzzz
        48
    Orzzzz  
       2015-12-26 22:00:43 +08:00
    @Evovil 这个反驳给满分 :D
    dsdshcym
        49
    dsdshcym  
       2015-12-26 22:06:57 +08:00
    @rungo vim 的开发又不是一直停滞的,从 1988 年来进步了 27 年,如果 Vim 科技不够先进,是如何活到现在的?
    wayslog
        50
    wayslog  
       2015-12-26 22:13:33 +08:00
    sudo apt-get remove vim && sudo apt-get install emacs
    jsyangwenjie
        51
    jsyangwenjie  
       2015-12-26 22:50:28 +08:00
    sudo apt-get remove vim && sudo apt-get install emacs
    Tiande
        52
    Tiande  
    PRO
       2015-12-26 22:57:02 +08:00
    1.新手挂个键位也行;
    2.建议 ctrl 映射到 大小写锁定键;
    3.brew install vim 的版本基本最新最稳定, Mac 自带好像有点阉割的感觉。
    4.VIM 简明教程-中文版: http://pan.baidu.com/s/1jG3rFPs

    除了基本的键位,找一个好的配置,就能用好多年。
    譬如这个 vim 配置: https://github.com/Tiande/vimrc
    基本不用安装任何依赖, git clone 下来就能用(除了 ctags ),里面还有我的中文教程。
    cosven
        53
    cosven  
       2015-12-27 00:24:55 +08:00
    就算不用 vim , emacs ,也应该先考虑 atom ,再考虑 sublime 。

    个人感觉 atom 将来发展下去,也会变成一个操作系统。
    bramblex
        54
    bramblex  
       2015-12-27 00:35:10 +08:00
    @rungo

    但你不觉得所讨论的东西没没弄清楚就大放厥词更幼稚吗?

    敢问您高中毕业了?
    ThomasZ
        55
    ThomasZ  
       2015-12-27 00:36:15 +08:00 via iPhone
    就一句话,适合你的才是最好的, vim , emacs , atom , vscode , sublime ,还有各种 IDE 都用过,而我需要的是一个启动速度快,轻巧好携带,又可以兼容大量语言的编辑器,所以我选择了 vim ( gvim , macvim ),用了几年下来,配置一直根据需求和心得修改,所以 vim 对我来说就是最好的,也是现在用着最顺手的
    mikale
        56
    mikale  
       2015-12-27 02:12:17 +08:00
    知道 命令模式和编辑模式,并且知道其切换方法.

    然后知道命令模式的光标的上下左右移动.

    按钮掌握大概就 6,7 个左右.

    少年,已经入门了.其他慢慢再学.
    mikale
        57
    mikale  
       2015-12-27 02:27:08 +08:00
    vim 确实有一些神一般的编辑体验,但是,自从我用了 mac 之后,觉得 ctrl 不好按了(少了一个),也就算了.

    现在的编辑器普遍不算太差,再神的编辑体验也是可以不用的.因为加快开发效率上,有更重要的问题值得思考和学习,比如代码复用和代码生成技术之类.这技术上提升,比码字效率的提升快多了.
    raawaa
        58
    raawaa  
       2015-12-27 03:35:57 +08:00
    首先,把 Esc 映射成 jj 。

    哈哈我开玩笑的。
    cjyang1128
        59
    cjyang1128  
       2015-12-27 14:05:54 +08:00
    ide 加 vim 模式加 hhkb
    shawnelee88
        60
    shawnelee88  
       2015-12-27 17:39:06 +08:00
    @onlyice 是 spf13
    enlau0912
        61
    enlau0912  
       2015-12-28 09:15:29 +08:00
    直接 emacs 吧。
    pipicold
        62
    pipicold  
       2015-12-28 12:35:13 +08:00
    @gimp 啊哈, 超级同感
    hbkdsm
        63
    hbkdsm  
       2016-02-11 00:15:44 +08:00
    vimtutor

    :help <commands>
    edk24
        64
    edk24  
       2018-10-07 04:53:20 +08:00
    以前出来没用过 vim, 后来学 linux 搭建环境才迫不得已.

    现在 vscode+vim 插件. 挺好用的, 又能装逼

    讲回来, vim 是肯定要学点的. 至少保障可以在 linux 上编辑配置
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5656 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 02:49 PVG 10:49 LAX 18:49 JFK 21:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86