首页 > 其他分享 >文本编辑工具VI/VIM

文本编辑工具VI/VIM

时间:2022-12-26 17:23:20浏览次数:30  
标签:字符 文本编辑 删除 vi 模式 vim VI VIM 光标

目录


1. vi/vim介绍

经过这几天的学习,大家应该知道,linux是一个跟文本文件打交道的系统,那么如何去跟这样一个系统打交道呢?我们要学会如何去新建文件、删除文件、修改文件等等,那么做这些操作就需要一个文本编辑工具。而在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:取消显示行号

标签:字符,文本编辑,删除,vi,模式,vim,VI,VIM,光标
From: https://www.cnblogs.com/itwangqing/p/17006250.html

相关文章

  • 来一篇VIM的配置吧~~~
    是一个适合的汇总。(1).vimrc介绍用户目录下的.vimrc文件就是Vim针对当前用户的主配置文件,该文件不是必备的,没有的话就创建它。文件位于当前用户的主目录下,可以用~/.vimrc找......
  • dfm格式初解之TTreeView
     TTreeView的Items.NodeData值解析:Items.NodeData={0302000000200000000000000000000000FFFFFFFFFFFFFFFF000000000000000002000000010131002......
  • Vitest快速识别
    Vitest接口快速识别npmivitest-D//package.json{"scripts":{"test":"vitest","coverage":"vitestrun--coverage"}}//vite.config.tstes......
  • OpenGL header already included, remove this include, glad already provides it
    原因#include<glad/glad.h>必须放在所有头文件之前,即使是引用包含#include<glad/glad.h>的头文件,也必须写在其它头文件前面。 例子头文件test.h中引用了<glad/glad.......
  • Microsoft 365 解决方案:如何使用Viva Insights的Focus Plan 来关闭Focus Time期间的所
    51CTO博客地址:​​https://blog.51cto.com/u_13637423​​对于我们上班族而言,每天都徘徊在各种会议、讨论和电子邮件中,为了完成任务,需要跟多方人员协作办公,根本没有时间专......
  • shell 自加自减/函数调用/sleep/vim 替换
    1、shell自加自减shell中自加的写法((x++))或者((x+=1))减法同理((x--))或者((x-=1))使用变量a=1a=$(($a+1))a=$[$a+1]a=`expr$a+1`还有一个办法,let$letx=x+1......
  • vite环境变量
    vite环境变量1、根目录创建.env.development、.env.production//.env.development开发环境地址NODE_ENV='development'VITE_BASE_URL='开发环境地址'//.env......
  • 51、部署PaddleSeg的pp_liteseg到MNN框架、OpenVINO框架和OAK框架、NPU(RK3399 PRO)框
    基本思想:需要一个快的实例分割模型,由于需要配置oak使用,所以就记录和实现一下微软社区提供的思路,去部署PaddleSeg的轻量级(实际是语义)分割模型所有的实验模型,花了两天。。。......
  • visual studio快捷键
    快捷键     功能CTRL+SHIFT+B:生成解决方案CTRL+F7:生成编译CTRL+O:打开文件CTRL+SHIFT+O:打开项目CTRL+SHIFT+C:显示类视图窗口F4:显示属性窗口......
  • 使 element-plus 在 vite 项目中自动导入
    title:使element-plus在vite项目中自动导入description:组件,图标tags:-vue-vitedate:2022-12-2510:54目录安装依赖vite配置使用安装依赖npmiel......