zoukankan      html  css  js  c++  java
  • Vim求生

    [TOC]

    Vim 是从 vi 发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。

    —— 维基百科

    很多接触 Vim 的程序员应该都有过这样的经历:

    1. 受某大 V 的影响看到了 Vim 的高逼格;
    2. 看了某篇学习的文章,自己试了几个命令,在 30 分钟内放弃;
    3. 几个月后、几年后又听到有人在鼓吹 Vim 好用;
    4. 循环。。。
    5. 忍不了了,花了 2 周时间记各种命令;
    6. 算了,我还是滚回我的 sublime 吧。

    我为什么知道这种情况?因为我也一遍有一遍的尝试想把 Vim 作为我的主力编辑器,每一次都是伤痕累累的滚回 sublime 了。分析这里面的原因其实只有一个:我太想用它来装 X 了,太想感受那种轻飘飘的虚荣感觉,还没有认识到“世界上有 3 类程序员:用 Vim 的程序员,用 Emacs 的程序员,用其他编辑器的程序员” 这句话并不是装出来的,Vim 真的可以大幅提高工作效率。

    如果一个工具真的可以在以后长时间内大幅提高效率,那么花一小点时间,慢慢的使用、进阶绝对是个划得来的生意。而且,有时候我们不得不在生产环境中直接面对 Vim, 这种时候通常是紧急的情况(服务器发生故障等),如果对 Vim 不熟悉,那只能是两眼一抹黑了。

    大部分人放弃 Vim 可能都是出于这样的原因:期望过高,追求速成。而本文的目的只在于善意的提醒你:慢一点,别放弃。

    生存下来

    追求速成的同学在初次接触 Vim 时通常活不过 30 分钟,太不友好了!!!那为什么 Vim 可以提高工作效率?它的设计初衷就可以让你的手指不离开键盘进行所有的操作。

    活下来需要注意的事情很简单,认清 Vim,使用最简单的指令,就跟我们学吉他一样,先看看买的琴,弄清楚 Do Rei Mi 在哪个地方可以演奏出来就可以了,通常来说我们要流畅的弹出 1 2 3 4 5 6 7 i 需要一段时间,但是第一次弹奏出来以后会很开心。这个时候并不需要了解什么是把位,怎么切换把位。

    通过 vim filename进入 Vim 以后,不能编辑文本,这时候 Vim 在 Normal 模式下。正如一些笔记软件默认是不开放编辑的,只有点了编辑按钮才能输入,而像 Sublime 这样的编辑器,你只要打开了某个文件,随时都可以输入。这样当然提供了便利性,但是很容易造成误操作,改变文件内容和状态。

    • 如果需要编辑,键盘按 i 就可以进入 Insert 模式,i你可以理解为是此模式的缩写。此时下面会出现插入字样;
    • 在 Insert 模式下,可以像笔记软件那样编辑文件内容;
    • 通过 Esc退出 Insert 模式,回到 Normal 模式

    在 Normal 模式下,学会以下内容就入门了:

    • i 进入 insert 模式,编辑内容;
    • 光标键(←↓↑→) 进行移动;
    • 删除光标位置的字符:x
    • 删除光标那一整行:dd
    • 粘贴已复制的内容:p
    • 保存(w)+退出(q):wq

    基本上以上操作足以让我们完成很多的操作内容,现阶段需要做的是将这些指令训练成肌肉记忆,可以每天刻意用 Vim 来写日记,编辑一些文档,或者训练不用自动补全和提示写代码的能力。

    稍微熟练以后将光标键换成hjkl进行移动,这样更符合手放在键盘上的位置,如果不记得哪个键是做什么用的,输入:help 键名 寻求帮助。养成一个习惯,insert 模式下编辑完,只要有可能做其他事情,有事没事按按 Esc 退回 Normal 模式来保证数据的安全。如果有必要,借助鼠标操作。

    快速定位阶段

    在生存阶段的命令没有到肌肉记忆的程度时,尽量不要逼自己学习过多的命令,欲速则不达,好东西都需要慢慢享受。Vim 在 Normal 模式下,所有键都会变成命令执行对应的指令。

    光标的快速移动

    • ^ 行首;
    • $行尾;
    • :3 跳到第 3 行;
    • G 跳到最后一行;
    • :/string 定位文字,string就是要定位的文字,可以是正则表达式。当查找到多个结果时,n 键切换到下一个;
    • w 下一个单词首;
    • *下一个相同的单词,# 上一个相同的单词;
    • % 专门用来匹配括号的。编程语言很多不知道自己处于哪一个括号内。

    多种插入形式

    之前我们说过 i 可以切换到 insert 模式,实际上还有其他键也可以:

    • a 在光标后一位插入,通常用在行末的时候;
    • o 在下一行插入;
    • O在上一行插入;

    文件操作

    除了 :wq 还有其他操作:

    • :q!不保存强制退出;
    • :w path_of_filename 保存为 filename 的文件;
    • :saveas path_of_filename另存为;
    • :e another_file 打开另一个文件:
    • :n 或者加file/tab键观察 打开下一个文件,如果加 file 开指定的文件,可以用 tab 键观察补全

    快速回撤前进

    • u undo,回撤
    • Ctrl + r redo,前进
    • . 做大量重复工作的利器,表示执行上一个指令;
    • 5. 重复执行上一个指令 5 次;
    • 5<command> 重复执行 command 这个指令 5 次

    熟练阶段

    到目前为止,主流编辑器的基本功能 Vim 通过键盘基本上都实现了,对于块级操作,命令存在天然的劣势,毕竟鼠标长按一下可以选择太多的区域,Vim 的块级操作同样不复杂:

    • Ctrl + v 进入块级操作;
    • 光标移动,光标键或者其他命令;
    • I + --, 操作。I 进入插入模式,插入 --;

    命令 v 和 V 表示可视选择,如果我们需要对一段代码左右缩进:

    • v 进入可视;
    • 光标移动,光标键或者其他命令;
    • > 或者 <, 分别表示右缩进和左缩进

    在 insert 模式下,可以使用 ctrl + p 自动补全。

    分割布局

    • :vs file 水平开一个文件
    • :sp file 垂直开一个文件

    封神阶段

    用 Vim 打造 IDE

    宏录制

    这个阶段我直接放弃了。不行了,白头发出来了。

    可自行搜索。。。

    总结

    • 学些 Vim 的过程真可谓酸爽;
    • 一个命令用熟练了感动得眼泪掉下来;
    • 很多枯燥的东西都是有大用处的,这时候能狠下心来啃对自己的心智也是个大的提升;
    • 虽然离 Vim 党还有距离,可怎么感觉自己不一样了呢?有懂这种体会的吗?

    学习资料

    =====请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/wagyuze,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。=====
  • =====有任何疑问,欢迎加微信 qd20150815 (加时请备注:博客园-雨泽)=====

查看全文
  • 相关阅读:
    Unable To Open Database After ASM Upgrade From Release 11.1 To Release 11.2
    11g Understanding Automatic Diagnostic Repository.
    How to perform Rolling UpgradeDowngrade in 11g ASM
    Oracle 11.2.0.2 Patch 说明
    Pattern Matching Metacharacters For asm_diskstring
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    Upgrading ASM instance from Oracle 10.1 to Oracle 10.2. (Single Instance)
    OCSSD.BIN Process is Running in a NonRAC Environment
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    On RAC, expdp Removes the Service Name [ID 1269319.1]
  • 原文地址:https://www.cnblogs.com/wagyuze/p/10260536.html
  • Copyright © 2011-2022 走看看