Linux文本编译工具VIM详解

                                           作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.VIM概述

1>.vim简介

>.vi:
  全称Visual editor,即文本编辑器,历史悠久,基本上最小化安装就该命令。 >.文本:ASCII, Unicode >.文本编辑种类:
    行编辑器:sed
    全屏编辑器:nano, vi,vim >.vim
    全称:VIsual editor iMproved,是对vi的一个版本的增强(比如语法高亮,),最小化安装的时候并没有按照该命令而是需要手动安装。
    官网:https://www.vim.org/ >.其他编辑器:
    gedit 一个简单的图形编辑器
    gvim 一个Vim编辑器的图形版本

2>.打开文件

vim [OPTION]... FILE...  
  +# 打开文件后,让光标处于第#行的行首,+默认行尾
  +/PATTERN 让光标处于第一个被PATTERN匹配到的行的行首
  –b file 二进制方式打开文件
  –d file1 file2… 比较多个文件
  -m file 只读打开文件 vim -e file 或 ex file 直接进入ex模式 如果该文件存在,文件被打开并显示内容 如果该文件不存在,当编辑后第一次存盘时创建它

3>.vim:一个模式编辑器 

击键行为是依赖于 vim的 的“模式” 

三种主要模式: 
  命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
  插入(Insert)或编辑模式:修改文本
  扩展命令(extended command )模式:保存,退出等 Esc键 退出当前模式 Esc键 Esc键 总是返回到命令模式

4>.vim模式 

5>.模式转换 

命令模式 --> 插入模式
  i insert, 在光标所在处输入
  I 在当前光标所在行的行首输入
  a append, 在光标所在处后面输入
  A 在当前光标所在行的行尾输入
  o 在当前光标所在行的下方打开一个新行
  O 在当前光标所在行的上方打开一个新行 插入模式 --------> 命令模式
  ESC 命令模式 --------> 扩展命令模式
  : 展命令模式 --------> 命令模式
  ESC,enter

6>.关闭文件

扩展命令模式:  
  :q 退出
  :q! 强制退出,丢弃做出的修改
  :wq 保存退出
  :x 保存退出 命令模式
  ZZ 保存退出
  ZQ 不保存退出

 

二.扩展命令模式 

按“:”进入Ex模式

创建一个命令提示符: 处于底部的屏幕左侧

常见命令:
  w 写(存)磁盘文件
  wq 写入并退出
  x 写入并退出
  q 退出
  q! 不存盘退出,即使更改都将丢失
  r filename 读文件内容到当前文件中
  w filename 将当前文件内容写入另一个文件
  !command 执行命令
  r!command 读入命令的输出

三.命令模式光标跳转 

字符间跳转:
  h: 左
  l: 右
  j: 下
  k: 上
  #COMMAND:跳转由#指定的个数的字符 单词间跳转:
  
  w:下一个单词的词首
  e:当前或下一单词的词尾
  b:当前或前一个单词的词首
  #COMMAND:由#指定一次跳转的单词数 当前页跳转:
  H:页首
  M:页中间行
  L:页底
  zt:将光标所在当前行移到屏幕顶端
  zz:将光标所在当前行移到屏幕中间
  zb:将光标所在当前行移到屏幕底端 行首行尾跳转:
  ^ 跳转至行首的第一个非空白字符
   跳转至行首
  $ 跳转至行尾 行间移动:
  #G 或者扩展命令模式下:# 跳转至由第#行
  G 最后一行
  1G, gg 第一行 句间移动:
  ) 下一句
  ( 上一句 段落间移动:
  } 下一段
  { 上一段

四.命令模式翻屏操作 

Ctrl+f 向文件尾部翻一屏 

Ctrl+b 向文件首部翻一屏 

Ctrl+d 向文件尾部翻半屏 

Ctrl+u 向文件首部翻半屏 

五.命令模式操作 

字符编辑:  
  x 删除光标处的字符
  #x 删除光标处起始的#个字符
  xp 交换光标所在处的字符及其后面字符的位置
  ~ 转换大小写
  J 删除当前行后的换行符 替换命令(r, replace)
  r 替换光标所在处的字符
  R 切换成REPLACE模式 删除命令: 
  d 删除命令,可结合光标跳转字符,实现范围删除 
  d$ 删除到行尾 
  d^ 删除到非空行首 
  d0 删除到行首 
  dw 
  de 
  db 
  #COMMAND dd:删除光标所在的行 
  #dd 多行删除 D:从当前光标位置一直删除到行尾,等同于d$  复制命令(y, yank): 
  y 复制,行为相似于d命令 
  y$ 
  y0 
  y^ 
  ye 
  yw 
  yb 
  #COMMAND
yy:复制行 
  #yy 复制多行 Y:复制整行 

粘贴命令(p, paste):

  p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘 贴至当前光标所在处的后面

  P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘 贴至当前光标所在处的前面

改变命令(c, change)  
  c: 修改后切换成插入模式 命令模式 --> 插入模式 
  c$ 
  c^ 
  c0 
  cb 
  ce 
  cw 
  #COMMAND cc:删除当前行并输入新内容,相当于S 
  #cc    C:删除当前光标到行尾,并切换成插入模式 

六.命令模式:操作文本 

七.命令模式 

10iyinzhengjie [ESC] 粘贴“yinzhengjie”100次 

<start position><command><end position> 

常见Command
  y 复制
  d 删除
  gU 变大写
  gu 变小写
例如: 0y$ 命令
  
   → 先到行头
  y → 从这里开始拷贝
  $ → 拷贝到本行最后一个字符 di"   光标在”“之间,则删除”“之间的内容
yi(   光标在()之间,则复制()之间的内容
vi[   光标在[]之间,则选中[]之间的内容
dtx  删除字符直到遇见光标之后的第一个 x 字符
ytx  复制字符直到遇见光标之后的第一个 x 字符 

八.扩展命令模式:地址定界 

地址定界
  :start_pos,end_pos
  # 具体第#行,例如2表示第2行
  #,# 从左侧#表示起始行,到右侧#表示结尾行
  #,+# 从左侧#表示的起始行,加上右侧#表示的行数
    示例:,+ 表示2到5行
  . 当前行
  $ 最后一行
    .,$- 当前行到倒数第二行
  % 全文, 相当于1,$ /pattern/ 匹配pattern的行
/pat1/,/pat2/
  从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
  #,/pat/
  /pat/,$ 使用方式:后跟一个编辑命令
  d
  y
  w file: 将范围内的行另存至指定文件中
  r file:在指定位置插入指定文件中的所有内容

九.命令模式:查找 

查找  
  /PATTERN:从当前光标所在处向文件尾部查找
  ?PATTERN:从当前光标所在处向文件首部查找
  n:与命令同方向
  N:与命令反方向

十.命令模式:撤消更改 

  u 撤销最近的更改 
  #u 撤销之前多次更改
  U 撤消光标落在这行后所有此行的更改
  Ctrl - r 重做最后的“撤消”更改
  . 重复前一个操作
  #. 重复前一个操作#次

十一.vim的寄存器 

有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享 

寄存器名称a,b,…,z,格式:“
  寄存器放在数字和命令之间 如:"tyy 表示复制3行到t寄存器中,"tp 表示将t寄存器内容粘贴

未指定,将使用无命名寄存器 有10个数字寄存器,用0,,…,9表示,0存放最近复制内容,1存放最近删除内容。 当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享

十二.标记和宏(macro) 

  ma   将当前位置标记为a,26个字母均可做标记, mb 、 mc 等等
  'a 跳转到a标记的位置,实用的文档内标记方法,文档中跳跃编辑时很有用
  qa 录制宏 a,a为宏的名称
  q 停止录制宏
  @a 执行宏 a
  @@ 重新执行上次执行的宏

十三.扩展命令模式:查找并替换 

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

十四.编辑二进制文件 

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

十五.可视化模式 

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

十六.使用多个“窗口” 

多文件分割  
  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 退出

十七.定制vim的工作特性 

配置文件:永久有效
    全局生效:/etc/vimrc
    个人生效:~/.vimrc(推荐) 扩展命令模式:当前vim进程有效
() 行号
    显示:set number,简写 set nu
    取消显示:set nonumber, 简写 set nonu
() 忽略字符的大小写
    启用:set ignorecase,简写 set ic
    不忽略:set noic
() 自动缩进
    启用:set autoindent,简写 set ai
    禁用:set noai
() 复制保留格式
    启用:set paste
    禁用:set nopaste
() 显示Tab和换行符 ^I 和$显示
    启用:set list
    禁用:set nolist
() 高亮搜索
    启用:set hlsearch
    禁用:set nohlsearch
() 语法高亮
    启用:syntax on
    禁用:syntax off
() 文件格式
    启用windows格式:set fileformat=dos
    启用unix格式:set fileformat=unix
    简写 set ff=dos|unix
() 设置文本宽度
    set textwidth= (vim only)
    set wrapmargin=
() 设置光标所在行的标识线
    启用:set cursorline,简写 set cul
    禁用:set nocursorline

十八.了解更多

Set 帮助
  :help option-list
  :set or :set all vi/vim内置帮助
  :help
  :help topic
 Use :q to exit help vimtutor命令 菜鸟教程:https://www.runoob.com/linux/linux-vim.html

Linux文本编译工具VIM详解的更多相关文章

  1. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  2. Linux 文本对比 diff 命令详解(整理)

    diff 命令详解 1.概述 windows系统下面就有不错的文本对比工具可以使用,例如常用的Beyond Compare,WinMerge都是图形界面的比较工具而且使用非常方便,如果你仅仅是在win ...

  3. linux ffmpeg编译配置安装详解

    http://www.111cn.net/sys/linux/53039.htm ffmpeg是一开源的可跨平台使用的一个图形处理插件,这可以进行录制.转换以及流化音视频,同时可以对视频进行截图,下面 ...

  4. Java反编译工具Jad详解

    做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...

  5. [转] Linux抓包工具tcpdump详解

    http://www.ha97.com/4550.html PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使 ...

  6. Linux抓包工具tcpdump详解

    tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...

  7. Linux 日志切割工具cronolog详解

    一.前言 二.cronolog 简介 三.cronolog 特点 四.cronolog 安装 五.cronolog 使用 六.cronolog 总结 注,操作系统 CentOS 6.4 x86_64, ...

  8. apktool反编译工具使用详解

    文章转自: http://zhangyan1158.blog.51cto.com/2487362/683234 一.APKTOOL使用环境配置 1.安装JAVA并设置环境变量. 下载安装都很简单,关键 ...

  9. Linux 性能测试工具Lmbench详解

    Linux 性能测试工具Lmbench详解 2010-06-04 16:07 佚名 评测中心 字号:T | T Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定 ...

随机推荐

  1. shell中的shift左移参数命令

    shift命令用于对参数的向左移动,通常用于在不知道传入参数个数的情况下依次遍历每个参数,然后进行相应的处理(常见与Linux中各种程序的启动脚本).在扫描处理脚本程序的参数时,经常要用到shift命 ...

  2. Python线程池及其原理和使用(超级详细)

    系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互.在这种情形下,使用线程池可以很好地提升性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池. 线程池在系统启动时即 ...

  3. centos7 中查看log_bin是否开启以及开启log_bin

    1.查看是否开启的命名: 在mysql客户端执行:show variables like 'log_bin';      ON:代表开启  OFF:代表未开启 2. 开启log_bin 在配置文件vi ...

  4. Java分布式:分布式锁之Zookeeper

    Java分布式:分布式锁之Zookeeper 分布式锁系列教程重点分享锁实现原理 引入ZooKeeper ZooKeeper是什么呢? ZooKeeper 是一个开源的分布式协调服务,它可以在分布式系 ...

  5. JobStorage.Current property value has not been initialized. You must set it before using Hangfire Client or Server API.

    JobStorage.Current property value has not been initialized. You must set it before using Hangfire Cl ...

  6. Swagger2生成后台的API文档

    添加依赖: <!--Swagger2API生成--> <dependency> <groupId>io.springfox</groupId> < ...

  7. [转帖]Proof Of Work 工作量证明

    Proof Of Work 工作量证明 https://www.cnblogs.com/zhang-qc/p/10451817.html 借鉴了 哈希现金(Hashcash)-1997年 英国密码学专 ...

  8. DRF框架(七) ——三大认证组件之频率组件、jwt认证

    drf频率组件源码 1.APIView的dispatch方法的  self.initial(request,*args,**kwargs)  点进去 2.self.check_throttles(re ...

  9. scratch少儿编程第一季——09、声音模块:吹拉弹唱我也会

    各位小伙伴大家好: 上期我们学习了外观模块的指令,学会了制作特效. 本期我们来学习如何给游戏配音. 声音模块的指令不是很多,我们一起来看看吧. 首先第一个就是播放声音,里面默认插入了喵叫声. 我们点击 ...

  10. adminLTE2.4.18 bootstrap3 左侧菜单高亮

    adminLTE2.4.18  bootstrap3  左侧菜单高亮 //菜单 $(function(){ console.log('eeeeeeeeee'); $('.sidebar-menu li ...