Linux我用 LinuxLinux学习之路

vim练级指令

2017-09-05  本文已影响150人  沙子硅
vim.png
博客主页,欢迎访问:blog.spursgo.com

学习vim的四部曲:

  1. 存活
  2. 感觉良好
  3. 觉得更好,更强,更快
  4. 使用vim的超能力

在开始学习以前,我需要给你一些警告:

第一级 - 存活

1.1 安装 vim

1.2 启动 vim

1.3 什么也别干!请先阅读

当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:

现在,你知道如何在 Insert 和 Normal 模式下切换了。下面是一些命令,可以让你在 Normal 模式下幸存下来:

i → Insert 模式,按 ESC 回到 Normal 模式。
x → 删当前光标所在的一个字符。
:wq → 存盘 + 退出 (:w 存盘, :q 退出)
dd → 删除当前行,并把删除的行存到剪贴板里
p → 粘贴剪贴板
推荐:
hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)

你能在vim幸存下来只需要上述的那5个命令,你就可以编辑文本了,你一定要把这些命令练成一种下意识的状态。于是你就可以开始进阶到第二级了。
当是,在你进入第二级时,需要再说一下 Normal 模式。在一般的编辑器下,当你需要copy一段文字的时候,你需要使用 Ctrl 键,比如:Ctrl-C。也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在vim的Normal模式下,所有的键就是功能键了。这个你需要知道。

标记:

第二级 - 感觉良好

上面的那些命令只能让你存活下来,现在是时候学习一些更多的命令了,下面是我的建议:(所有的命令都需要在Normal模式下使用,如果你不知道现在在什么样的模式,你就狂按几次ESC键)

2.1 各种插入模式

i → 当前光标处插入
I → 在本行行头插入
a → 在光标后插入
A → 在本行行尾插入
o → 在当前行后插入一个新行
O → 在当前行前插入一个新行
cw → 替换从光标所在位置后到一个单词结尾的字符

2.2 简单的移动光标

0 → 数字0,到行头
$ → 美元符号$,到本行行尾
/pattern → 搜索 pattern 的字符串(如果搜索出多个匹配,可按n键到下一个)

2.3 拷贝/粘贴

P → 粘贴 (p/P都可以,p是表示在当前位置之后,P表示在当前位置之前)
yy → 拷贝当前行

2.4 Undo/Redo

u → undo
<C-r> → redo

2.5 打开/保存/退出/改变文件(Buffer)

:e <path/to/file> → 打开一个文件
:w → 保存编辑后的文件内容,但不退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。
:w <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:q → 退出当前文件(未编辑时的退出)
:bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(使用:n可以到下一个文件)
注:!加在命令后表示强制,可以将!和上述命令组合起来

  • :q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
  • :w! → 强制写文件,即强制覆盖原有文件。如果原有文件的访问权限不允许写入文件,例如,原有的文件为只读文件,则可使用这个命令强制写入。但是,这种命令用法仅当用户是文件的属主时才适用,而超级用户则不受此限制。
  • :wq! → 强制保存文件内容后退出vim编辑器。这个命令的作用是把内存缓冲区中的数据强制写到启动vim时指定的文件中,然后退出vim编辑器。
  • :w! + filename → 把编辑处理后的结果强制保存到指定的文件中,如果文件已经存在,则覆盖现有的文件。
  • :wq! + filename→ 把编辑处理后的结果强制保存到指定的文件中,如果文件已经存在,则覆盖现有文件,并退出vim编辑器。

花点时间熟悉一下上面的命令,一旦你掌握他们了,你就几乎可以干其它编辑器都能干的事了。但是到现在为止,你还是觉得使用vim还是有点笨拙,不过没关系,你可以进阶到第三级了。

第三级 – 更好,更强,更快

3.1 更好

下面,让我们看一下vim是怎么重复自己的:

3.1.1 . → (小数点) 可以重复上一次的命令

3.1.2 N<command> → 重复某个命令N次

下面是一个示例,找开一个文件你可以试试下面的命令:

2dd → 删除2行
3p → 粘贴文本3次
100idesu [ESC] → 会写下 "desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu "
. → 重复上一个命令—— 100 "desu "。

  1. → 重复 3 次 "desu" (注意:不是 300,这一点需要特别注意)。

3.2 更强

你要让你的光标移动更有效率,你一定要了解下面的这些命令,千万别跳过。

3.2.1 NG → 到第 N 行

(注意命令中的G是大写的,另我一般使用 : N 到第N行,如 :137 到第137行)

3.2.2 gg → 到第一行。

(相当于1G,或 :1)

3.2.3 G → 到最后一行。

3.2.4 按单词移动:

w → 到下一个单词的开头。
e → 到下一个单词的结尾。
如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成
如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。


line_moves.jpg

还有一个很有用的命令是 dt" → 删除所有的内容,直到遇到双引号—— "。

4.2 区域选择 <action>a<object><action>i<object>

在visual 模式下,这些命令很强大,其命令格式为

<action>a<object><action>i<object>

vi" → 会选择 foo.
va" → 会选择 "foo".
vi) → 会选择 "foo".
va) → 会选择("foo").
v2i) → 会选择 map (+) ("foo")
v2a) → 会选择 (map (+) ("foo"))


textobjects.png

4.3块操作: <C-v>

块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

4.4 自动提示: <C-n> 和 <C-p>

在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能就出现了……

<center> completion.gif </center>

4.5 可视化选择: v,V,<C-v>

前面,我们看到了 <C-v>的示例 (在Windows下应该是<C-q>),我们可以使用 v 和 V。一但被选好了,你可以做下面的事:

学习vim就像学弹钢琴一样,一旦学会,受益无穷。

上一篇 下一篇

猜你喜欢

热点阅读