首页 > 其他分享 >vi命令

vi命令

时间:2022-10-08 21:38:46浏览次数:47  
标签:字符 删除 文件 vi 命令 光标


vi有三种模式
 直接输入vi 进入vi编辑器的命令模式,该模式保存、删除和替换文件,以及退出vi编辑
 不管在什么模式下,按 ESC 键可进入命令模式
 在命令模式下,插入命令 i,附加命令 a,打开命令 o 、 修改命令c 、 取代命令r 或 替换命令s 可进入插入模式,进行文档编辑
 命令模式下,v进入可视模式,可进行复制y,剪切d
 
 直接输入 vi ,进入vi编辑模式,相当于打开word还没有保存,没有给文件取名字。
  在退出vi之前,应保存文档,并给文档取名 :w filename,在退出 :q。若是不保存可以选择 :q!
 vi filename ,则是打开或新建一个名字叫filename的文档,并将光标置于第一行首,对文档进行操作后退出前也要保存。
 vi file1 file2 file3 新建或者打开多个文件,当所有文件都编辑和保存后可退出
  问:如何切换其他文件进行编辑? :e filename,n 编辑下一个文档

 vi +n filename 打开文件,并将光标置于第n行首
 vi + filename 打开文件,并将光标置于最后一行首
 
 . 重复命令,重复之前操作过的命令
 u 、U 恢复命令
 
 在命令模式下  末行模式
  :w 当前文件存盘
  :q 退出vi
  :q! 不保存文件退出vi
  :x 保存当前文件并退出
  :e filename 打开文件filename进行编辑
  :e! 重新编辑文件,放弃任何改变
  :! 执行命令后回到编辑
  :n 编辑下一个文件
  :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
  :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
  :n1,n2 d :将n1行到n2行之间的内容删除
  
  选项设置
  :set ai 自动缩进
  :set nu 每行显示行号
  :set nonu 每行前不显示行号
  :set ic 查找字符串时不区分大小写
  
  移动光标
  h,backspace,左方向键   光标左移一个字符,在字符前加n,可移动n个字符
  l,space,右方向键       光标右移一个字符
  k,Ctrl+p,上方向键      光标上移一个字符
  j,ctrl+n,下方向键      光标下移一个字符
  Enter                    光标下移一行,在该行行首
  w或W  光标右移一个字至字首
  b或B  光标左移一个字至字首
  e或E  光标右移一个字至字尾
  H  光标移至屏幕第一行行首
  L  光标移至屏幕最后一行行首
  M  光标移至屏幕中间行
  $  光标移至当前行行尾 
  0, ^  光标移至当前行行首
  )  光标移至句尾
  (  光标移至句首
  }  光标移至段落开头
  {  光标移至段落结尾
  :0 光标移至文件开头
  nG,:n 光标移至第n行首
  n+ ,[n]k 光标下移n行
  n- ,[n]j 光标上移n行
  n$ 光标下移n行尾
  :n 光标移到文件的第n行
  G,:$ 光标移到文件的最后一行(文件结尾)
  
 屏幕翻滚类命令
  Ctrl+u:向文件首翻半屏
  Ctrl+d:向文件尾翻半屏
  Ctrl+f:向文件尾翻一屏
  Ctrl+b;向文件首翻一屏
  nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 未实现???

 从命令模式进入插入模式
  i 在当前光标所在字符的前面插入,如theday,光标在d上,插入new 就是thenewday
  a 在当前光标所在字符的后面插入,如theday,光标在e上,插入new就是thenewday
  o 在当前光标所在行的下一行插入
  O 在当前行的上一行 
  I 在当前光标所在行的行首插入
  A 在当前光标所在行的行尾插入
  R 替换当前光标所在字符及其之后的
  r 替换当前光标所在字符,再一次输入替换字符
  s:删除当前光标所在字符,从此处插入文本
  S:删除当前光标所在行,从该行行首开始插入文本
  ncc 、ncw、 nC 删除当前光标所在行开始 n 行,并在此行开始插入
 
 复制操作
 yy  复制当前行的内容
 [n]yy 复制包括当前行的n行内容
 p   将复制的文本放入光标后
 P   将复制的文本放入光标前
 :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
 
 
 删除操作
 d$:删至行尾
 d0: 删除光标前一个字符至行首
 [n]dd:删除当前行及其后n-1行
 [n]x或X:删除一个字符,x删除光标后的,而X删除光标前的
 [n]dw或ndW:删除光标处开始及其后的n-1个字   
 :n1,n2 d :将n1行到n2行之间的内容删除
 :%d  删除整个编辑缓冲区。
 [n]p 将删除的内容恢复n次  类似于windows中常用的剪切、粘贴!
 

 问:在编辑文件的过程中,我发现,退格键只能删除当前行的文本,要删除多行怎么办?
 一般移动光标使用上下左右键可以一个字符一个字符的移动,但若是文本很多的情况下,怎么做更快?
 
 搜索及替换命令 :
  /pattern:从光标开始处向文件尾搜索pattern
  ?pattern:从光标开始处向文件首搜索pattern
  n:在同一方向重复上一次搜索命令
  N:在反方向上重复上一次搜索命令

  s(substitute)  指令可查找某行列范围。
  g(global)指令则可查找整个编辑缓冲区的资料。
  s指令以第一个满足该条件的字符串为其取代的对象,若该行有数个满足该条件的字符串,也仅能取代第一个,若想取代所有的字符串则需加上g参数。
  :1,$s/old/new/g           将文件中所有的“old”改成“new”。
  :10,20s/^/   /        将第10行至第20行资料的最前面插入5个空白。
  :%s/old/new/g            将编辑缓冲区中所有的“old”改成“new”。

  :%s/regexp/replacement/g:将文件中所有p1均用p2替换(%可能代表全文)
  :%s/regexp/replacement/gc - (c代表confirm)每次替换要求确认
  :g/regexp/s//replacement/g:将文件中所有p1均用p2替换
 
  :s/text1/text2 用于将光标所在段落搜索到的第一个 text1 替换为text2
  :s/text1/text2/g 用于将光标所在段落的所有 text1 替换为text2
  :m,ns/text1/text2/g 用于将从 m行开始至n 行结束的所有搜索到的text1
  替换为text2 其中可以使用$表示末行即1,$ 表示替换文档中的所
  有符合条件的字符  
 
 例:/the  搜索的内容可以是一个字符,一个字或者一个句子,将从光标开始处向文件尾搜索,显示第一个搜索到的首字符上
 按 n 、 N 正向或反向搜索下一个,循环重复
 
 可视化模式?



后记:我常用的命令有:

vi filename  编辑文件

x  命令模式下,退出且保存

q! 退出不保存

0,$  当前行行首、行尾

d0,d$  删除光标所在位置直至行首(行尾)

nh,nl 光标向左、向右移动n个字符

nG 跳到第几行

标签:字符,删除,文件,vi,命令,光标
From: https://blog.51cto.com/u_15812342/5738729

相关文章

  • sort命令
    sort命令的一般格式为: sort-cmu-ooutput_file[otheroptions]+pos1+pos2input_files 下面简要介绍一下sort的参数: -c测试文件是否已经分类。 -m合并......
  • 归档tar、安装rpm命令
    tar打包 -c创建一个新的档案文件,新建 -t查看档案文件的内容,查看 -x分解档案文件的内容,解压 -f命名 -v显示过程信息 -z压缩  tarcvf   打包(但不......
  • 细节命令
    ${WHEN:="Saturday"} 给变量设置默认值#是注释,在遇到''、""和\就当一般字符使用。;命令分隔符,可以在一行写多个命令;;终止“case”选项执行脚本方法使用vi编辑 ......
  • ENVI5.3安装教程(含软件,仅用于学习试用)
    ENVI5.3安装教程(含软件仅用于学习试用)​​ENVI5.3安装包​​​​ENVI5.3安装教程​​ENVI5.3安装包链接:https://pan.baidu.com/s/1sa9V1-R7cOAx0wnfyEMAAw?pwd=ip1d提取码:i......
  • CUDA_VISIBLE_DEVICES介绍
    CUDA_VISIBLE_DEVICES介绍os.environ['CUDA_VISIBLE_DEVICES']='0'主要由以下几个问题:这行代码是什么意思?为什么要设置成'0'?1.代码解释os.environos.en......
  • 【Azure 媒体服务】记使用 Media Service 的官网示例代码 Audio Analyzer 出现卡顿在
    问题描述在使用AzureMediaService的官网示例(media-services-v3-java--> AudioAnalytics--> AudioAnalyzer )代码的过程中,根据配置添加了EventHub和StorageAcco......
  • [vite]使用pnpm创建vite+vue3项目
    npminstall-gpnpmpnpmcreatevite@latest输入项目名framework选vuevariant选Customizewithcreate-vue根据需要选择配置照黄字cd进刚创建的项目目录install......
  • 用户操作命令
    目录用户管理linux中用户的概述用户的作用查看系统中用户的命令系统用户相关的配置文件用户分类(约定,规范centos7)chage命令修改用户信息用户操作命令用户创建-useradd修改用......
  • vim编辑器
    目录vim编辑器什么是vim为什么要使用vimvim的三种工作模式命令模式(普通模式)编辑模式(输入模式)末行模式vim视图模式Vim扩展选项3.30练习题选择题vim编辑器什么是vimvim......
  • Hashicorp Consul Service API远程命令执行漏洞
    Preface简介Consul是HashiCorp公司推出的一款开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案相比,Consul提供的方案更为“一站式”。Con......