运维必备技能vim编辑器

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个模式化编辑器

vim的三种基本模式分别是

命令模式
  输入模式
  行末模式

打开文件

vim [OPTIONS] [FILE...]

+* 打开文件后光标处于第*行的行首
+/PATTERN 打开文件后光标处于第一个被 PATTERN 所匹配行的行首

模式转换


  命令模式 > 输入模式

  i : 在光标处输入
    a : 在光标处后方输入
    I : 在光标所在行的行首输入
    A : 在光标所在行的行尾输入
    o : 在光标所在行的下方新增一个行输入
    O : 在光标所在行的上方新增一个行输入
    s : 删除当前光标所在字符并输入
    S : 删除当前光标所在行并输入


  输入模式 > 命令模式
    ESC


  命令模式 > 行末模式
    :

行末模式 > 命令模式
    ESC

关闭文件的常见用法

 在命令模式
     ZZ 保存并退出

 在行末模式
    :x 保存并退出
    :w FILE 另存为
    :w 保存
    :q 退出
    :! 强制
    他们可以组合使用 如:wq!强制保存退出


  光标跳转

  字符间跳转
    h 向左跳转 (键盘上右手放置的位置)
    j 向下跳转 h在左 l在右
    k 向上跳转 (世界地图上日本在韩国下面所以)
    l 向右跳转 j向下 k向上

  单词间跳转
    w 跳转到下一个单词的词首
    e 当前或下一个单词的词尾
    b 当前或上一个单词的词首


  行首行尾跳转
    ^ 跳转至行首第一个非空白字符
    0 跳转至绝对行首
    $ 跳转至绝对行尾


  行间跳转
    *G | *gg 跳转至*行
    gg 跳转至第一行
    G 跳转至最后一行


  句间跳转
    (     前一个句子
     ) 后一个句子


  段间跳转
    {     前一个段落
    }     后一个段落


vim的编辑命令

  字符编辑
    x 删除光标所在处的字符
    xp 交换光标所在处字符和后面字符的位置

  替换命令
    r 替换命令所在处的字符 r CHAR

  删除命令
    d 可以结合光标跳转 实现范围删除
    d$ 删除光标所在处到绝对行尾的字符
    d^ 删除光标所在处到非空白行首的字符
    dd 删除光标所在行

复制命令

  y 可以结合光标跳转 实现范围复制
    yy 复制一整行

  粘贴命令
    大写P 粘贴在光标前面 ,如果是一整行则粘贴在上一行
    小写p 粘贴在光标后面 ,如果是一整行则粘贴在下一行


  其他编辑操作

可视化模式
    v 按字符选定
    V 按行选定
    结合编辑命令使用


  撤销操作
    u 撤销此前N个操作

  撤销此前的撤销操作
    ctrl + r

重复上一个操作
  .

vim自带的教程
这是个新手教程 就和玩一个新游戏一样他会教你操作

命令行输入 vimtutor


      vim末行模式

  查找

  / 从当前光标顺序查找
    ? 从当前光标逆序查找
    n 下一个 与命令方向相同
    N 上一个 与命令方向相反


  查找并替换

  地址定界s/要替换的内容(可以使用正则表达式)/替换为的内容/修饰符

  地址定界
    % 全文
    * 特定行 (可以用,隔开)
    $ 最后一行
    . 当前行

  修饰符
    i 忽略大小写
    g 全局替换 一行中匹配到多次 则全部替换

  vim的多窗口功能

  vim -o FILE1 FILE2 ... 水平分割多个文件
    vim -O FILE1 FILE2 ... 垂直分割多个文件

  ctrl + w s 水平切割当前窗口
    ctrl + w v 垂直切割当前窗口
    ctrl + w 箭头 切换窗口
    退出全部窗口 在之前的行末模式上加all即可

  批量注释
    ctrl + v 选要注释的行 然后shift + i 输入# 然后ESC 退出

  批量取消注释
    ctrl + v 选要取消注释的行 然后d


bash脚本编程之算数运算

因为shell是弱变量语言 在变量赋值后全部存储为字符型 所以当要进行数值运算时需要用到下面的方法

1 let name=算数表达式 然后 echo $name ( 经常使用与 let name++ 每运行一次给变量加1 )
2 expr 算数表达式
3 echo "$[算数表达式]"
4 echo "$((算数表达式))"

注意乘法再有些场景需要转义