jjzjj

Linux之vi编辑器

cets 2023-12-17 原文

文章目录


前言

vi是Visual interface 的简称,可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的功能。


提示:以下是本篇文章正文内容,下面案例可供参考

一、vi的三种运行模式

vi有三种基本模式:普通模式、插入模式和命令行模式

1.普通模式

进入vi之后就是普通模式(这是默认模式)。在这个模式中,你可以使用 “上下左右 ” 按键来移动光标,你可以使用“d” 或 “dd” 来处理文件内容,也可以使用“yy”和“p”来处理文件的内容。

.d:删除单个字符
dd:删除整行
yy:复制整行
p: 粘贴

2.插入模式

在普通模式中可以进行删除、复制、粘贴等操作,但是无法编辑文件内容需按下“i、I、o、O、a、A、r、R”等任何一个字母之后才会进入编辑模式,如果要回到普通模式可以按【Esc】这个按键退出编辑模式。

i:插入命令
a:附加命令
o:打开命令
c:修改命令
r:取代命令

3.命令行模式

在一般模式当中,输入“:/?”三个当中任意一个,就可以进入命令行模式,该模式可以保存、退出、查找、显示行号等操作。

q!: 强制退出
w!:强制保存
wq:保存退出
set nu :显示行数

二、vi的普通模式

1.进入vi

下表列出了vi文本编辑器的方式及说明

方式说明
vi进入vi的默认模式
vi filename打开新建文件filename
vi -r filename打开vi编辑时发生系统崩溃时的文件filename,并恢复它

2.普通模式下的光标定位

说明
G将光标一直最后一行
ng将光标移至第n行行首
n+将光标下移n行
n-将光标上移n行
n$将光标移至n行尾
0将光标移到所在行的行首

3.普通模式下的字符搜索

命令说明
/ab向光标下查找一个名为ab的字符串
?ab向光标上查找一个名为ab的字符串
n英文按键n,代表重复前一个查找的操作
N英文按键N,与n相反,为方向前一个查找操作

3.普通模式下的删除、复制、与粘贴

删除

命令说明
x删除光标处的字符
dw删除一个单词
db删除光标前的一个词
dd删除光标所在行
dG删除光标位置到最后一行的位置
d$删除光标位置到当前行的末尾的内容
nx删除从光标开始向右的n个字符
ndw删除n个指定的单词
ndb删除所在位置之前的n个词
ndd删除当前行及其后n-1行的内容
d1G删除光标所在位置到第一行的内容

复制与粘贴

命令说明
yy复制当前行到缓冲区
nyy将当前开始的n行开始复制到缓冲区
yG将当前开始光标位置到最后一行的内容复制到缓冲区
y1G将当前光标位置到第一行的内容复制到缓冲区
p将缓冲区的内容写到光标所在的位置
u撤销前一次操作

三、vi的插入模式

vi的插入模式可以从普通模式按 “i” 进入,
若要退出普通模式则按键盘左上角的【Esc】按键。

四、vi的命令行模式

vi的命令行模式可以从普通模式按“:”进入,命令模式的常用命令如下:

命令说明
:w将编辑的内容保存
:w!强制保存
:q退出vi
:q!若修改过文件则不保存强制退出
ZZ若文件没修改,则不保存退出,若修改,则保存退出
:w fn另存为新文件fn
:set nu显示行号
:set nonu取消显示行号

提示:vim是vi的升级版,vi拥有的功能vim都拥有,可以使用vim编辑更清晰

有关Linux之vi编辑器的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby-on-rails - 尝试打开 .gitignore 以在文本编辑器中对其进行编辑,但在 OS X Mountain Lion 上找不到文件位置 - 2

    我使用“newapp_name”创建了一个新的Rails应用程序,我正在尝试编辑.gitignore文件,但在我的应用程序文件夹中找不到它。我在哪里可以找到它?我安装了Git。 最佳答案 .gitignore位于项目的root中,而不是app子目录中。首先打开终端并进入您的目录。您需要使用ls-a来显示stash文件。然后使用打开.gitignore 关于ruby-on-rails-尝试打开.gitignore以在文本编辑器中对其进行编辑,但在OSXMountainLion上找不到文件位

  3. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  4. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  5. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  6. ruby-on-rails - 如何在 vim 编辑器中使用 bundler 打开 gem 源代码 - 2

    尝试使用bundleopen命令打开gem源代码,accordingtoofficialdocumentationandinstruction.因此,我在.profile中导出编辑器:exportBUNDLER_EDITOR=viexportEDITOR=vi并尝试打开例如rails使用控制台的源代码:bundleopenrails出现错误CouldnotlocaleGemfile[ruby-2.1.1][~/]$:rails-vRails4.0.3[ruby-2.1.1][~/]$:bundle-vBundlerversion1.5.3[ruby-2.1.1][~/]$:bundle

  7. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

  8. ruby-on-rails - Rails 编辑序列化的 JSON 数据 - 2

    我有一个存储JSON数据的列。当它处于编辑状态时,我不知道如何显示它。serialize:value,JSON=f.fields_for:valuedo|ff|.form-group=ff.label:short=ff.text_field:short,class:'form-control'.form-group=ff.label:long=ff.text_field:long,class:'form-control' 最佳答案 代替=f.fields_for:valuedo|ff|请使用以下代码:=f.fields_for:va

  9. ruby - 在 Linux 上编译 Ruby 1.9.2 所需的先决条件? - 2

    我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby​​所需的包和安装过程;它引

  10. ruby-on-rails - 尝试编辑时,Rails form_for 结果为 POST 而不是 PUT - 2

    我正在使用Rails4并遇到以下错误。RoutingErrorNoroutematches[POST]"/logs/1/meals/13/edit我正在使用:meal传递模型对象的form_for,并且编辑页面正确呈现。但是,Rails似乎并没有检查膳食对象是否已经保存,因此它一直尝试将表单发送到#create操作并尝试发出POST请求,而不是将表单发送到更新操作并进行当我点击提交时一个PUT请求。我如何让form_for识别我正在尝试更新现有对象并且需要PUT而不是POST?其他一切正常,我已经运行了所有迁移。我是Rails的新手,几乎一整天都在尝试自己解决这个问题。请帮忙!请注意,

随机推荐