vim编辑器的常用技巧

文章目录

  • vim编辑器的常用技巧
    • 前言
    • Vi的使用
      • vi的三种模式
      • 常用按键说明
    • Vim额外功能
      • 多文件编辑
      • 多窗口编辑
    • 参考文章

前言

我们在使用 Windows 系统时,如果想要更改一些文件的内容,我们通常会以记事本格式(即 txt 格式)打开文件,往里面写入或修改一些内容,记事本就是我们常用的一款文件编辑器。同样地,在 Linux 系统下,我们也需要一款文本编辑器来编辑文件的内容。

Linux 系统在命令行模式下的文本编辑器是非常多的,比如 nano、pico、vim等。这其中最重要的,最需要掌握的,就是 vim 编辑器了

在 Linux 系统中,有一个老式的编辑器 vi,功能很齐全,是一款较为好用的文本编辑工具,大家都喜欢用。而 vim 是 vi 的高级版本,包含了 vi 所有功能的同时,vim里面又加入了很多额外的功能,比如支持正则表达式,多文件编辑等,vim更像是一款程序开发工具,已经获得了大家的一致好评。

列举一下学习 vi/vim 的重要性:

  1. 所有的 UNIX-like 系统基本都会内置 vi 文本编辑器,而别的文本编辑器则不一定会有
  2. 很多软件的编辑接口都会主动调用 vi
  3. vim具有程序编辑的功能,可以主动识别对应语法,并以字体颜色作为区分,方便判断语法是否正确,纠正程序书写。
  4. 编辑速度很快

注意,现在的 Linux 系统中,已经默认用 vim 替代 vi 了,所以在命令行中直接输入 vi 或者 vim 的效果是一样的。

Vi的使用

vi的三种模式

基本上 vi 共分为三种模式:

  • 一般命令模式(command node)
  • 编辑模式 (insert mode)
  • 命令行模式(command-line mode)

一般命令模式也被称为普通模式,是默认进入的模式,用 vi 打开一个文件就进入一般命令模式了。这里注意,如果文件存在,则vi会打开对应文件;如果文件不存在,vi会新建一个文件再打开,所以打开文件时一定要输入正确的文件名

vi filename     //比如 vi test.txt

在一般命令模式下,可以进行删除、复制、粘贴等操作,比如,光标移到要删除的那行,输入 dd ,删除该行。但是不允许编辑文件内容。想要进行编辑,得进入编辑模式才可以。

如下图所示,已经进入一般命令模式。

在一般命令模式下,输入 ioar (不论大小写)其中任何一个字母,都会进入编辑模式。前三个字母代表的是 insert,最后一个 r 代表的是 replace。

注意,要看到左下角出现【INSERT】或【REPLACE】的字样,才真正进入了编辑模式,在编辑模式下可以任意编辑文本内容。如果要退出编辑模式,按下【Esc】键可即退回到一般命令模式。

在一般命令模式下,输入 :/? 其中任何一个符号,就可以把光标移动到最下面那一行,进入命令行模式。

在命令行模式中,可以进行数据的查找,读取、保存、批量替换字符串、退出vi、显示行号等操作。同样地,按下【Esc】键即可退回到一般命令模式。

这里注意一点,一般命令模式是默认进入的模式,但是要退出 vi ,只能通过命令行模式退出

总结一下三个模式之间的关系,一般命令模式可以和其他两个模式之间相互切换,但是编辑模式与命令行模式不可以相互切换。

用 vim 来编辑文件最常用的一种方式是,用 vim 文件名 的方式打开文件,按 i 进入编辑模式对文件进行编辑,编辑完成后按 【Esc】 键退回到一般命令模式,按下 : 进入命令行模式,输入 wq 并回车,文件保存成功

常用按键说明

下面的表格列举了一些常用按键(区分大小写),在一般命令模式下,学会这些按键使用,可以帮助自己提升效率,事半功倍。

按键 移动光标
h 或 左箭头 ← 光标向左移动
j 或 下箭头 ↓ 光标向下移动
k 或 右箭头 → 光标向右移动
l 或 上箭头 ↑ 光标向上移动
ctrl + f 屏幕向下移动一页
ctrl + b 屏幕向上移动一页
n<space> n表示数字,按下数字后再按空格键,光标会向右移动 n 个字符的位置
n<enter> n表示数字,按下数字后再按回车键,光标会向下移动 n 行
0 数字0,光标会移动到这一行的第一个位置
$ 光标移动到这一行最后一个位置
gg 光标移动到文件的第一行,相当于 1G
G 光标移动到文件的最后一行
nG n表示数字,光标移动到文件的第 n 行
命令 查找与替换
/word 从光标位置开始,向下查找一个名为 word 的字符串
?word 从光标位置开始,向上查找一个名为 word 的字符串
n n是英文按键,重复前一个查找的操作
:n1,n2s/word1/word2/g n1、n2为数字,在第 n1 与 n2 行之间寻找 word1 这个字符串,
并将其全部替换为 word2(注意前面有冒号)
:1,$s/word1/word2/g 在第一行与最后一行之间寻找 word1 这个字符串,并将其全部替换为 word2
:1,$s/word1/word2/gc 加了一个 c,在替换前会询问用户是否替换

如果不小心替换错了,可以按 u 撤销上一步操作

按键 删除、复制与粘贴
x/X 以光标位置为起点,x表示向后删除一个字符(相当于Delete)
X表示向前删除一个字符(相当于Backspace)
nx n为数字,连续向后删除n个字符。nX 则连续向前删除 n 个字符
dd 剪切光标所在的那一行数据
ndd n为数字,剪切包含光标所在行向下的 n 行数据。nyy同理
d$ 剪切光标所在处到该行的最后一个字符。y$同理
yy 复制光标所在的那一行数据
p/P p将一复制的数据在光标下一行粘贴,P在上一行粘贴
J 将光标所在行与下一行数据结合成同一行
u 撤销上一步操作
. 小数点,重复上一步操作

这里注意,小数点是不能重复撤销操作的。举个例子,有一行数据 “Linux is funny”,光标在 x 字符上,按下 d$,本行数据变为 “Linu”,按下 u 进行撤销,数据恢复为 “Linux is funny”,此时按下小数点 . 会重复进行 d$ 操作,而不是撤销,数据又变成了 “Linu”。

命令 保存、退出
:w 将编辑的文件进行保存
:w! 若文件属性是只读属性,如果用户权限足够,可以进行强制保存
:q 退出 vi/vim
:q! 强制退出
:wq 保存并退出,:wq! 即为强制保存并退出
ZZ 文件没有修改则直接退出,文件修改了则保存再退出
:! command 暂时退出 vi/vim 到命令行模式下执行 command的显示结果(注意空格)
:set nu 显示行号
:set nonu 不显示行号

例如,:! ls ~ 这条命令,可以查看当前 home 目录下面以 ls 输出的文件信息,按任意键可以回到 vi/vim 中。

Vim额外功能

多文件编辑

我们用 vi 打开一个文件的时候它是占满全屏的,我们看不到别的文件,也只能编辑当前文件。vim支持我们进行多个文件同时编辑,可以来回切换而不是频繁退出。

命令 多文件编辑
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个 vim 开启的所有文件

举个例子。首先,我们先一次性打开两个文件,系统会默认显示第一个文件

vim test1.txt test2.txt

输入 :files 即可看到我们同时打开了两个文件,%a表示当前正在查看的是 test1.txt 文件。

按任意键继续,输入 :n 即可切换到下一个文件进行编辑。

注意,必须是用 vim 同时打开多个文件才行

多窗口编辑

如果想需要同时对照多个文件进行编辑,多文件下就得反复横跳,对照的效率大大降低,感觉比较麻烦。幸好 vim 为我们提供了多窗口编辑的功能,有了多窗口,就可以方便地进行文件的对照和编辑了。

相比之下,多窗口就比多文件更灵活、更好用,而且没有了多文件必须同时打开的限制。

命令 多窗口编辑
:sp {filename} 打开一个新窗口,如果有 filename,则在新窗口打开新文件;
如果仅输入了 :sp 则将当前文件再用新窗口打开一次
ctrl + w + j
ctrl + w +↓
先按下 ctrl 键不放,再按下 w 键,松开所有按键,再按下 j 或方向键,光标移动到下面的窗口
ctrl + w + k
ctrl+ w + ↑
同理,光标移动到上面的窗口
:q 退出当前窗口,:wq 同理使用

比如,我们先用 vim 打开刚才的 test1.txt 文件,再通过命令行输入 :sp test2.txt 即可使用多窗口,对照更方便,不易出错。

想退出哪个窗口,可以先将光标切换到对应窗口,按 Esc 键进入一般命令模式,再输入 :q 退出。

参考文章

鸟哥的Linux私房菜——基础学习篇(第四版)

vim编辑器的常用技巧相关推荐

  1. Linux基础(1)--Vim编辑器的常用命令

    Vim编辑器的常用命令 指令模式 输入模式 底行模式(shift+:) 指令模式 指令模式命令也叫命令行模式 – G 光标置于文本最后一行,最后一列.大写输入为按键"Shift+g" ...

  2. 【Red Hat 】vim编辑器的常用命令以及使用技巧

    vim编辑器分为三种模式:命令模式.输入模式.末行模式(插入模式) 下面为大家介绍一些常用的vim编辑器的常见的快捷键已经使用技巧 显示行号和翻页 :set nu  显示行号 :set nonu 取消 ...

  3. vim编辑器下常用搜索技巧

    步骤1:进入vim编辑器 vim /etc/ssh/ssh_config 步骤2:搜索方式 方式一:快速搜索(字符串完全匹配,区分大小写) 格式: /   +  关键词    or     ?+ 关键 ...

  4. Vim编辑器的常用快捷键.

    Linux中的文本操作离不开Vim编辑器的使用. Vim编辑器的使用相对门槛较高.需要挺长一段时间的适应. 总结一些Vim使用过程中常用的命令(这些命令基本上都是在vim的命令模式下使用) 1.跳转到 ...

  5. Linux下编译cscope,vim+ctags+cscope 常用技巧和命令

    首先声明,本文不适用于初学者! 1 编译ctags需要的文件 #make ARCH=x86 tags ARCH=x86 的意思是除了索引指定的x86体系结构的代码外,不索引其他体系结构的想关代码 2 ...

  6. 鸟哥私房菜—Vim编辑器的常用快捷键

    一 移动游标的方法 页面级别 [Ctrl] + b / [Ctrl]+ PgUp    向上移动一页 [Ctrl] + f / [Ctrl]+ PgDn     向下移动一页 [Ctrl] + u 向 ...

  7. c语言 常用命令,嵌入式基础—C语言(1)—vim编辑器的常用命令

    ~:家目录 $:提示符 [2] 开启终端 ctrl+shift+n:打开为当前目录 ctrl+alt+t:打开终端默认为家目录 [3] ls 浏览目录 ls   -a     浏览所有的文件,包括隐藏 ...

  8. linux(linux常用命令,软件安装,vim编辑器)

    linux2 linux常用命令 软件安装 vim编辑器 linux常用命令 系统信息 date 显示系统日期 cal / cal 2018 关机 (系统的关机.重启以及登出 ) shutdown - ...

  9. Linux知识之vim编辑器

    文章目录 一.vi与vim文本编辑器 1.什么是文本编辑器 2.vi/vim编辑器简介及区别 2.1 简介 2.2 vi与vim的区别 二.vim编辑器 2.1 vim编辑器使用指南 2.2 进入文件 ...

最新文章

  1. Devexpress 之gridControl
  2. ont维修使能工具_上海OTC机器人维修保养以及调试服务了解
  3. SegmentFault D-Day 北京:大数据
  4. vb怎么抓取html的class,vbs怎么获取网页内容
  5. Centos:Yum常用参数
  6. 讨物联网的隐私解决方案_2017年数据隐私日:日常隐私解决方案
  7. CStatic类的GDI双缓冲绘图
  8. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
  9. 如何在工具类中注入Service
  10. 机器学习 周志华 课后习题 7.3
  11. python爬虫遇到动态加密怎么办?爬取某点评网站内容
  12. Windows系统下查询本机IP地址和MAC地址
  13. 软件设计师:06-程序设计语言与语言处理程序基础
  14. Spark bucketing bucket分桶原理和应用
  15. Mercurial修改历史changeset
  16. 微信公众号 H5 jssdk 分享卡片功能实现(亲测使用)
  17. ET5.0 UGUI替换为FairyGUI
  18. x86_64 OpenWrt/LEDE 环境下使用mentohust配置锐捷上网共享网络
  19. 神威太湖之光是微型计算机,【单选题】国研制的神威·太湖之光计算机是‍ 。 A. 微型计算机 B. 超级计算机 C. 小型计算机 D. 中型计算机...
  20. 大家都有什么时间管理的工具和技巧?这款便签软件赶紧收藏

热门文章

  1. springboot启动流程
  2. AutoBench的使用分析
  3. Android --- 怎么去掉小数后面不必要的 0
  4. jQuery面试题-区别mouseover和mouseenter的不同之处(看了也许对你有好处)
  5. oracle 202,Oracle Certification 1Z0-202题库
  6. php mongo分页查询,PHP操作Mongodb之高级查询篇
  7. 普平数据招聘:数据中心建设项目经理(工程部 )2人
  8. Tool之Adobe:解决Adobe acrobat pro将PDF文件进行批量保存单页PDF文件(图文教程)
  9. 成功解决SyntaxError: import * only allowed at module level
  10. 成功解决TypeError: fit_transform() takes 2 positional arguments but 3 were given