返回顶部

linux文本编辑器vim详解

vim

1.打开文件

  • vim [option] … file... 打开文件

    +# 打开文件后,让光标处于第#行的行首
    
    +/字符串 打开文件后,光标处于第一个被匹配到字符串的行首
    
    -b file 二进制方式打开文件
    
    -d file1 file2 对比多个文件
    
    -m file 只读打开文件
    
    -e 直接进入ex,扩展命令 模式
    

2.vim的模式

2.1 模式分类

按键行为是依赖于vim的模式

  • 命令模式:默认模式,移动光标,剪切/粘贴文本
  • 插入或者编辑模式:修改文本
  • 扩展命令模式(末行模式):保存、退出等
  • 可视化模式

esc 键 退出当前模式

2.2 模式转换

  • 命令模式 —> 插入模式
    • i 在光标所在处插入
    • I 在当前光标所在行的行首插入
    • a 在光标所在处后面插入
    • A 在光标所在行的行尾插入
    • o 在当前光标所在行的下方打开一个新行
    • O 在当前光标所在行的上方打开一个新行
  • 插入模式 —> 命令模式
    • esc
  • 命令模式—> 末行模式
  • 扩展命令模式—>命令模式
    • esc enter
    • esc esc

2.3关闭文件

  • 扩展命令模式
    • :q 退出
    • :q! 强制退出
    • :wq 保存退出
    • :x 保存退出
  • 命令模式
    • ZZ 保存退出
    • ZQ 不保存退出

2.4扩展命令模式

  • 按“:”进入ex模式
  • 创建一个命令提示符:处于底部的屏幕左侧
  • 命令:
    • w 写(存)磁盘文件
    • wq 保存并退出
    • x 写入并退出
    • q 退出
    • q! 不存盘退出
    • r filename 读文件内容到当前文件中
    • w filename 将当前文件内容写入另外一个文件,另存为
    • !command 执行命令,回车返回到文本编辑模式
    • r!command 直接读入命令的输出

2.5 光标移动

命令模式光标跳转

  • 字符键跳转
    • h 左
    • l 右
    • j 下
    • k 上
    • # command 跳转#个字数的字符
  • 单词间跳转
    • w 下一个单词的次首
    • e 当前或者下一个单词的词尾
    • b 当前或者前一个单词的词首
    • #command 跳转#个单词
  • 当前页跳转
    • H 页首
    • M 中间
    • L 页底
    • zt 将光标所在行移动到屏幕顶端
    • zz 将光标所在行移动到屏幕中间
    • zb 将光标所在行移动到屏幕底端
  • 行首行尾跳转
    • ^ 跳转至行首的第一个非空白字符
    • 0 跳转至行首
    • $ 跳转至行尾
  • 行间移动
    • #G 扩展命令模式下:#跳转至第#行
    • G 最后一行
    • 1G 第一行
    • gg 第一行
    • :# 扩展命令模式下,跳转至#行
  • 段落间移动(空行)
    • } 下一段
    • { 上一段
  • 翻屏操作
    • ctrl+f 向文件尾部翻一屏
    • ctrl+b 向文件首部翻一屏
    • ctrl+d 向文件尾部翻半屏
    • ctrl+u 向文件首部翻半屏

3.命令模式操作

  • 字符编辑
    • x 删除光标处的字符
    • #x:删除#个字符
    • xp 交换光标所在处的字符与后面的字符
    • ~ 转换大小写
    • J 删除当前行后的换行符
  • 替换
    • r 替换光标所在处的字符
    • R 切换成替换模式
  • 删除
    • d 删除,可以结合光标跳转字符
    • d$ 删除到行尾
    • d^ 删除到非空行首
    • d0 删除到行首
    • dw: 删除一个单词
    • de: 向后删除一个单词
    • db 想前删除一个单词
    • \COMMAND
    • dd 删除光标所在的行
    • #dd 多行删除
    • dgg 删除到文件首部
    • dG 删除到文件尾部
    • D 相当于d$
  • 复制
    • y 复制,可以结合光标跳转字符
    • y$ 复制到行尾
    • y0 复制到行首
    • y^ 复制到非空行
    • ye 向后复制一个单词
    • yw 复制一个单词
    • yb 向前复制一个单词
    • #command
    • yy 复制行
    • #yy 复制多行
    • Y 复制整行
  • 粘贴
    • p 如果是整行,则粘贴当前行所在行的下方,否则,则粘贴在当前光标所在行的后面
    • P如果是整行,则粘贴当前行所在行的上方,否则,则粘贴在当前光标所在行的前面
  • 改变命令
    • c 修改后切换成插入模式
    • c$ 删除到行尾 切换成插入模式
    • c^ 删除到非空行切换成插入模式
    • c0 删除到行首切换成插入模式
    • cb 向前删除一个单词并且进入插入模式
    • ce 向后删除一个单词并且进入插入模式
    • cw 向后删除一个单词并且进入插入模式
    • #command
    • cc 删除当前行并输入新的内容
    • #cc 删除#行,并切换到插入模式
    • C 相当于c$ ,删除当前光标至行尾,并切换成插入模式
  • 10ialex [esc] 粘贴10次alex
  • 查找
    • /pattern 从当前光标所在处向文件底部查找
    • ?pattern 从当前光标所在处向文件首部查找
    • n 与命令同方向
    • N 与命令反方向
  • 撤销更改
    • u 撤销最近的更改
    • #u 撤销之前多次更改
    • U 撤销光标落在这行后所有此行的更改
    • ctrl+r 重做最后的操作 撤销撤销
    • . 重复前一个操作
    • n. 重复前一个操作n次

4.扩展命令模式

4.1地址定界

:start,end

  • 具体第#行

  • ,# 从左侧#表示起始行,到右侧#表示结尾行-

  • ,+# 从左侧#表示的起始行,加上右侧#表示的行数 :2,+3 表示2到5行

  • . 当前行
  • $ 最后一行
  • $-# 倒数第#+1行
  • .,$-1相当于当前行到倒数第二行
  • % 全文
  • /pat1/,/pat2/ 从第一个被pat1匹配到的行开始,一直到第一次被pat2匹配到的行开始
  • , /pat/ 从第#行开始,一直到第一次被pat2匹配到的行开始

  • /pat/,$ 从第一个被pat1匹配到的行开始,到行尾

地址定界-使用方式

后跟一个编辑命令

  • d 删除
  • y 复制
  • w file :将范围内的行另存到指定的文件中--另存为
  • r file 在指定位置插入指定文件中的内容

4.2 查找并替换

  • 😒 在扩展模式下完成查找替换操作
  • 格式 :地址定界 s/要查找的内容/替换为的内容/装饰器
    • 要查找的内容:可使用正则表达式,
    • 要替换的内容:不能使用正则表达式,,但可以使用\1,\2等,还可以使用“&”引用前面查找到整个内容
    • 修饰符
      • 默认情况下,每一行只替换第一个出现的
      • i 忽略大小写
      • g 全局替换
      • gc 全局替换,每次替换前询问
    • 查找替换中的分隔符/可以替换成其他字符v
      • @
      • #

5.可视化模式

允许选择的文本块

  • v 面向字符
  • V 面向行
  • ctrl -v 面向块
  • 可以化键可以与移动键结合使用
    • w )} 箭头等
  • 突出显示的文字可以被删除,复制,变更,过滤,收拾,替换等

6.多文件操作

vim file1 file2 file3

  • :next 下一个
  • :prev 前一个
  • :first 第一个
  • :last 最后一个
  • :wall 保存所有
  • :qall 退出所有
  • :wqall

7.使用多个窗口

  • 多文件分割
    • vim -o|-O file1 file2
    • -o 水平分割
    • -O 垂直分割
    • 切换 ctrl+w
  • 单文件分割
    • ctrl-w,s 水平分割
    • ctrl-w,v 垂直分割
    • ctrl-w,q 取消相邻窗口
    • ctrl-w,o 取消全部窗口
    • :wqall

8.定制vim的工作特性

  • 配置文件:永久生效
    • 全局:/etc/vimrc
    • 个人:~/.vimrc
  • 扩展模式:当前vim进程有效
    • 行号 set nu 设置行号set nonu取消行号设置
    • 忽略字符大小写(搜索) set ic set noic
    • 自动缩进(和上一行对齐) set ai 设置缩进 set noai取消缩进
    • 高亮搜索 set hlsearch set nohlsearch
    • 语法高亮 syntax on syntax off
    • 文件格式
      • 启用windows格式: set fileformat=dos
      • 启用unix格式:set fileformat=unix
      • 简写 set ff=dos|unix
    • 设置贯标所在行的标识线 set cul set nocul
    • 获取帮助 :set all
    • vim 内置帮助
      • :help
      • :help topic
      • vimtutor

posted @ 2019-08-01 18:08  高薪程序员  阅读(370)  评论(0编辑  收藏  举报