vi 命令

2023-05-16

最近面试有问常用操作。虽然修改用的还蛮多的,但有的还确实不知道!在这里记录下:

vi编辑器的三种模式

  •   1、命令模式(command mode)—执行命令

      在该模式中,可以输入命令来执行许多种功能。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

      2、输入模式(Insert mode)—输入文本

      vi被运行时,通常处在命令模式下,键入以下命令 可以使vi退出命令模式,进入输入模式:I(i)、A(a)、O(o)。

      3、末行模式(last line mode)—执行待定命令

      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。不过一般我们在使用时把vi简化成两个模式,就是将末行模式(last line mode)也算入命令行模式command mode)。

    vi的三种模式

vi编辑器的启动与退出

  •   1. vi的启动

      输入vi命令后,便进入全屏幕编辑环境,此时的状态为命令模式。

      (1) vi

      进入vi的一个临时缓冲区,光标定位在该缓冲区第1行第1列的位置上。

      (2) vi file1

      如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在该缓冲区第1行第1列的位置上。

      (3) vi + file1

      如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在文件最后1行第1列的位置上。

      (4) vi +N file1(N:为数字)

      如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在文件第N行第1列的位置上。

      (5) vi +/string file1

      如果file1文件不存在将建立此文件;如该文件存在则将其拷贝到一个临时缓冲区。光标定位在文件中第一次出现字符串string的行首位置。

      2. 退出vi(末行模式(last line mode))

      建议在退出vi前,先按ESC键,以确保当前vi的状态为命令方式,然后再键入“:”(冒号),输入下列命令,退出vi。

      (1) :w

      将编辑缓冲区的内容写入文件,则新的内容就替代了原始文件。这时并没有退出vi,必须进一步输入下述命令才能退出vi:

      :w filename(存入指定文件)

      :q

      (2) :wq

      即将上面的两步操作可以合成一步来完成,先执行w,后执行q。

      (3) :x和ZZ(注意: ZZ前面没有“:”)

      功能与(2)等价。

      (4) :q!(或:quit)

      强行退出vi,使被更新的内容不写回文件中。仅键入命令:q时,如vi发现文本内容已被更改,将提示用户使用“:quit”命令退出。

vi编辑器常用命令

  •   1、在文件中移动光标

      h:向左移动一个字符

      l:向右移动一个字符

      j:向下移动一行

      k:向上移动一行

      ^(即Shift+6):移动到当前行的开头处

      $(即Shift+4):移动到当前行的结尾处

      H(大写):使光标移动到屏幕的顶部

      M(大写):使光标移动到屏幕的中间

      L(大写):使光标移动到屏幕的底部

      Ctrl+b:上滚一屏。

      Ctrl+f:下滚一屏。

      Ctrl+d:下滚半屏。

      Ctrl+u: 上滚半屏。

      2、插入文本

      (1)添加:

      ●输入a后,在光标的右边插入文本

      ●输入A,在一行的结尾处添加文本

      (2)插入:

      ●通过在命令模式下输入i,在光标的左边插入文本

      ●通过在命令模式下输入I,在行首插入文本

      (3)插入新行:

      ●输入o,在当前光标位置下面打开一行

      ●输入O,在当前光标位置上面打开一行

      3、撤消更改

      (1)撤消前一个命令:在最后一个命令之后立即输入u来撤消该命令

      (2)重复某个命令:“.”

      (3)撤消对一行的更改:输入U来撤消你对一行所做的所有更改,这个命令只有在你没将光标移动到该行以外时才生效。

      4、删除文本

      (1)删除一个字符:

      ●为删除一个字符,需将光标放置在要删除的字符上并输入x

      ●为删除光标之前(其左边)的一个字符,需输入X

      (2)删除一个词或词的部分内容:

      ●为删除一个词,需将光标放置到该词的开头并输入dw

      ●为删除词的部分内容,需将光标放置到该词要保存部分的右边。输入dw来删除该词余下的部分

      (3)删除一行:将光标放置到该行的任意处并输入dd

      (4)删除多行:ndd

      (5)删除行的部分内容:将光标放置到该行要保存部分的右边,并输入D。为删除光标左边的所有内容,须将光标放置到该行要删除部分的右边,并输入d0(d-零)。

      (6)删除到文件的结尾:为删除从当前行到文件结尾的所有内容,需输入dG

      5、复制和移动文本

      ●复制一行命令:yy

      ●粘贴命令:p

      ●移动文本:先将要移动的部分用删除命令删除,然后再粘贴就可以了

    多行:在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3……

    单词:光标移到想要被复制词的词首,输入yw 光标移到想到粘贴的位置,输入p

      ●复制指定文件的内容

      : r filename

      6、查找一个字符串

      ●输入/,并在/后面输入要查找的串,然后按下回车

      ●输入“n”跳转到该串的下一个出现处

      ●输入“N”跳转到该串的上一个出现处

      7、替换一个字符串

      ●在一行内替换头一个字符串old为新的字符串new

      :s/old/new

      ●在一行内替换所有的字符串old为新的字符串new

      :s/old/new/g

      ●在两行内替换所有的字符串old为新的字符串new

      :#,#s/old/new/g

      ●在文件内替换所有的字符串old为新的字符串new

      :%s/old/new/g

      ●进行全文替换时询问用户确认每个替换需添加c选项

      :%s/old/new/gc

      8、设置vi

      ●显示行号

      :set number

      ●取消行号显示

      :set nonumber

      ●设置显示用户模式

      :set showmode

      ●设置文件只读

      :set readonly

    补充:

    移动光标类命令
    h :光标左移一个字符 
    l :光标右移一个字符 
    space:光标右移一个字符 
    Backspace:光标左移一个字符 
    k或Ctrl+p:光标上移一行 
    j或Ctrl+n :光标下移一行 
    Enter :光标下移一行 
    w或W :光标右移一个字至字首 
    b或B :光标左移一个字至字首 
    e或E :光标右移一个字至字尾 
    ) :光标移至句尾 
    ( :光标移至句首 
    }:光标移至段落开头 
    {:光标移至段落结尾 
    nG:光标移至第n行首 
    n+:光标下移n行 
    n-:光标上移n行 
    n$:光标移至第n行尾 
    H :光标移至屏幕顶行 
    M :光标移至屏幕中间行 
    L :光标移至屏幕最后行 
    0:(注意是数字零)光标移至当前行首 
    $:光标移至当前行尾 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vi 命令 的相关文章

  • vue3实现多条件筛选时,联动acitve样式

    介绍 在实现多条件筛选时 鼠标hover或者点击切换 会给当前选中项添加active样式 各个筛选项之前互不影响 如下图所示 主要实现了招聘信息的筛选条件 包括城市和职位信息 当鼠标hover时 会添加一个灰色的背景 当点击切换时 会添加一
  • FFmpeg 中AVPacket的使用

    https blog csdn net u014162133 article details 82667112
  • WebRTC的优缺点

    作为Google开源的技术 xff0c WebRTC并不是一个可以拿来就用并且性能很好的产品 xff0c 需要工程师们对其进行较多的改善 本文主要来谈一谈WebRTC的优缺点 WebRTC的优点 xff1a 1 方便 对于用户来说 xff0
  • XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友

    原始地址 xff1a XMPPFrameWork IOS 开发 xff08 五 xff09 获取好友信息和添加删除好友 好友列表和好友名片 xmppRoster fetchRoster 获取好友列表 获取到一个好友节点 void xmppR
  • Linux 系统Apktool 的安装和使用

    For Linux OS xff1a 在Linux 机器上创建一个临时文件夹 apktool xff1b 下载 aapt 和 apktool xff1a 下载路径 https connortumbleson com apktool goog
  • python wav转pcm

    usr bin env python encoding utf 8 39 39 39 64 文件 wav2pcm py 64 说明 64 时间 2021 07 08 14 53 48 64 作者 shitao li 64 版本 1 0 39
  • R数据分析——方法与案例详解(双色)

    R数据分析 方法与案例详解 xff08 双色 xff09 R数据分析 方法与案例详解 xff08 双色 xff09 是一本R 语言和数据分析的入门教材 xff0c 循序渐进 深入浅出 xff0c 每个知识点尽量从实际的应用案例出发 xff0
  • springboot集成swagger3出现如下错误:Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception

    原因 xff1a 这是因为Springfox使用的路径匹配是基于AntPathMatcher的 xff0c 而Spring Boot 2 6 X使用的是PathPatternMatcher 解决 xff1a 在application pro
  • 进程间通信(8) - 共享内存(posix)

    目录 1 前言 2 共享内存介绍 3 映射函数mmap 4 映射删除munmap 5 映射同步 6 内存映射区的大小 6 1映射文件的大小等于映射长度 6 2映射文件的大小小于映射长度 7 使用mmap进行IPC 7 1匿名内存映射实现亲缘
  • 51单片机定时器、计数器配置

    一 51单片机的定时 计数器的工作原理 在了解了单片机的时钟频率 时钟周期 机器周期之后 xff0c 显然我们可以知道定时器的工作原理 xff0c 在此之前我们先算出51单片机的脉冲周期 xff1a 以f 61 12MHz为例 xff0c
  • AndroidStudio Launching ‘app‘ Time out 错误

    问题一 AndroidStudio Launching app Time out 错误 环境 xff1a AndroidStudio xff1a Arctic Fox 2020 3 1 问题 点击debugger运行过后 xff0c 编译没
  • QT Creator项目打包发布

    按照如下方法 xff0c 可将项目成功打包发布 xff0c 别人不需要安装或配置QT Creator环境便可直接运行程序 xff0c 具体步骤如下 xff1a 1 在QT Creator使用release构建运行一下代码 xff0c 不要使
  • 超精简ubuntu的GPU配置(实测好用)

    一 安装英伟达 GPU 驱动 安装ubuntu后运行以下命令来升级内核版本 sudo apt get update sudo apt get upgrade 以下命令会将与你系统相兼容的驱动版本显示出来 sudo add apt repos
  • 在线升级R语言版本以及在RStudio容纳最新版本的R

    文章目录 1 升级R语言版本2 RStudio容纳最新版本的R3 参考资料 1 升级R语言版本 第一步 install packages 34 installr 34 安装 第二步 library installr 加载 第三步 updat
  • 傅里叶变换 ~ 什么是傅里叶变换?

    文章目录 1 什么是傅里叶变换 xff1f 2 为什么要进行傅里叶变换 xff1f 1 什么是傅里叶变换 xff1f 将时域的信号 xff0c 变换到频域的正弦信号 傅里叶变换是数字信号处理领域一种很重要的算法 要知道傅里叶变换算法的意义
  • 全国天气预报查询接口

    小编在此向大家介绍拥有105亿 43 调用量的产品 xff0c 该接口文档清晰 xff0c 对接方便 xff0c 还有服务很好 一 接口介绍 通过坐标区域 IP 地名 景点名称 电话区号或邮编等有效信息可查询天气情况 xff08 天气状况
  • 使用C++的CCF-CSP满分解决方案 202112-2 序列查询新解 含详细注释

    思路 最开始想挨个数计算fi和gi xff0c 这样只能拿70分 xff0c 想要拿全 xff0c 必须根据区间来划分 具体来说 xff0c 每次以r为单位移动 xff0c 每个区间长度为r xff0c 根据区间的左右值移动序列的下标 还是
  • UltraISO 帮你把U盘当光盘用

    UltraISO是款功能强大的光盘工具 xff0c 官方对其的概括是Handle CD and DVD Images with Ease xff0c 对我们就是要让处理CD和DVD镜像变得简单 现在这款软件的最新版本是UltraISO 9
  • Python基础语法一:Markdown的使用

    1 标题 在文字前加 xff08 个数可以使1 6个 xff0c 个数不同 xff0c 标题级别不同 xff09 用户管理 xff08 二级标题 xff09 三级标题 六级标题 2 代码块 xff08 代码引用 xff09 语法 xff1a
  • 《计算机科学》期刊投稿心得

    今日胃痛难忍 xff0c 无法静心 xff0c 遂分享一下投稿心得 这本期目前是北大核心 xff0c CCF B 上不上 xff0c 下不下的排名 xff0c 感叹一句 xff0c 中文核心太难中了 xff0c 越来越难中的感觉 2020年

随机推荐

  • IDEA MAVEN 项目 打包文件到指定目录

    像上一篇文章 xff0c 我们提到的 xff0c IDEA MAVEN struts项目中 xff0c 如果我们把 struts xml 文件放在 src 目录下 xff0c 编译的时候 xff0c 将无法打包到 WEB INF class
  • kali安装配置git

    kali安装配置git 安装图形界面 sudo apt install git cola 配置全局忽略 git config global core excludesfile root global gitignore vim root g
  • Freerdp2中sfreerdp在windows中运行

    了解 client Sample 下的freerdp c xff0c 有助于了解freerdp的结构 当然首先 xff0c 需要先在windows 中成功编译freerdp链接 然后可以看到Debug目录下会生成freerdp2 lib f
  • freerdp在windows中的编译(with openh264)

    我自己编译的node freerdp2模块在window 7中会莫名其妙的报一个错误 google上说跟windows的media foundation相关 xff0c 更莫名其妙的是 xff0c 重装系统后100 复现 但是看到最后一个报
  • 配置Linux网络,远程连接(NAT模式)

    配置Linux网络 xff0c 远程连接 xff08 NAT模式 xff09 1 打开vmware xff1a 编辑 gt 虚拟网络编辑器 xff0c 检查VMnet8中nat模式的子网IP NAT设置 xff0c 打开 NAT设置 xff
  • 根据Django Model动态生成sql的方法

    转自 xff1a http blog csdn net wenxuansoft article details 8039011 当定义好Django Model后 xff0c 一般可以在初始化调用Syncdb方法来自动在数据库里面生成相应的
  • jetty禁用http put和delete等方法的方式

    1 基于xml的配置方式 lt security constraint gt lt display name gt Example Security Constraint lt display name gt lt web resource
  • 《Qt5 C++ GUI Programming cook book 》笔记 1

    一 xff0c 前言 第一章 xff0c 使用QT Designer 和QT Quick Designer自定义设计用户界面 第二章 xff0c 通过增强的状态机框架和动画框架 xff0c 制作用户界面动画 第三章 xff0c 使用QT内建
  • 时间机器 Time Machine 三星T7 移动硬盘SSD解决方案

    Content 时间机器 Time Machine 三星T7 移动硬盘SSD解决方案1 简介2 硬盘分区3 时间机器4 文件格式5 Bug 时间机器 Time Machine 三星T7 移动硬盘SSD解决方案 1 简介 时间机器 xff08
  • SonarQube代码质量检查平台

    前言 xff1a code review xff1a 随着业务的发展 xff0c 系统越来越庞大 xff0c 原本简单稳定的功能 xff0c 可能在不断迭代后复杂度上升 xff0c 潜在的风险也随之暴露 xff0c 导致最终服务不稳定 xf
  • C++报错:The build tools for v141 (Platform Toolset = 'v141') cannot be found.

    问题内容 The build tools for v141 Platform Toolset 61 39 v141 39 cannot be found To build using the v141 build tools please
  • centos7+mysql5.7安装

    1 在官方网站下载linux版本的mysql xff0c 网址 xff1a https dev mysql com downloads mysql 2 解压文件并存放在 usr local mysql 5 7 20 路径下 xff08 1
  • Shell编程——位置参数变量

    介绍 当我们执行一个shell脚本时 xff0c 如果希望获取到命令行的参数信息 xff0c 就可以使用到位置参数变量 比如 xff1a myshell sh 100 200 这个就是一个执行shell的命令行 xff0c 可以在myshe
  • CentOS安装python2.7

    查版本 whereis python python2 7安装 1 下载 xff1a wget https www python org ftp python 2 7 11 Python 2 7 11 tar xz wget https ww
  • 单机版Ceph环境部署,Linux平台

    Ceph已经如火如荼 xff0c 很多公司都在使用Ceph作为自己的存储系统 日常学习不太可能安装一个Ceph集群 xff0c 因此本文介绍如何部署一个单节点的Ceph系统 另外 xff0c 本文安装的后端存储引擎是BlueStore xf
  • Ubuntu 升级 Python3.10

    参考文档 Upgrade Python to latest version 3 10 on Ubuntu Linux
  • 2022免费国内天气查询接口

    一个可以根据IP地址或者城市名称查询天气的免费接口 xff0c 支持国内3400 43 个城市天气 请求地址 GET https api itapi cn api tianqi 请求参数 参数名参数说明key用户请求密钥 xff0c 可在
  • PHP远程文件包含(RFI)并绕过远程URL包含限制

    文章来源 xff5c MS08067 公众号粉丝投稿 本文作者 xff1a VastSky xff08 Ms08067实验室粉丝 xff09 前言 本文我们讲如何绕过远程URL包含限制 在PHP开发环境php ini配置文里 allow u
  • 内网渗透 | 最全的内网凭据密码收集方法和技巧总结

    内网凭据密码收集指南 原创投稿作者 xff1a 深蓝实验室天威战队 前言 在攻防场景下 xff0c 红队人员拿下一台终端或服务器后 xff0c 第一步要做的往往就是信息收集 xff0c 为最大化利用权限 xff0c 扩大战果 xff0c 密
  • vi 命令

    最近面试有问常用操作 虽然修改用的还蛮多的 xff0c 但有的还确实不知道 xff01 在这里记录下 xff1a vi编辑器的三种模式 1 命令模式 xff08 command mode xff09 执行命令 在该模式中 xff0c 可以输