Linux vi/vim | 菜鸟教程
https://zhuanlan.zhihu.com/p/602675406
Linux Vim编辑器的基本使用_vim文本编辑器-CSDN博客
思考
1. 记忆公式:
其实,可以再归纳为:
vi /vim 编辑器包括 3 种终端窗口:
- 末行窗口被内嵌在主窗口的底部末行的位置,平时是隐藏起来的。
输入冒号可以调出的末行子窗口。末行子窗口,总是嵌在其他窗口的底部,从而造成了在理解上的困难;其实就是 UI 设计中的 bottom bar,平时隐藏,使用冒号来叫出。 - 主窗口相当于网站的主页,只有在主页状态下,才有通向子网页的链接。因此,只有 Esc 回退到主页场景,才能使用快捷键命令、进入到其他子窗口。
就像是公交车,从 A 到 B 没有公交,从 A 到 B ,必须要回到总站转车才行。 - wq! 属于在末行窗口里的菜单,通过按键输入符号来调用。
一些常用命令
vim 典型的命令流:ggVG y p
多行注释
一般人难以记忆的太多的命令: Vim: intro.txt
Visual mode and ranges
https://www.computerhope.com/unix/vim.htm
You can select text with Visual mode. If you then press ":" to start a colon command, you will see this:
Now you can type the command and it will be applied to the range of lines that was visually selected.
Note: When using Visual mode to select part of a line, or using Ctrl-V to select a block of text, the colon commands will still apply to whole lines.
The '< and '> are actually marks, placed at the start and end of the Visual selection. The marks remain at their position until another Visual selection is made. Thus you can use the "'<" command to jump to position where the Visual area started. And you can mix the marks with other items:
This addresses the lines from the end of the Visual area to the end of the file.
Vim's visual mode #
When editing text with Vim, visual mode can be extremely useful for identifying chunks of text to be manipulated.
Vim's visual mode has three versions: character, line, and block. The keystrokes to enter each mode are:
- Character mode: v (lower-case)
- Line mode: V (upper-case)
- Block mode: Ctrl+v
On the bottom left of your Vim window, you will see either -- VISUAL --, -- VISUAL LINE -- or -- VISUAL BLOCK -- to indicate which visual mode you are in.
可视化模式分为三种:字符、行、块。 vim常用命令--visual模式下粘贴、复制_vim visual模式 复制-CSDN博客
2. 区别
省略说明:这里所有的窗口,都是指终端窗口,所以可以将“终端”这 2 个字省略掉了。
终端窗口:终端型菜单与内容显示的界面。
“鱼爱返”:v i Esc,v i 分别对应于 可视、插入 这 2 个窗口。Esc 表示从子窗口返回;由于所有的返回,都是返回到主窗口,包括在主窗口场景下所按下的 Esc 按键,所以 Esc 按键也可以看作就是主窗口。
冒号 ( : ):末行命令窗口。在插入模式下,无法调出末行命令窗口;因为这时它表示的是所输入的冒号字符。末行命令窗口只内嵌在可视窗口和主窗口的末行位置,因此,只有在这两个窗口模式下,输入才能有效地切换到末行命令窗口。
“温泉啊“ :w q ! 表示 vi 结束退出的 3 种主要方法:写入文件,退出,强制退出。
抓住主干,不拘小节
终端命令行菜单显示窗口与 GUI 图形窗口的类比:4 个终端窗口,对应于 4 个不同GUI 图形窗口,或者说是 4 个不同的网页。
只有一个主(网)页,在主页中,有通往所有 子网页 的导航按钮。
在子网页里,只有返回到主页的导航按钮。这个导航按钮是相同的,都是 Esc 按键。
要想从一个子网页跳转到另一个子网页,必须回到主页,因为只有在主页中,才有通往子网页的导航按钮。
终端窗口的好处
黑客之间的相互对抗,需要速度快。同样水准的黑客,速度慢时,就会沦为失败者。但是,大多数,甚至是绝大多数的编程场合,真的也需要这么快的速度吗?
就像打字那样,大多数的人使用拼音输入法,就可以了。但是,作为专门依靠打字赚钱的人来说,就需要用五笔字形之类的输入法了,因为输入快,就是赚钱多。
用得到的命令,才是生产力。用不到的命令,就是浪费时间的垃圾。
vi / vim 的命令,是=实在是太多了。在需要时再看,也不迟吧?
在网络上,有太多的网文,金子淹没在一大堆的沙石里。今天看了,明天忘了,为了自己的记忆,所以就写了这篇文章,以备忘。
在容器中,使用 vi / vim 是一种好的选择
如果不是为了使用容器,那么,估计我也不会太在意 vi ,毕竟它学了、很快就又忘记了,因为我不是依靠打字来生存的。
哪怕在容器中安装像 gedit 这种轻量的图形界面编辑器,都要下载一大堆依赖。当有些依赖没有被下载到时,App 在使用中就会出现一些莫名其妙的问题,甚至是无法启动。
容器的一个特征之一
就是类似于将原生的 Linux 发行版,在删除了绝大部分的依赖,改变了原生 OS 的运行方式,以及配置之后,得到的一个类似于可以在 VirtualBox 虚拟机上运行的 Livecd ISO;但是,容器是可读写的,类似与 linux slan os 发行版;但它不能在 VirtualBox 中运行,而是在所谓的容器引擎中运行。
在运行的容器,就相当于是电脑运行中的一个进程,一个普通的 App,所以它很轻量,在底速配置的电脑上也能飞快地运行。
3. 通过对简单网站的网页导航进行类比,说明原理
主窗口 <<== 相当于 ==>> 主网页
- 一个简单的网站,只有 1 个主页,3 个子网面;外加一些杂七杂八的东西。
- 回车键,4 个箭头的方向建,这些不需要用脑来记忆了吧?
附加说明
- 只有主页 home( “命令模式” )才有直接跳转到各个子网页的按钮。
- 跳转的导航规则:没有从一个子网页 可以直接转到 其他子网页 的按钮。要想从一个子网页跳转到另一个子网页,必须返回到主网页 home ,然后,再从主页上、去选择到底要点击哪一个子菜单的按钮。
what is :wq!
- : 冒号是必须的,只有这样,其后的字母,才会被解释为是命令。
- w : write 表示写入文件命令。只有 :w 时,表示只写入,但不退出。
- q : quit 表示退出。只有 :q 时,表示退出,但不写入。
- ! : 感叹号表示强制。为什么需要感叹号?但文件被改动了,是不允许直接退出的,否则,所有的工作就白费了。
- 结束,退出的条件:正在运行中的 vi / vim 编辑器,想要退出,是有条件的:
1. 要么是文件没有被改变 :q。
2. 要么是存盘之后,再退出 :wq
3. 想要退出,但又不想存盘时,就要采用“强制” :wq! 或 :q! 表示:存盘后强制退出,或 不存盘强制退出。
x. :q 退出,退不出?!
:q! 强制退出,成功了。啊!啊!啊!黄了、黄了,没有存盘!!白干了。
wq! 这 3 个字符,就有好几种的有效组合。 - vi / vim 的命令,全部都是 ASCII 编码的拉丁字母与符号。26 个字母就是 26 进制的数学计数系统而已,拉丁语单词,本质上就是一个可变长度的优选数值而已,根据单词的造型和发音来作为其选择的主要依据之一。
备注
1. 入门、或者个人简单运维的用途,只需要记住:鱼 爱 返 ==>> v i Esc 。
2. vi / vim 编辑器的命令,是非常多的,那是给专门使用 vi 作为日常工作编辑器的古董级、或黑客级的程序员使用的。
可能大多数的程序员并不会去使用它,因为从总的用时来看,一般使用图形界面的编辑器,并不见的会比使用单纯的命令行编辑器,效率会低?
3. 当我们只想要简单地使用 vo /vim 时,v i Esc : "鱼爱返说"这 4 个精华按键,被淹没在命令字符的海洋里。
4. 为什么要学习 vi / vim ?当需要使用容器时,在容器里是可以安装一个大型的编辑器的,但是,这可能需要浪费不少的流量、磁盘空间、精力、时间(寿命)等等。
5. 为什么要使用容器?在 Linux 的世界里,App 的跨发行部,跨大版本号的使用,实在是困难的。
6. 那,为什么要 App 软件进行跨平台使用呢?因为需要使用,所以就要采用。自己造轮子吗?这可能会浪费更多的人生寿命阿。
7. 需要掌握,但又不想浪费过多的时间,于是,就有了 7 字真言:"鱼爱返 说 温泉啊" == v i Esc : wq !"
8. 它别注意:在有些官方仓库里,可能只有 vim,而没有 vi,但它们的大部分,甚至是绝大部分的命令,都是相同的。
App 窗口图的说明
vim 运行开始界面
工作及窗口切换框架 示例 2
刚刚打开文件时的界面: vim 文件名
子窗口 == 子网页:注意看左下角的提示。
按错了按键,一般没有关系,看准左下角的提示,就行。
问题记录
当打开没有权限、或只读型的文件时,出现警告:
此时,如果处在中文输入状态,则会出现无法进入菜单窗口的问题。