zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【HAOI2014】贴海报
    【HAOI2016】食物链
    【NOI2003】银河英雄传
    【HAOI2013】花卉节
    【BZOJ1702】[usaco2007margold]队列平衡
    【网络流24】餐巾
    洛谷 [P1265] 公路修建
    全排列与 康托展开
    洛谷 [P1403] 约数研究
    高精度模板
  • 原文地址:https://www.cnblogs.com/huangsefeizhu/p/11505985.html
Copyright © 2011-2022 走看看