首页 > 系统相关 >Linux系统中的Vim编辑器

Linux系统中的Vim编辑器

时间:2024-07-28 19:55:17浏览次数:10  
标签:Normal 模式 Vim 命令 编辑器 file Linux 光标

本章将和大家分享Linux系统中的Vim编辑器。废话不多说,下面我们直接进入主题。

一、Vim 入门帮助

Vim 带有完整的帮助文档:进入 Vim 后输入“:help”即可访问

二、Vim 模式介绍 

与大部分其它编辑器不同,进入 Vim 后,缺省状态下键入的字符并不会插入到所编辑的文件之中。Vim 的模式(mode,可以简单地理解为“状态 ”)概念非常重要。需要知道 Vim 有以下几个模式:

  • 正常(normal)模式,缺省的编辑模式;下面如果不加特殊说明,提到的命令都直接在正常模式下输入;任何其它模式中都可以通过键盘上的 Esc 键回到正常模式。
  • 命令(command)模式,用于执行较长、较复杂的命令;在正常模式下输入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)即可进入该模式;命令模式下的命令要输入回车键(Enter)才算完成。
  • 插入(insert)模式,输入文本时使用;在正常模式下键入“i”(insert)或“a”(append)即可进入插入模式(也有另外一些命令,例如:“c”,也可以进入插入模式,但这些命令有其它的作用)。
  • 可视(visual)模式,用于选定文本块;可以在正常模式下输入“v”(小写)来按字符选定,输入“V”(大写)来按行选定,或输入“Ctrl-V”来按方块选定。
  • 选择(select)模式,与普通的 Windows 编辑器较为接近的选择文本块的方式;在以可视模式和选择模式之一选定文本块之后,可以使用“Ctrl-G”切换到另一模式 —— 该模式很少在 Linux 上使用,本文中就不再介绍了。

1、正常模式

2、命令模式

3、插入模式

  • i 光标所在位置插入
  • I 光标所在位置行首插入
  • o 光标所在位置下方新开一行插入
  • O 光标所在位置上方新开一行插入
  • a 光标所在位置下一个字符的位置插入
  • A 光标所在位置行行尾插入

三、Vim 实例

1、首次运行 Vim

[root@localhost myfolder]# ll
总用量 4
-rw-r--r--. 1 root root 152 7月  27 23:28 file1
[root@localhost myfolder]# vim file1

使 Vim 开始编辑一个名为 file1 的文件,屏幕上看起来大致是这样:

1)“黑色块”代表当前光标位置;

2)上波浪线(~)表示所在行并不是文件内容的一部分。换句话说,Vim 将文件之外的部分显示为波浪线;

3)在窗口的底部,一个消息行显示说当前正在编辑的文件叫 file1,它有27行,152个字符,当前光标所在位置为第21行的第1位。

如果是新文件呢?

[root@localhost myfolder]# vim file

在窗口的底部,一个消息行显示说当前正在编辑的文件叫file,并且它是一个新文件。

2、插入文本

Vim 编辑器是一个模式编辑器。这意味着在不同状态下编辑器有不同的行为模式。两个基本的模式 Normal 模式和 Insert 模式。在 Normal 模式下你输入的每一个字符都被视为一个命令。而在 Insert 模式下输入的字符都作为实际要输入的文本内容。刚启动时 Vim 工作于 Normal 模式。要进入 Insert 模式你需要使用“i”命 令(i 意为 Insert),接下来就可以直接输入了。别怕出错,错了还可以修改。

编辑内容时使用 回车键 换行,编辑完成后按下 Esc 键退出 Insert 模式,回到 Normal 模式。

要知道你现在所处的工作模式是什么,打开显示模式的开关:

:set showmode
:set noshowmode 关闭显示模式

你会看到按下冒号键之后当前光标跑到窗口的最后一行去了。那是使用冒号命令的地方(顾名思义,冒号命令就是总是以冒号打头的命令)。最后按下回车键结束整个命令(所有的冒号命令都以这种方式表明命令的结束)。

现在,如果你输入了“i”命令 Vim 就会在窗口底部显示—INSERT—(插入)。这表明你目前处于 Insert 模式。如果按下 Esc 键返回到 Normal 模式,则刚才显示出来的模式—INSERT—就会消失;Normal 模式并不会显示—NORMAL—,作为默认的工作模式它不显示任何字符串。

不管你当前所处的模式是什么,按下 Esc 键都会让你回到 Normal 模式(即使已经在 Normal 模式下)。有时需要按两次,如果 Vim 以一声蜂鸣回答你,那说明你已经是在 Normal 模式了。

3、移动光标

回到 Normal 模式后,你就可以用下面的命令来移动光标:

  • h 左
  • j 下
  • k 上
  • l 右

备注:同时你还可以用箭头键来移动光标。不过这样做实际上会大大降低你的效率,因为用这些键你需要不停地在字母区和箭头键之间频繁转换。

4、删除字符

  • 在 Normal 模式下要删除一个字符,只需要将光标移到该字符的前面,然后按下“x”。
  • 在 Normal 模式下要删除一行,使用“dd”命令。
  • 命令“u”可以撤消上一次的操作。
  • 如果你撤消了多次,你还可以用 CTRL R 来反转撤消的动作,即反撤消。
  • 撤消命令还有另一种形式,大写的“U”命令,它一次撤消对一行的全部操作。第二次使用该命令则会撤消前一个“U”的操作。

5、其它编辑命令

另起一行 o/O (在 Normal 模式下):

  • “o”命令可以在当前行的下面另起一行,并使当前模式转为 Insert 模 式。这样你可以在该命令之后直接输入内容。
  • “O”命令(注意是大写的字母O)将在当前行的上面另起一行,并使当前模式转为 Insert 模 式。

6、退出

  • 在 Normal 模式下要退出 Vim,可以使用“ZZ”命令。
  • 放弃所有修改可以使用 :q! 命令。
  • 放弃所有修改并重新载入可以使用 :e! 命令。
  • 保存并退出可以使用 :wq 或 :wq!(强制保存退出) 命令。

7、光标的指定移动

  • 在 Normal 模式下,“G”命令指定一个命令计数,这个命令就会把光标定位到由命令计数指定的行上,比 如“33G”就会把光标置于第 33 行上。
  • “G”命令会把光标定位到最后一行上。
  • “gg”命令是跳转到第一行的快捷方法,和“1G”的效果是一样的。

8、简单搜索

1)“/string”命令,可用于搜索一个字符串,例如:要找到单词“mysql”,则可以使用命令:“/mysql”。

要查找上次查找的字符串的下一个位置,使用“n”命令。如果你知道你要找的确切位置是目标字符串的第几次出现,还可以在“n”之前放置一个命令计数,例如:“3n”则会去查找目标字符串的第3次出现。向光标所在位置以上查找用大写的“N”。

2)“?string”命令,“?”命令与“/”的工作相同,只是搜索方向相反。

3)忽略大小写,可以通过设置“ignorecase”选项:

:set ignorecase  //忽略大小写
:set noignorecase  //取消忽略大小写

4)查找结果高亮显示

:set hlsearch  //查找结果设置为高亮显示
:set nohlsearch  //取消高亮显示
:nohlsearch  //只去掉当前的高亮显示

9、复制粘贴

要把文本内容从一处复制到另一处:

  • 先删除 dd 再粘贴 p
  • “y”操作符命令会把文本复制到一个寄存器中,然后可以用“p”命令把它取回。

“y”命令:

  • “yw”来复制一个word;
  • “y2w”命令复制两个word;
  • “yy”复制一行;
  • “3yy”复制光标所在行和向下的行,一共三行。

10、替换字符

  • :s/UNIX/linux 对光标所在行第一个出现的 UNIX 替换成 linux
  • :s/UNIX/linux /g 对光标所在行所有 UNIX 都替换成 linux ,g 表示全行替换
  • :% s/UNIX/linux /g 将全文中的 UNIX 都替换成 linux ,其中“%”指定该命令将作用于所有行上

四、Vim 的保护机制

如果我们没有通过 q 退出,而是通过其他方式强行退出,比如说直接关终端,会导致 vim 的一个报错,当我们下次打开这个文件的时候,会提示:

E325: 注意
发现交换文件 ".file.swp"
            所有者: root    日期: Sun Jul 28 19:43:04 2024
            文件名: ~root/myfolder/file
            修改过: 是
            用户名: root      主机名: localhost.localdomain
           进程 ID: 3884
正在打开文件 "file"
              日期: Sun Jul 28 17:25:26 2024

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    如果是这样,请用 ":recover" 或 "vim -r file"
    恢复修改的内容 (请见 ":help recovery")。
    如果你已经进行了恢复,请删除交换文件 ".file.swp"
    以避免再看到此消息。

交换文件 ".file.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 删除交换文件((D)), 退出((Q)), 中止((A)):

这是因为 vim 他不是实时写入的机制,他会先把文件写到内存,等我们执行 w 操作以后,再写回到原文件。那么在写回原文件,或者执行 q 的放弃操作之前,会生成一个临时的文件,以 . 开头,以 .swp 结尾。当我们看到这种情况,就说明这个文件是在被编辑的过程中强制退出的,或者是正在被人编辑。

所以这个文件的作用就是防止强制退出造成的数据安全隐患,和防止文件同时被多次修改。

我们可以根据他的提示执行相应的操作,比如说 Q 退出。如果想要顺利编辑这个文件的话,一方面可以使用 E 直接编辑,或者先退出,把 swp 文件删除了以后再编辑也是可以的。

注意:使用 vim 需要注意一下权限问题,必须要有读写权限才能使用 vim 。

可以看一下没有写权限和没有读权限会出现什么问题。

 

此文由博主精心撰写转载请保留此原文链接:https://www.cnblogs.com/xyh9039/p/18327652

版权声明:如有雷同纯属巧合,如有侵权请及时联系本人修改,谢谢!!! 

标签:Normal,模式,Vim,命令,编辑器,file,Linux,光标
From: https://www.cnblogs.com/xyh9039/p/18327652

相关文章

  • Linux Kernel CFI机制简介及测试禁用
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  当我们为android移植linux的驱动程序的时候,总会遇到一些错误,这些错误有一部分就是android内核开启的安全的机制导致的。本文就会介绍一种......
  • 绝对实用Linux命令行下的文件夹逐层创建术,从小白到大神的必学技能
    哈喽,大家好,我是木头左!基础篇:初识Linux文件系统在深入了解如何在Linux中逐层创建文件夹之前,需要对Linux的文件系统有一个基本的认识。Linux文件系统以其树状结构而著称,其中/(根目录)是所有其他目录和文件的起点。每个分区、设备、目录都可以被挂载在这个树中的某个节点上。文件......
  • Linux文件权限管理
    1.文件权限位说明Linux文件或目录的基本权限位是由九个字符来控制的,每三位字符为一组。前三位是用户权限位中三位表示用户组权限位后三位表示其他用户权限位rwxr-xr-xuser(用户)group(用户组)others(其他用户)代表字符为u代表字符为g代表字符为o2.文件权限详细说明......
  • Linux常用打包压缩命令
    压缩命令应用场景tar大部分使用tar即可。创建,查看,解压,解压到指定目录gzip一般配合其他命令使用zip+unzip一般用于解压zip格式的压缩包1.tar打包压缩命令1.1命令详解【功能说明】在Linux系统里,tar是将多个文件打包在一起,并且可以实现解压打包的文件的命令。是系统管理......
  • Linux网络:传输层协议TCP(三)滑动窗口及流量控制
    目录一、关于滑动窗口在TCP中的应用1.1什么是滑动窗口,为什么要有滑动窗口1.2滑动窗口的实现1.3滑动窗口针对丢包重传的处理机制二、流量控制一、关于滑动窗口在TCP中的应用1.1什么是滑动窗口,为什么要有滑动窗口在上一篇博文中博主阐述了确认应答ACK策略,对每一个对......
  • 我的 vimrc (简化版)
    先安装vim-plug|cnblogs"时间:2024年7月26日"vim的配置,用标记折叠的方式组织起来,感觉很好"--------------------------------------------------------------------------------"#1.Plug{{{"##1.1plug-vim{{{"-------------------------------------......
  • Linux内核-异常输出调用栈CallTrace与Ftrace工具集
    1dump_stack函数打印内核调用堆栈。举个例子:我们定义四个函数aaa、bbb、ccc、ddd,然后bbb中调用aaa,ccc中调用bbb,ddd函数谁都不调用。在入口函数中,我们调用ccc与ddd函数,看看堆栈打印效果如何:#include<linux/module.h>#include<linux/kernel.h>#include<linux/init.h>#incl......
  • Blender 4.2 LTS (macOS, Linux, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)
    Blender4.2LTS(macOS,Linux,Windows)-开源3D创意软件(渲染建模雕刻)创造的自由Blender获得GNUGPL许可,由其贡献者拥有。因此,Blender永远是免费和开源软件。使命以免费/开源软件的形式将世界上最好的3DCG技术交到艺术家手中。想象每个人都应该自由地创......
  • Linux——CPU占不上去的解决办法
    一、将调节器升至performance:1.1查看当前的调节器:cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor如果不是performance,则进入root账户1.2进入root账户先进入管理员账户输入命令:suroot如果没有root账号,则参考博客:Linux系统下的root用户初始密码设......
  • Linux——手动清理内存缓存
    前言:使用free-m命令可以查看内存缓存。一、方法1.1先进管理员账户,然后进root账户1.2运行下面的命令:syncecho1>/proc/sys/vm/drop_caches#清空目录项缓存echo0>/proc/sys/vm/drop_caches#还原默认配置,这一步如果出错,则不用管sync二、小贴士......