笔记·vim编辑器

文本查看及处理工具:wc,cut,sort,uniq,diff,patch,head,tail,paste

#wc [-l|-w|-c]
#cut -d: -f1,3-5,7 /etc/passwd
  -d CHAR:指定分隔符
  -f FIELDS:挑选出的字段
  #:指定的单个字段
  #-#:连续的多个字段
  #,#:离散的多个字段
  --output-delimiter=STRING指定输出分隔符
#df | tr -s ' '|cut -d' ' -f5 |tr -dc "[0-9\n]"
#df | tr -s ' ' % |cut -d% -f5 |tr -d '[:alpha:]'
#df | tail -n +2|tr -s ' ' % |cut -d% -f5
#df | tail -n +2|tr -s ' ' |cut -d' ' -f5 |tr -d %
#sort -t: -k3 /etc/passwd
  -n:基于数值大小进行排序
  -t CHAR:指定分隔符
  -k FIELDS:用于排序的字段
  -r:逆序排序
  -u:连续且重复的行只保留一次
#df | tr -s " " %|cut -d% -f5|tr -d '[:alpha:]' | sort -nr
#uniq:报告或移除重复的行
  -c:统计重复出现的次数
  -u:只显示没有重复的行
  -d:只显示有重复的行
#ss -nt|tail -n+2 |tr -s ' ' : |cut -d: -f6|sort|uniq -c|sort -nr |head -n2
#cat test1.txt test2.txt | sort |uniq -d    //取文件相同行
#cat test1.txt test2.txt | sort |uniq -u    //取文件不同行
#diff -u test test.new > test.patch    //将两个文件的不同生成补丁文件
  -u:使用unfied机制,即显示要修改的行的上下文,默认为3行
#patch -i test.patch test    //将补丁打到test文件中
  -R:逆向补丁,例如:patch -R -i test.patch test
#patch -p0 testfile1 testfile.patch
#patch -b f1.txt f.patch
#head -n <k:前三行|-k:排除后三行>
#tail -n <k:后三行|+k:排除前三行>
#paste -d: user.txt pass.txt|chpasswd    //合并文件

打开文件

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

编辑模式:默认模式

编辑模式-->输入模式:
  i:光标所在处输入;
  a:光标所在处后方输入;
  o:光标所在处下方新开一行输入;
  I:光标所在行的行首输入;
  A:关闭所在行的行尾输入;
  O:光标所在处上方新开一行输入;
输入模式-->编辑模式
  ESC
编辑模式-->末行模式
  :
末行模式-->编辑模式
  ECS

关闭文件

ZZ:保存并退出
:q 退出
:q! 不保存强制退出
:wq 保存并退出
:x 保存并退出
:w /PATH/TO/SOMEFILE 保存到其他文件,即另存为

光标跳转

字符间跳转
  k j h l:上 下 左 右
  10l:向右跳10字符
  2j:向下跳2行
  #COMMAND:跳转指定#个字符;
单词间跳转
  w:跳到下一个单词的词首
  b:当前或前一个单词词首
  e:当前或后一个单词词尾
  #COMMAND:跳转指定#个单词;
行首行尾跳转
  ^:跳转至行首第一个非空白字符;
  0:跳转至行首;
  $:跳转至行尾;
行间跳转
  #G:跳转至第#行;
  1g或gg:跳转至第一行
  G:跳转至最后一行
句间跳转
  )
  (
段间跳转
  }
  {

翻屏操作

Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Enter:按行向后翻

vim编辑命令

字符编辑:
  x:删除光标所在处字符;
  #x:删除光标所在处起始的#个字符;
  xp:交换光标所在处的字符与其后面的字符的位置;
替换编辑:
  r:替换光标所在处的字符,r后需要跟一个字符;
删除命令:
  d:删除命令;
  d$:删除当前字符到行尾的字符;
  d^:删除光标前的字符至行首的字符;
  dw:删除当前单词;
  dd:删除当前行;
  #COMMAND:删除多个指定的字符或单词或行;
粘贴命令:
  小写p:缓冲区的内容为整行,则粘贴在光标所在行的后方;否则,粘贴在当前位置;
  大写P:缓冲区的内容为整行,则粘贴在当前位置;否则,粘贴在光标所在行的后方;
复制命令:
  y:复制,工作行为与d相似
  y$、y^、yw、yy、#yy
改变命令(change,c):
  编辑模式-->输入模式,实现删除操作;
  c$、c^、c0、cb、ce、cw、cc、#cc
可视化模式:
  v:按字符选定
  V:按行选定
  结合编辑命令使用:d、c、y
撤销操作:
  u:撤销此前的操作;
  #u:撤销此前#个操作;
撤销此前的撤销;
  Ctrl+r
重复执行某个操作:
  .

vim末行命令

地址定界:
  :start[,end]
    #:特定的第#行;
    .:当前行;
    $:最后一行;
    #,#:指定范围;
    #,+#:从第#行开始往后加#行;
    %:全文;
    /pattern/:从光标所在到文末第一次被指定的pattern匹配到的行;

  编辑命令一同使用:d、y、c
    w PATH:将范围内的文本保存至指定文件中;
    r PATH:将指定文件中的内容写入到指定位置;

查找:
  /PATTERN:从当前向文件尾部查到匹配到的所有字符串;
  ?PATTERN:从当前向文件首部查到匹配到的所有字符串;
    n:下一个
    N:上一个

查找并替换:
  s:末行模式的命令,使用格式:s/要查找的内容/替换为的内容/修饰符
    要查找到内容:可使用正则表达式;
    替换为的内容:不能使用正则表达式,但是可以引用;
    修饰符:
      i:忽略大小写;
      g:全局替换;
  可以把分隔符替换为其他非常用字符;
    s@@@
    s###
  范例:
    %s@\<t\([[:alpha:]]\+\)\>@T\1@g
    %s@\<t\([[:alpha:]]\+\)\>@er@g
    %s@^[[:space:]]\+@@
    %s@^[[:space:]]\+[^[:space:]]@#&@g
    %s@\(enabled\|gegcheck\)=0@\1=1@g

vim多文件功能

多文件:
  #vim File1 File2 ...

  文件间切换:
    :next 切换到下一个文件
    :prev 切换到上一个文件
    :last 切换到最后一个
    :first 切换到第一个

  退出所有文件:
    :wqall 保存所有文件并退出

多窗口:
  #vim -o File1 File2 ...
    -o:水平分割
    -O:垂直分割
      Ctrl+w,松开后按向上或向下的箭头。
      Ctrl+w,松开后按s单文件中再次水平切割。
      Ctrl+w,松开后按v单文件中再次垂直切割。

定制vim工作特性:在末行模式下的设定只对当前vim进程有效;

永久生效:
  /etc/vimrc
  ~/.vimrc
行号:
  :set nu 显示行号
  :set nonu 取消显示行号
匹配高亮:
  :set showmatch 高亮显示
  :set noshowmatch 取消高亮显示
自动缩进:
  :set ai
  :set unset
搜索高亮:
  :set hlsearch
  :set nohlsearch
语法高亮:
  :syntax on
  :syntax off

posted @ 2022-07-19 11:46  Krill_ss  阅读(38)  评论(0编辑  收藏  举报