1.7 linux基础(七)

1.7 linux基础(七)

vim简介

vi: Visual Interface,文本编辑器

文本:ASCII, Unicode

文本编辑种类: 行编辑器: sed

全屏编辑器:nano, vi vim - Vi Improved

其他编辑器: gedit 一个简单的图形编辑器

gvim 一个Vim编辑器的图形版本

1.7.1 vim:一个模式编辑器

击键行为是依赖于 vim的 的“模式” 三种主要模式:

命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本

插入(Insert)或编辑模式: 修改文本 扩展命令(extended command )模式: 保存,退出等

Esc键 退出当前模式

Esc键 Esc键 总是返回到命令模式

模式转换:

编辑-->输入:

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

输入-->编辑:

  • ESC

编辑-->末行:

末行-->编辑:
​ ESC, ESC

1.7.2 打开文件(默认处于编辑模式)

vim [OPTION]... FILE...

vim /path/to/somefile

  • +#: 打开文件后,让光标处于第#行的行首,+默认行尾

  • +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的 行首

  • –b file二进制方式打开文件

  • –d file1 file2… 比较多个文件

  • -m file 只读打开文件

  • ex file 或 vim –e 直接进入ex模式

如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它

1.7.3 关闭文件

1.7.3.1 末行模式关闭文件

  • :q 退出

  • :wq 保存并退出

  • :q! 不保存并退出

  • :w 保存

  • :w! 强行保存

  • :wq 保存退出

  • :x 保存退出

1.7.3.2 编辑模式下退出

  • ZZ: 保存并退出
  • ZQ:不保存退出

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

1、逐字符移动:

  • h: 左
  • l: 右
  • j: 下
  • k: 上
  • h: 跳转由#指定的个数的字符;

2、以单词为单位移动

  • w: 移至下一个单词的词首

  • e: 跳至当前或下一个单词的词尾

  • b: 跳至当前或前一个单词的词首

  • w:由#指定一次跳转的单词数

3、行内跳转:

  • 0: 绝对行首

  • ^: 行首的第一个非空白字符

  • $: 绝对行尾

4、行间跳转

  • G:跳转至第#行;

  • G:最后一行
  • 1G, gg: 第一行 8gg 跳转至第8行
  • 末行模式下,直接给出行号即可

1.7.5 翻屏

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

1.7.6、删除单个字符

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

  • J:删除当前行后的换行符

1.7.7 删除命令: d

  • d命令跟跳转命令组合使用;#dw, #de, #db
  • dd: 删除当前光标所在行
  • dd: 删除包括当前光标所在行在内的#行;

  • d$: 删除到行尾
  • d^:删除到非空行首
  • d0:删除到行首
    末行模式下:
    StartADD,EndADDd
  • .: 表示当前行
  • $: 最后一行
  • +#: 向下的#行

1.7.8 粘贴命令 p

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

1.7.9 复制命令 y

用法同d命令

  • y$
  • y0
  • y^
  • ye
  • yw
  • yb

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

  • c: 修改后切换成插入模式
    用法同d命令
  • c$
  • c^
  • c0
  • cb
  • ce
  • cw
  • COMMAND

  • cc:删除当前行并输入新内容,相当于S
  • cc:

  • C:删除当前光标到行尾,并切换成插入模式

1.7.11 替换:r

R: 替换模式

1.7.12 撤消编辑操作 u

  • u:撤消前一次的编辑操作
    连续u命令可撤消此前的n次编辑操作
  • u: 直接撤消最近#次编辑操作

  • u撤销最近的更改
  • u撤销之前多次更改

  • U 撤消光标落在这行后所有此行的更改
  • 按Ctrl - r重做最后的“撤消”更改
  • . 重复前一个操作
  • n.重复前一个操作n次
  • 撤消最近一次撤消操作:Ctrl+r

1.7.13 、重复前一次编辑操作

  • .

1.7.18 可视化模式

  • 允许选择的文本块
    • v 面向字符
    • V 面向行
    • ctrl-v 面向块
  • 可视化键可用于与移动键结合使用: w ) } 箭头等
  • 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

1.7.19 查找

  • /PATTERN
  • ?PATTERN
  • n:与命令同方向
    = N:与命令反方向

1.7.20 查找并替换

  • 在末行模式下使用s命令
  • ADDR1,ADDR2s@PATTERN@string@gi
    1,$
  • %:表示全文
  • s: 在扩展模式下完成查找替换操作
  • 格式:s/要查找的内容/替换为的内容/修饰符
  • 要查找的内容:可使用模式
  • 替换为的内容:不能使用模式,但可以使用1, 2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
  • 修饰符:
    • i: 忽略大小写
    • g: 全局替换;默认情况下,每一行只替换第一次出现
    • gc:全局替换,每次替换前询问 查找替换中的分隔符/可替换为其它字符,
    • 例如 s@/etc@/var@g s#/boot#/#i

1.7.21 编辑二进制文件

  • 以二进制方式打开文件
    vim –b binaryfile
  • 扩展命令模式下,利用xxd命令转换为可读的十六进制 :%!xxd 编辑二进制文件
  • 扩展命令模式下,利用xxd命令转换回二进制 :%!xxd –r 保存退出

1.7.22 多文件模式

  • vim FILE1 FILE2 FILE3 ...

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

1.7.23 使用多个“窗口”

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

  • 多文件分割
    vim -o|-O FILE1 FILE2 ...

    • -o: 水平分割
    • -O: 垂直分割 在窗口间切换:Ctrl+w, Arrow
  • 单文件窗口分割:

    • Ctrl+w,s : split, 水平分割
    • Ctrl+w,v : vertical, 垂直分割
    • ctrl+w,q :取消相邻窗口
    • ctrl+w,o :取消全部窗口 :wqall 退出
  • 在窗口间切换光标:
    Ctrl+w, ARROW

  • :qa 关闭所有窗口

1.7.24 将当前文件中部分内容另存为另外一个文件

  • 末行模式下使用w命令
  • :w
  • :ADDR1,ADDR2w /path/to/somewhere

1.7.25 将另外一个文件的内容填充在当前文件中

  • :r /path/to/somefile 在指定位置插入指定文件中的所有内容
  • w /path/to/somefile 将范围内的行另存至指定文件中

1.7.26 跟shell交互

:! COMMAND

1.7.27 定制vim的工作特性

  • 配置文件:永久有效
    • 全局:/etc/vimrc
    • 个人:~/.vimrc
      扩展模式:当前vim进程有效
  • (1) 行号 显示:set number, 简写为set nu 取消显示:set nonumber, 简写为set nonu
  • (2) 忽略字符的大小写 启用:set ic 不忽略:set noic
  • (3) 自动缩进 启用:set ai 禁用:set noai
  • (4) 智能缩进 启用:smartindent 简写 set si 禁用:set nosi
  • (5) 高亮搜索 启用:set hlsearch 禁用:set nohlsearch
  • (6) 语法高亮 启用:syntax on 禁用:syntax off
  • (7) 显示Tab和换行符 ^I 和$显示 启用:set list 禁用:set nolist
  • (8) 文件格式 启用windows格式:set fileformat=dos 启用unix格式:set fileformat=unix 简写: set ff=dos|unix
  • (9) 设置文本宽度 启用: set textwidth=65 (vim only) 禁用: set wrapmargin=15
  • (10) 设置光标所在行的标识线 启用:set cursorline,简写cul 禁用:set no cursorline
  • (11) 复制保留格式 启用: set paste 禁用: set nopaste

1.7.28 了解更多

  • Set 帮助
    • :help option-list
    • :set or
    • :set all
  • vim内置帮助
    • :help :help topic
    • Use :q to exit help
  • vimtutor
原文地址:https://www.cnblogs.com/huangsefeizhu/p/11505985.html