跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何提升 Vim 技巧?
未分類
2021 年 2 月 6 日

如何提升 Vim 技巧?

如何提升 Vim 技巧?

資深大佬 : FaiChou 8

自己已经不做互联网行业了, 但平时业余也写点脚本, 用 VSCode 感觉太重, 所以选择 Vim.

因为知道 Vim 有很多奇技淫巧, 但平时使用还是习惯那几个快捷键. 比如想删除一行再进行编辑, 之前习惯 dd 再 insert, 其实有更简便的 S; 再比如 a = "xyz" 想更换双引号为单引号, 使用 r 来一个一个替代, 其实有更简便的: 光标在 xyz 中, cs"'(change surrounding ” to ‘).

尽管不知道这几个奇技淫巧也不耽误开发, 但学习了它会提升一定的效率. 自己闭门练习不会提升, 只会让效率低的快捷键成为码代码的习惯. 看他人使用 Vim 码代码会学习他人的 Vim 快捷键习惯. 除此之外 还有什么好的方法来学习这些奇技淫巧?

大佬有話說 (61)

  • 資深大佬 : jdhao

    编辑的时候,多想想有没有更快捷的方式,然后去搜索,八成是有比你现在编辑的方式更快的方案。

  • 資深大佬 : nthhdy

    需求驱动。多用 vim 处理数据、做开发、读代码,这中间就会遇到各种需求的

  • 資深大佬 : ysn2233

    多用就习惯了

  • 主 資深大佬 : FaiChou

    @ysn2233 #3 多用就习惯了已经知道的快捷键, 我想学习更快捷的 如何提升 Vim 技巧?

  • 資深大佬 : lbyo

    学到了,VSCode + Vim 目前体验不错

  • 資深大佬 : xubeiyan

    有个 missing semester of computer science,你去搜一下。其中就有讲这个一节课

  • 資深大佬 : perapera

    我自己的方法是拿张纸把自己的需求和相应的键位写下来,然后放在最显眼的地方,dd 用烦了就看一眼,一眼就能看到,久而久之就习惯了,要是一直不看就说明旧的键位也很顺手(不过主说的两个键位我从来没用过,学习了,哈哈

  • 資深大佬 : jasonyang9

    change surrounding 是不是需要插件的,我试了无效。

  • 資深大佬 : anzu

    比起 S 更习惯用 cc,我觉得与其找两个键,不如一个键重复两次。推荐看《 vim 实用技巧》,当你从入门到熟练后,可以试着放慢编辑速度,稍微思考或查找是否有更高效的快捷键组合。有些人用了 vim 后感觉没有提高的原因之一就是,他们一直在使用低效的入门快捷键组合。

  • 資深大佬 : Chingim

    有本书可以翻翻 Practical Vim

  • 資深大佬 : Chingim

    @jasonyang9 tpope/vim-surround

  • 資深大佬 : northisland

    vim cheat sheet : https://vim.rtorr.com/

    vim 周边插件(比如搞一下 nvim + pynvim )

    然后了解一下上限

    然后你会发现,还是 pycharm 好用。

  • 資深大佬 : rationa1cuzz

    还是要多用,多搜

  • 資深大佬 : rainfd

    看书《 Vim 实用技巧》,看 vim 相关的博客,自己研究太慢了,不如别人总结

  • 主 資深大佬 : FaiChou

    @northisland #12 谢谢, vim 的 chectsheet 太多了 感谢再提供一个

  • 資深大佬 : unicloud

    除了多用、多总结,真的没有什么捷径;即便有一百个人告诉你如何如何,还是得自己练习。

  • 資深大佬 : itgoyo

    Vim 更多的是肌肉记忆,关于技巧啥的《 Vim 使用技巧》书里面的操作过一遍即便足够了解 Vim 的基本操作了,后面更多的就是看你用不用到所谓的 Vim 插件了,但是很多 vim 的插件,IDE 要么有类似的功能,要么已经有 dalao 移植了 vim 的功能过来,根据实际情况来吧,如果是 C,Python 、Go 这种确实 vim 也可以,但是你让我来写前端代码,对不起我还是选择 VSCode 或者是 Atom 、Sublime Text

  • 資深大佬 : AmoreLee

    1. 看书:vim 实用技巧
    2. 安装插件,https://github.com/amix/vimrc 推荐这套配置
    3. 不断的实践

  • 資深大佬 : Qcui

    上面大佬说到了 cc,让我想起,一个单词重复两次就是针对一行操作的这句话,比如:
    y: 复制,yy: 复制一行
    d: 删除,dd: 删除一行
    c: 修改,cc: 修改一行
    其它的有大佬补充没?

  • 資深大佬 : cmdOptionKana

    终极技巧:IDEA 或 VScode + vim 插件。

  • 資深大佬 : flashlight

    用起来,发现自己做什么操作“麻烦”的适合就去查一下怎么能不麻烦的做这个操作

  • 資深大佬 : Nimrod

    补充一个实用性没有那么强的网站 http://vimgolf.com/ ,用尽可能少的 keystroke 来完成目标

  • 資深大佬 : Meltdown

    玩游戏 vimadventure

  • 資深大佬 : Leviathann

    有个把函数参数作为文本对象的插件
    daa 就是 delete a argument
    fn(a1, |a2)
    假设|是光标,daa 就会只剩下 fn(a1),
    dia 就是 fn(a1, )

  • 資深大佬 : wuwukai007

    ciw,在单词任意位置删除整个单词

  • 主 資深大佬 : FaiChou

    @wuwukai007 #25 ciw -> change inner word 也可以使用 caw -> change a word

    var x = ‘https://xxx.|com’, 光标在 | 位置, ci’ -> 直接删除引号里面并插入.

    这里面的 c 可以换成其他动词: y (yank), d (delete) 等

    但我感觉这些知识都是入门级别的快捷键, 任何 cheatsheet 都会说. 所以 ..

  • 資深大佬 : gdtdpt

    我记得某一本关于如何使用 Vim 的书里有说,Vim 里每种操作都有很多种方法,找一个自己习惯的就行了,不用拘泥于哪个最简便哪个最好。
    有人喜欢 easymotion 快速移动,我喜欢 hjkl 慢慢移动,移动的过程中可以思考准备做什么或者之前写的有没有问题。
    如果不熟就多用多练。

  • 資深大佬 : lululau

    基本操作练练熟,看 :help vim,然后自己写个插件,Vim / Emacs 看不懂别人写的扩展,不会修改,自己不会写扩展的话,算不上会用

  • 主 資深大佬 : FaiChou

    @gdtdpt #27 的确, 写了几年代码现在反思下, 用像 VSCode 等编辑器, 很多操作都是浪费时间的, 但浪费的时间刚好用来思考如何进行下一步代码的操作, 也就是说, 习惯了普通编辑器, 手速是超前脑速的, 手会经常停下来等待大脑.

    而现在使用 Vim 就不一样了, 手就慢了下来, 因为生疏, 需要大脑去教手指去操作. 所以希望能练就「无他, 唯手熟尔」的境界.

  • 資深大佬 : guhuisec

    我个人感觉自己用的最多的如下:
    打开:vim 文件名
    关闭:先按下 esc 键,进入 esc 模式,输入冒号,然后输入 w 就是保存;如果输入 wq 就保存退出;如果输入 q 就是退出。
    进入 esc 模式,定位到文件最开始:按 2 下 g (小写 g )
    进入 esc 模式,定位到文件最后:shift+g (大写的 G )
    进入 esc 模式,定位到一行最前面:按 0 键
    进入 esc 模式,定位到一行最后面:shift+4
    按 v 进入虚拟模式:按 v 即可
    格式化所选内容:先进入 v 虚拟模式进行内容选择,然后按=号即可,如果是格式化全部,先按 v 进入虚拟模式,按 2 下 g 进入文件最开始,然后 shift+g 定位到文件尾,然后按=号即可。比如你可以格式化 nginx.conf 这些文件或者其他的。

  • 資深大佬 : guhuisec

    还有几个补充下:
    esc 模式:按 d 或者 dd 剪切当前行;按 p 粘贴剪切的行。

  • 資深大佬 : Lumuy

    https://thoughtbot.com/upcase/onramp-to-vim

    现看一遍,再用用,过段时间再回来看一遍,周而复始。
    用长了,所有编辑模式你都想切换为 vim 模式

  • 資深大佬 : xpresslink

    VIM 在编辑文本上提供那些强大功能都要靠反直觉消耗脑力得到的。
    但毕竟写代码时,Ctrl+C 、Ctrl+V 用得最多。
    我觉得如果要是写代码还是用专用的 IDE 效率更高,用 VIM 写码不论你怎么配置做大项目的时候都很难受。

  • 主 資深大佬 : FaiChou

    @guhuisec #31 你说的这些都是基础用法, cheatsheet 都能 cover 如何提升 Vim 技巧? 不过还是感谢回复

  • 主 資深大佬 : FaiChou

    @xpresslink #33 IDE 用的通用习惯, 容易上手, 再加上 Emacs 的一些快捷键( ctrl+a 到行首, ctrl+e 到行尾, ctrl+k 删除至行尾, meta+b 退一个单词等)是挺有效率的, 但回想下, 这一套内容也是需要经过学习得来的, 比如 VSCode 里 option+下, 可以移动一行到下面, shift+option+下, 复制当前行.. Vim 也是学习, 相信经过练习任何人都能做到不用消耗脑力来驱使手指按键, 你懂的, 有些人就喜欢效率的工具.

  • 資深大佬 : ediron

    推荐几个工具
    一个可以直接内置到 Vim 中的 vim cheat,使用中可以随时查看快捷键:
    https://github.com/lifepillar/vim-cheat40

    一个中文的从入门到精通的 Vim 教程,很全面不止于使用层面,有高级的东西:
    https://github.com/wsdjeg/vim-galore-zh_cn

    其实 Vim 自带有入门教程的,命令行敲「 vimtutor 」就能进去,都是从很基础的开始一步步教学,不顾是原始是英文的,这里有一个项目,你按照教程 git clone 一下,就能把 Vim 官方文档汉化。再用「 vimtutor 」命令就可以查看中文教程:
    https://github.com/yianwillis/vimcdoc

    其实要想用的溜,除了多用还是要总结一套自己的键位习惯,可以多看看大佬们的 vimrc 文件都是怎么改的,觉得好的可以拿来用或者自己再改改。平时在用 Vim 时也可以利用多窗口,边用边记笔记。

  • 資深大佬 : zyfsuzy

    放弃吧,编程不合适

  • 資深大佬 : vigack

    @guhuisec 可以用 ZZ 替代 :wq, 节省一次按键:doge

  • 資深大佬 : huangmingyou

    不常用的技巧学了也没用,两周就忘记了。

  • 資深大佬 : tiedan

    个人比较喜欢的 –

    😡 保存退出
    f+要跳转的字母 行内跳转光标
    ca,ci 修改
    ctrl+f ctrl+b 翻页
    ( 向上跳转到空行和空行附近的一行
    ) 向下跳转到空行和空行附近的一行
    { } 和 ( ) 类似但不跳转空行的附近行
    ]] 跳转到下一个 {
    [[ 跳转到上一个 {
    ][ 跳转下一个 }
    [] 跳转到上一个 }
    % 跳转到另一个花括号或圆括号

  • 資深大佬 : zhuangzhuang1988

    放弃

  • 資深大佬 : zeroDev

    用这个软件刷题: Vim Master

  • 資深大佬 : iSecret

    说一个大佬之前教我的一个命令,用得比较多,比如 a = “bcdef” 需要删除 “” 中的内容,命令是 di”,同理还有 ‘ ( [ { 等等。

  • 資深大佬 : moyupoi

    《穿越到异世界居然能用 vim 修改能力值》

  • 資深大佬 : jswh

    用 vim 除了快捷键,主要还有宏录制

  • 資深大佬 : blessingsi

    感觉日常使用是不够的,因为会自动用自己最熟悉的方式。需要看书,然后跟着练一练。这样下次用的时候才能想起来。

  • 資深大佬 : NeezerGu

    @moyupoi 尼玛。。。我还以为真有这么个游戏

  • 資深大佬 : NeezerGu

    放弃吧,我试过,最后发现就算看了也经常记不住。
    我已经算是比较频繁使用 vim 的人了。。。

    总归还是要需求驱动。就是当你使用个几个月甚至更久,突然感觉最近有个 xx 行为,感觉比较低效,但又应该可以用更快捷的办法来取代,这时候再去对这个行为进行搜索会更加有效一些。

    比如你说的 ddi 和 S 。 开玩笑说如果你 ddi 按的比 S 还快,你干嘛还要切换?

  • 資深大佬 : zengming00

    有些时候 vim 的宏用得相当爽

  • 主 資深大佬 : FaiChou

    @NeezerGu 学习不就是这样的吗,比如 OC 里写代理模式比较快,但后来学习了 block 更便捷,所以要学习。虽然 S 可能最后真比三个键要慢,但就像 react hooks 那位老哥讲的: 老了,不喜欢敲那么多键(他在解释为什么用 let 而不是 const )

  • 資深大佬 : bxqqq

    因为大部分人连 vimtutor 都没有过一遍,七零八碎不如直接看文档。

  • 資深大佬 : R0ckyY2

    多用 + 遇到问题找 Google

  • 資深大佬 : AnnatarHe

    经常看用 vim 的人写代码打字,可以的话找线下同事,不行只能找线上视频,youtube 有挺多.

    贡献一个 vim 技巧: early 10h 恢复到 10h 前的状态,常用来撤销操作

  • 資深大佬 : namelosw

    我不用 S,我用 cc,感觉表达起来比较流畅,因为 c 的组合更多。感觉重要的不是奇技淫巧,而是能用按键组合流畅地表达,就跟描述需求一样,而不是机械地地挪动光标插入删除,这样手脑一致不会互相卡,专注的时候就会忘记自己在打字。

    很多东西能想到明确规则但不知道怎么按,比如给 text 外面加层 span tag,就会卡住一下,打断这种节奏。至于是 S 还是 cc 其实是完全无所谓的。

    不过看你已经比较熟悉 Vim 了,感觉其实比较适合找一些 casts 看,很多时候都是无意看别人用的时候才意识到还能这么用。好像有个 Vimcasts,不过我没看过,感兴趣可以试试。

  • 資深大佬 : catcn

    VS 和 VS Code 都开启 VIM 模式,字体放得大大的。
    别人想过来我电脑敲代码,就像是开自动挡的老司机碰到了手动挡。
    马上不敢抢键盘了。

  • 資深大佬 : booscopy

    play vim-adventures.com

  • 資深大佬 : jupiter157

    inoremap jk <esc>
    用 jk 替换 esc,从此再也不需要按 esc 了

  • 資深大佬 : byzf

    题外话,vim 说实话我现在很难去定义到底有没有带来什么实质上的便利,有很多人发表过高见说看不出来鼠标多点一下到底有什么损失。

    陆陆续续地从 syntastic 到 ycm,nvim,deoplete 帮他们测各种 bug,各个平台测 vim 的花式 gui 的 bug,体验各种轮子自带的 bug 以及任何新环境都想试试 vim 是个什么情况所花的时间,还有迁移到 vscode-vim,vs-vim, jetbrains-vim 里面各种配置和 bug 的时间,加起来至少有大几百小时,我很难说我省下来一点点效率能覆盖这些时间。

    这种学了之后不会更新的技巧其实没什么去快速学习的必要,每年偶尔看一遍有啥新功能有啥新插件就差不多了。

  • 資深大佬 : micolore

    不用很难记住那么的快捷键,我也配置了很多插件,经常 idea 启动,然后就记不起来原来的配置了。

  • 資深大佬 : eve1yb0dy

    大 S 学习了

  • 資深大佬 : ixx

    @eve1yb0dy #60 还有大 C,大 D ,大 ZZ

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具