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

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

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

    在 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 ,找个键位图随时查看,过不了多久就肌肉记忆了 然后再花心思慢慢配置
    n6DD1A640
        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  
       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   ·   实用小工具   ·   2667 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:38 · PVG 17:38 · LAX 01:38 · JFK 04:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.