VIM 操作

Created 星期二 29 九月 2015

键盘对应图

命令合集

常用操作

删除行:

光标当前50行后面的所有行:50,$d 50为当前行号;
光标当前50行前面的所有行:   dg命令
dd        删除一整行
d$        删除光标位置到本行结尾
d0        删除光标位置到本行开头
d1G       删除光标所在行至第一行
dg        删除光标所在行至最后一行;

删除列:

例如想要删除前三行的前三列内容

  1. 把光标移动到第一行的第一个字符
  2. 按下Ctrl+V组合键
  3. 移动光标到第三行的第三列
  4. 按x键

批量注释

:3,5s/^/#/g   
注掉3至5行;

取消注释

:3,5s/^#//g

批量替换

:3,$s/xie/wang/g
从第三行开始,xie 替换为wang

字符删除

x            删除光标所在处字符
X            删除光标所在前字符
这里没有什么可注意的地方,但需要说明一下的是

通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的

如果是头几天使用还好说,但从长久考虑,你还需要学习下面的删除命令

单词删除

dw            删除到下一个单词开头
de            删除到本单词末尾
dE            删除到本单词末尾包括标点在内
db            删除到前一个单词
dB            删除到前一个单词包括标点在内
很明显,d是delete的缩写,而上面的x则是老式的清除意思

这里e表示往前删除一个单词,
b表示往后删除一个单词,
第一节中移动写的很清楚

要注意的是e b会忽略标点,如don't,它们会把这当做三个单词don、‘ 和 t 来删除 而大写的E B则不会

删除空行

:g/^\s*$/d

简单解释一下:

g :全区命令
/ :分隔符
^\s*$ :匹配空行,其中^表示行首,\s表示空字符,包括空格和制表符,*重复0到n个前面的字符,$表示行尾。
/d :删除该行

兼容问题 bash^M

-bash: ./datacollect.sh: /bin/bash^M: bad interpreter: 没有那个文件或目录

错误分析:因为操作系统是Windows,我在Windows下编辑的脚本,所以有可能会存在不可见的字符,监本文件是dos格式的,即每一行的行尾以Windows默认的格式来进行表示。可以有许多办法来查看这个文件是DOS格式的还是UNIX格式的们还是MAC格式的。 解决方法:

方法
:set ff 回车
fileformat=dos
:set fileformat=unix