第四天:文件处理工具VIM

发布时间 2024-01-07 18:34:55作者: djyhello

一、文本编辑工具简介

1、全屏编辑器:nano(字符工具),gedit(图形化工具),vi,vim,行编辑器:sed

2、vi:Visual editor,文本编辑器,是Linux必备工具之一,功能强大,学习曲线较陡峭,学习难度大

3、vim :Visual  editor  iMproved    , 和vi使用方法一致,但功能更为强大,不是必备软件。  官网:www.vim.org; 学习网站:https://www.w3cschool.cn/vim/

 4、gvim   :一个vim编辑器的图形版本

二、VIM命令详解  vim  [OPTION] ...  FILE ...

1、常用参数

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

  +/PATTERN  让光标处于第一个被PATTERN匹配到的行行首

  -b file   二进制方式打开文件

  -d file1 file2     比较多个文件,相当于vimdiff

  -m  file  只读打开文件

  -e file     直接进入ex模式,相当于执行ex  file

  -y file  Easy  mode  ,直接可以操作文件,ctrl+o:wq|q!,保存和不保存退出

2、三种主要模式

  命令或普通模式:默认模式,可以实现移动光标,剪切/粘贴文本

  插入(insert)或编辑模式,用于修改文本

  扩展命令或命令行模式 :保存,退出等

3、三种模式转换

  命令模式--》插入模式

    i  insert  ,在光标所在处输入

    I   在当前光标所在行的行首输入

    a  append ,在光标所在处后面输入

    A   在当前光标所在行的行尾输入

    o  在当前光标所在行的下方打开一个新行

    O  在当前光标所在行的上方打开一个新行

  插入模式---ESC --->命令模式

  命令模式---:---->扩展命令模式

  扩展命令模式---ESC,enter ----->命令模式

3、扩展命令模式:按 :进入

   w    写(存)磁盘文件

  wq    写入并退出

  x    写入并退出

  X    加密

  q    退出

  q!    不存盘退出,即使更改都将丢失

  r    读文件内容到当前文件中

  w    将当前文件内容写入另一个文件

  !command  执行命令

  e!command  读入命令的输出

 4、地址定界  :start_pos; end_pos CMD

  (1)格式

  #  第#行

  #,#  从左#行,到右#行

  #,+#  从左#行,到右+#行

  .  当前行

  $  最后一行

  .,$-1  当前行到倒数第二行

  %    全文

  (2)命令

   d    删除

  y    复制

  w file   将范围内的行另存到指定文件中

  r  foile  在指定位置插入指定文件中的所有内容

  t#行号    将前面指定的行复制到#行后

  m#行号    将前面指定的行移动到#行后

 5、查找并替换

  s/要查找的内容/替换为的内容/修饰符

   

   修饰符:  i  忽略大小写;     g  全局替换,默认情况下,每一行只替换第一次出现;   gc  全局替换,每次替换前询问

  分隔符:#,@

6、定制vim的工作特性

  (1)配置文件地址

     /etc/vimrc   全局

     ~/.vimrc  个人

  (2)行号:

      set number    /  set nonumber

  (3)忽略字符的大小写  set ignorecase     set noic

  (4)自动缩进:set  autoindent       set noai

  (5)复制保留格式:set paste     set nopaste

  (6)显示tab^|和换行符和¥显示

      set list      set nolist 

  (7)高亮搜索:set hlsearch      set nohlsearch

  (8)语法高亮:  syntax on     syntax off

  (9)文件格式 :set fileformat=dos /unix

  (10)TAB用空格代替:set expandtab    set noexpandtab

  (11)tab 用指定的空格的个数代替: set  tabstop=#       

  (12)设置缩进宽度:

      #向右缩进    命令模式 >>

      #向左缩进     命令模式 <<

      设置缩进为4个字符:  set   shiftwidth=4

  (13)设置文本宽度  set textwidth=95     set wrapmargin=15

  (14)设置光标所在行的标识线:set  cursorline     set nocursorline

  (15)加密:set  key=password   set key=

  (16)了解更多::

        :help option-list

        :set or :set all

7、命令模式

 (1)ZZ  保存退出          ZQ不保存退出

(2)光标跳转:  h 左     L右     j下     K  上

(3)单词单跳转:

    w:下一个单词的词首

    e:当前或下一单词的词尾

    b:当前或前一个单词的词首

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

(4)当前页跳转

    H:页首

    M:页中间行

    L:页底

    zt:将光标所在当前行移到屏幕顶端  

    zz:将光标所在当前行移到屏幕中间

    zb:将光标所在当前行移到屏幕底端

 (5)行首行尾跳转

    ^  跳转至行首的第一个非空白字符

     o 跳转至行首

    $ 跳转至行尾

(6)行间移动

    #G  或者扩展命令模式下

    :#   跳转至由第#行

    G    最后一行

    1G,gg    第一行

(7) 句间移动:

   ) 下一句

  (  上一句

(8)段落间移动

   } 下一段

   { 上一段

(9)命令模式翻屏操作

   ctrl+f   向文件尾部翻一屏 

    ctrl+b  向文件首部翻一屏

    ctrl+d  向文件尾部翻半屏

    ctrl+u  向文件首部翻半屏

(10)字符编辑

   x  剪切光标处的字符

  #x  剪切光标处起始的#个字符

  xp  交换光标所在处的字符及其后面字符的位置

  ~  转换大小写

  j   删除当前行后的换行符

(11)替换命令

  r  只替换光标所在处的一个字符

  R  切换成REPLACE模式

(12)删除命令

  d  删除命令,可结合光标跳转字符,实现范围删除

  d$  删除到行尾

  d^  删除到非空行首

  d0  删除到行首

  dw

  de

  db

  #COMMAND

  dd:  剪切光标所在的行

  #dd  多行删除

  D  从当前光标位置一直删除 到行尾,等同于d$

(13)复制命令(yank)

  y  复制,行为相似于d,命令

  y$

  y0

  y^

  ye

  yw

  yb

  #COMMAND

  yy  复制行

  #yy  复制多行

  Y  复制整行

(14) 粘贴命令(paste)

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

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

(15) 改变命令(change)

  命令C删除后切换成插入模式

(16) vimtutor:  vim说明书

三、其他工作

1、cat 

2、tac   倒着显示文件内容

3、rev   同一行倒着写

4、hexdump   显存非文本16进制

5、more   

6、less  翻页显示  ,支持管道

7、head :显示文件的前几行

8、tail   -f  跟踪日志变化

 9、cut  :按分隔符,剪切内容

 

10、df   

 

11、paste     两个文件合并      竖转横

 

12、wc    单词统计   wc -l 

13、sort   对文件进行排序,按字符顺序

14、uniq   去重

15、diff  比较两个文件不同

16、 patch     复制在其它文件中进行的改变

17、vimdiff   相当于vim -d

18、cmp   比较两个二进制文件