草庐IT

Linux 文本编辑工具vim

事愿人为 2023-04-21 原文

文本编辑工具VIM

目录

1.vi/vim介绍

我们要学会如何去新建文件、删除文件、修改文件等等,那么做这些操作就需要一个文本编辑工具。而在linux中最经典最流行的文本编辑工具就是vi/vim,当然也有一些其他的文本编辑工具。
例如

  • emacs
  • pico
  • nano
  • joe
  • jed

诸如此类,但我们只需要掌握vi/vim即可

vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。

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

vim是vi的增强版,比vi更容易使用。vi的命令几乎都可以在vim上使用。

2. vi/vim使用详解

2.1 vi/vim的特点

  • vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等,vi/vim只是一个文本编辑工具,它只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等
  • vi是一个全屏幕的文本编辑器,在编辑文本时它将占据整个屏幕

2.2 vi/vim三种编辑模式

vi/vim编辑器有三种编辑模式,分别是

  • 命令模式
  • 输入模式
  • 末行模式
编辑模式 作用
命令模式 用户执行命令,比如复制行、粘贴行等等
输入模式 用于输入文本、修改文本等等
末行模式 用于查找文本、保存修改等等

vi/vim三种编辑模式之间转换的方式
命令模式-->输入模式

  • i:insert,在当前光标所在字符的前面,转为输入模式
  • I:大写的i,在当前光标所在行的行首转换为输入模式
  • a:append,在当前光标所在字符的后面转换为输入模式
  • A:在当前光标所在行的行尾转换为输入模式
  • o:open,在当前光标所在行的下方新建一行并转为输入模式
  • O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式

输入模式-->命令模式

  • ESC

命令模式-->末行模式

  • :

末行模式-->命令模式

  • ESC ESC

2.3 文本编辑方式

打开文件方式:文件打开后默认处于命令模式下

vim filename        //打开文件
vim +n filename     //打开文件并定位到第n行
vim +/pattern filename      //打开文件并定位到第一次被/pattern匹配到的内容行首

关闭文件方式
末行模式关闭文件:

命令 意义
q! 不保存退出
wq! 强行保存并退出
x 强行保存并退出

命令模式关闭文件:

  • ZZ

移动光标

移动方式 指令 效果
逐字符移动 h l j k #h #l #j #k 向左移动一个字符 向右移动一个字符 向下移动一个字符 向上移动一个字符 向左移动#个字符 向右移动#个字符 向下移动#个字符 向上移动#个字符
以单词为单位移动 w e b #w #e #b 移动到下一个单词的词首 跳至当前或下一个单词的词尾 跳至当前或上一个单词的词首 以当前光标为起点跳至第#个单词的词首 以当前光标为起点跳至第#个单词的词尾 以当前光标为起点跳至第#个单词的词首
行内跳转 0 ^ $ 数字0,跳转到绝对行首 跳转到行首的第一个非空白字符 跳转到绝对行尾
行间跳转 gg G #gg #G 跳转到第一行 跳转到最后一行 跳转到第#行 跳转到第#行
翻屏 ctrl+f ctrl+b 向下翻一屏 向上翻一屏

字符编辑

编辑命令 意义
x 删除光标所在处的单个字符
#x 删除光标所在处及其向后共#个字符
xp 交换光标所在处的字符及其后面字符的位置

删除命令:d
命令模式下d命令常与跳转命令组合使用,如

  • d$:表示删除当前光标所在位置到行尾的内容
  • d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
  • d0:表示删除当前光标所在位置到绝对行首的内容
  • #d跳转符:删除跳转符指定范围内的#个,例如
    • #dw
    • #de
    • #db
  • dd:删除当前光标所在行整行
  • #dd:删除包括当前光标所在行在内的#行
  • D:删除当前光标所在行的内容,保留空行

末行模式下d命令的使用
语法::StartADD,EndADDd
这里的StartADD与EndADD是指一个范围,例如:

  • 1,5d:表示删除第1到第5行

范围表示方法:

表示方法 意义
. 光标所在当前行
$ 最后一行
+# 光标所在行往后#行
$-# 倒数第#行
% 全文

复制命令:yy

粘贴命令:p

  • p:小写p
    • 若删除或复制的为整行内容,则粘贴至光标所在行的下方
    • 若删除或复制的为非整行,则粘贴至光标所在字符的后面
  • P:大写p
    • 若删除或复制的为整行内容,则粘贴至光标所在行的上方
    • 若删除或复制的为非整行,则粘贴至光标所在字符的前面

替换:r

  • R:替换模式,替换多个字符
  • r#:将当前光标的字符替换为#,这里的#可以是任何字符

撤销编辑:u

  • u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
  • #u:直接撤销此前的#次编辑操作
  • ctrl+r:还原最近一次的撤销操作

重复前一次编辑操作:.

可视化模式:
可视化模式下可以对选取的内容进行前面讲的所有编辑操作

  • v:按字符选取内容
  • V:按矩形块(行)选取内容

文本查找:

  • /pattern:从上往下查找匹配的内容
  • ?pattern:从下往上查找匹配的内容
  • n:从上往下查找匹配到的内容的下一条
  • N:从下往上查找匹配到的内容的下一条

查找并替换:s
s命令只能在末行模式下使用
语法:ADDR1,ADDR2 s/pattern/string/gi

  • 1,5 s/abc/def/g:表示把第一行到第五行的所有abc替换为def

末行模式下显示或取消显示行号

  • set nu:显示行号
  • set nonu:取消显示行号

有关Linux 文本编辑工具vim的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. 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

  3. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  6. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  7. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  8. ruby - 从 Rakefile 打开 Vim? - 2

    我正在为个人笔记创建一个日志应用程序,并且在我的Rakefile中包含以下内容:task:newdoentry_name="Entries/#{Time.now.to_s.gsub(/[-\:]+/,'.').gsub(/.0500+/,'')}.md"`touch#{entry_name}``echo"#$(date)">>#{entry_name}`end我想包括的最后一部分是Vim文本编辑器的打开,但我不知道如何打开它,就像我直接从bash终端调用它一样。我试过:vim#{entry_name}但不幸的是,我认为它们都将其作为后台进程打开。我一直在引用“6WaystoRunShe

  9. ruby-on-rails - rspec - 我怎样才能让 "pendings"有我的文本而不仅仅是 "No reason given" - 2

    我有这个代码:context"Visitingtheusers#indexpage."dobefore(:each){visitusers_path}subject{page}pending('iii'){shouldhave_no_css('table#users')}pending{shouldhavecontent('Youhavereachedthispageduetoapermissionic错误')}它会导致几个待处理,例如ManagingUsersGivenapractitionerloggedin.Visitingtheusers#indexpage.#Noreason

  10. ruby - 如何为 pbcopy 生成富文本链接 - 2

    我一直在玩一个脚本,它在Chrome中获取选定的文本并在Google中查找它,提供四个最佳选择,然后粘贴相关链接。它以不同的格式粘贴,具体取决于当前在Chrome中打开的页面-DokuWiki打开的DokuWiki格式,普通网站的HTML,我想要我的WordPress所见即所得编辑器的富文本。我尝试使用pbpaste-Preferrtf来查看没有其他样式的富文本链接在粘贴板上的样子,但它仍然输出纯文本。在文本编辑中保存文件并进行试验后,我想出了以下内容text=%q|{\rtf1{\field{\*\fldinst{HYPERLINK"URL"}}{\fldrsltTEXT}}}|te

随机推荐