vim编辑器

文本编辑器,字处理器(内容为纯 ASCII )

vi:Visual Interface
vim: VI improved

全屏编辑器,模式化编辑器

vim模式编辑模式(命令模式)输入模式末行模式

模式转换

编辑–> 输入:

  • i : 在当前光标所处字符的前面,转为输入模式
  • a : 在当前光标所处字符的后面,转为输入模式
  • o : 在当前光标所在行的下方,新建一行,并转为输入模式
  • I : 在当前光标所在行的行首,转换为输入模式
  • A : 在当前光标所在行的行尾,转换为输入模式
  • O : 在当前光标所在行的上方,新建一行,转换为输入模式

输入–> 编辑:

  • ESC

编辑–>末行:

  • 只有编辑模式才能转换为末行模式,输入模式不能直接转换末行模式:

末行–>编辑

  • ESC,ESC

一、打开文件

vim /path/to/somefile
  • vim +# : 打开文件并定位于第#行
  • vim + : 打开文件,定位至最后一行
  • vim +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首

默认处于编辑模式

二、关闭文件

  1. 末行模式关闭文件

    q   不保存退出
    wq  保存并退出
    q!  不保存退出
    w   保存
    w!  强行保存(只有管理员能操作)
    wq --> x 
    
  2. 编辑模式下退出

    ZZ   保存并退出
    

三、移动光标 (编辑模式)

  1. 逐字符移动

    h : 左
    l : 右
    j :    上
    k : 下
    #h : 向左移动#个字符
    
  2. 以单词为单位移动

    w : 移至下一个单词的词首
    e : 跳至当前或下一个单词的词尾
    b : 跳至当前或前一个单词的词首
    #w 
    
  3. 行内跳转:

    0 : 绝对行首
    ^ : 行首的第一个空白字符
    $ : 绝对行尾
    { :段落跳转(向上一个段落跳转)
    } :段落跳转(向下一个段落跳转)
    
  4. 行间跳转

    #G 跳转至#行
    G 最后一行
    

    末行模式下,直接给出行号即可

四、 翻屏操作

  • ctrl+f : 向下翻一屏
  • ctrl+b : 向上翻一屏
  • ctrl+d : 向下翻半屏
  • ctrl+u : 向上翻半屏

五、删除单个字符

  • x : 删除光标所在处单个字符
  • X : 删除光标前的字符
  • #x :删除光标所在处及向后的共#个字符

六、删除命令: d

  1. d命令和跳转命令组合使用

    d motion

    其中:
        d      - 删除操作符。
        motion - 操作符的操作对象(在下面列出)。
    
    一个简短的动作列表:
        w - 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符。
        e - 从当前光标当前位置直到单词末尾,包括最后一个字符。
        $ - 从当前光标当前位置直到当前行末。
    

    #d跳转符 删除跳转符指定范围的#号个

    #dw 删除光标所在处到下#个单词的词首之间的字符
    #de 删除当前光标所在位置 到  离当前光标最近的 下 第#个单词词尾 之间的字符
    #db 
    

    dd : 删除光标所在行

    #dd : 删除包括当前光标所在行在内的#行
    

    d$ (D是它的缩写): 删除当前位置到行尾的字符

    上面已经提到过删除操作符和动作的组合,您可以在组合中动作之前插入一个数字以删除更多:
    d number(数字) motion

  2. 末行模式下:

    startADD,endADDd
        :1,8d
        :.,+5d
        :.,100d
    
    .   : 当前行
    $   : 最后一行
    +#  : 向下的#行
    

七、粘贴命令

  • p:如果删除的或复制的为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面

  • P:如果删除的或复制的为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面

八、复制命令: y

用法同d命令相同

九、修改:先删除内容,再转换为输入模式

  • c :用法同d命令
  • cw:
  • ce:
  • cb:

提示:请注意 ce 命令不仅仅是删除了一个单词,它也让您进入插入模式了。

十、替换:r

  • r:替换单个字符

  • R:替换模式

十一、撤销编辑操作:u

  • u:撤销前一次的编辑操作

  • U(大写u): 撤消在一行中所做的改动

  • 连续u命令可撤销此前的n此操作(vim最多可保存50次编辑操作,所以最多可撤销前50次操作)

  • 还原最近一次撤销操作 ctrl+r

十二、重复前一次编辑操作

.

十三、可视化模式

  • v: 按字符选取

  • V : 按矩形选取

十四、查找

  • /pattern 从当前光标所在行向文件尾部查找符合pattern的字符

  • ?pattern 从当前光标所在行向文件头部查找符合pattern的字符

  • n 跳转下一个匹配字符串

  • N 跳转上一个匹配字符串

十五、查找并替换

  • 在末行模式下使用s命令

  • ADDR1,ADDR2s@PATTERN@string@gi

    • 如 :1,5s/dir/DIR/g

    • 1,$ : 表示全文

    • % : 表示全文

十六、使用vim编辑多个文件

vim FILE1 FILE2 FILE3

    :next 切换至下一个文件
    :prev 切换至钱一个文件
    :last 切换至最后一个文件
    :first 切换至第一个文件

退出
    :qa 全部退出

十七、 分屏显示一个文件

Ctrl+w, s : 水平拆分窗口

Ctrl+w, v : 垂直拆分窗口

在窗口件切换光标:

    Ctrl+w,↑   切换到上半屏
    Ctrl+w,↓   切换到下半屏

    Ctrl+w,←   切换到左半屏
    Ctrl+w,→   切换到右半屏

:qa 关闭所有窗口

十八、分窗口显示多个文件

  • vim -o :水平分割显示
  • vim -O :垂直分割显示

十九、将当前文件中部分内容另存为另一个文件

末行模式下使用w命令

    :w
    :ADDR1,ADDR2w /path/to/somwhere

二十、经另外一个文件的内容填充在当前文件中

:r /path/to/somewhere

二十一、跟shell交互

:! command

二十二、高级话题

  1. 显示或取消行号
    :set number
    :set nu
    :set nonu
    
  2. 显示忽略或区分字符大小写

    :set ignorecase
    :set ic
    :set noignorecase
    :set noic
    
  3. 设置自动缩进

    :set sutoindent
    :set ai
    :set noai
    
  4. 查找到的文本高高亮显示或取消

    :set hlsearch
    :set nohlsearch
    
  1. 语法高亮

    :syntax on  开启
    :syntax off 关闭
    

    这些设定只对当前vim进程生效

二十三、配置文件

  • /etc/vim/vimrc ubuntu
  • /etc/vimrc redhat
  • ~/.vimrc

杂项

vim 强制退出进程

交换文件 “.initramfs.conf.swp” 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 退出((Q)), 中止((A)):