每天学习一点新东西--vim篇(一)

作为程序员来说,编辑器vim和emacs是不可不了解的。一直听说vim的强大,但困于一直用window系统,而写代码也找到了sublime text3这样优秀的编辑器,所以没有学的欲望。从另一方面来说,接触到好多IDE都集成的命令行模式,可见仍有学习的必要。因此打算每天学习一些,包括但不限于vim,以后也可能会学习其他工具或者语言。总之,每天学习一点新的东西,乐此不疲。

第一课:最基本的操作

从命令行运行vim:vim
命令行模式打开一个文件:vim file.txt,有则打开,无则创建
打开后,可以看到每行前都有个波浪号,表示这行不在文件中。


vim的工作模式
命令模式,插入模式和visual模式
刚打开vim是处于命令模式,按i键后进入插入模式,左下角有insert字样,可以是输入内容,退回命令模式是按Esc键。
在命令模式下,移动光标可用h(左)j(下)k(上)l(右)来移动,最快捷。

删除当前字符:x
删除一行:dd
撤销最近的一次操作:u
恢复最近的一次撤销操作:CTRL+r
保存当前文件并退出:ZZ
退出但不保存::q!
如果知识看了文件但没有修改,那么可以省去上面命令的

其他几个最基本的命令:
在当前行的末尾插入字符(进入插入模式,并定位到行尾):A键(append)
在光标的下一行插入一个空行,并把光标移到下一行:o键(open)

a //在当前光标位置的右边添加文本
i //在当前光标位置的左边添加文本
A //在当前行的末尾位置添加文本
I //在当前行的开始处添加文本(非空字符的行首)
O //在当前行的上面新建一行
o //在当前行的下面新建一行
R //替换(覆盖)当前光标位置及后面的若干文本
J //合并光标所在行及下一行为一行(依然在命令模式)

获取帮助信息:
:help
:help subject:获取某一命令的帮助

有时,同一个快捷键在不同模式时代表不同的命令,vim 默认认为查询的是命令模式下的那个命令。可以加上前缀来区分不同的模式。i_ 表示插入模式。v_ 表示VISUAL模式。: 表示ex模式。比如下面的例子:

:help i_CTRL-H

:help :quit

第二课:更快速的编辑

快速的移动光标

将光标移动到下一个单词的开始:w
将光标移动到上一个单词的开始:b
类似的,2w表示向后移动两个单词
移动到一行的行尾:$
移动到一行的开始:home
移动到一行的第一个非空白字符:^

一行中进行查找字符
从当前位置向后查找第一次出现x的位置,并移动光标:fx
从当前位置向前查找第一次出现x的位置,并移动光标:Fx
若是没有找到,不移动光标
类似的还有一对命令t与T。与f和F类似,不过它会停在查找到的字符之前一个字符

移动光标到指定的行
移动到指定的行n:nG
移动到最后一行:G

显示行号::set numnber
隐藏行号::set nonumber
给出当前光标所在的行列信息:CTRL+G

翻页:
向下滚动半屏文字:CTRL+U
向上滚动半屏文字:CTRL+D

删除文字
删除一行:dd
从当前位置删除到当前单词结束(连空格):dw
W是将光标移动到下一个单词的开始位置。
类似的,删除3个单词:3dw或者d3w
实际上,d命令后面可以跟着任意的光标移动命令,比如 dfi 表示从当前位置一直删到第一次出现i为止。当然,如果当前行没有找到i则上面的命令就什么都不做,因为这时光标没有移动。

重复上一次的命令:.(一个句号)
合并两行(当前行与下一行):J
改变当前字符的大小写:~

遇到重复操作时,可以录制一段键盘宏:q命令

假设我们的文件中有如下几行。
stdio.h
fcntl.h
unistd.h
stdlib.h
我们希望将其编辑为:
include “stdio.h”
include ”fcntl.h”
include ”unistd.h”
include ”stdlib.h”
首先将光标移动到第一行的开始。
然是输入如下的命令:
qa
^
i#include “
$
a”
j
q

这样就录好了一段宏,宏名为a。

之后执行3次这个宏:3@a

总结一下:目前认为比较重要的几个命令:
移到行尾:$
移到行头:home
移到行尾并插入:A

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值