linux笔记10--编辑器之神VIM

文章目录

  • [1. 简单介绍](#1. 简单介绍)
    • [① 为什么叫vim](#① 为什么叫vim)
    • [② linux常见的编辑器](#② linux常见的编辑器)
    • [③ 注意事项](#③ 注意事项)
    • [④ 其它](#④ 其它)
  • [2. 操作模式的划分](#2. 操作模式的划分)
  • [3. 命令](#3. 命令)
    • [① 移动光标](#① 移动光标)
    • [② 翻页](#② 翻页)
    • [③ 不同方式编辑文本以及跳跃单词](#③ 不同方式编辑文本以及跳跃单词)
    • [④ 跳跃行首行尾](#④ 跳跃行首行尾)
    • [⑤ 大括号跳跃函数段落](#⑤ 大括号跳跃函数段落)
    • [⑥ 替换字母](#⑥ 替换字母)
    • [⑦ 光标移动到代码首行的开头](#⑦ 光标移动到代码首行的开头)
    • [⑧ 访问当前目录所有文件夹](#⑧ 访问当前目录所有文件夹)
    • [⑨ 注意](#⑨ 注意)
  • [4. vim复制剪切粘贴](#4. vim复制剪切粘贴)
    • [① 复制](#① 复制)
    • [② 粘贴](#② 粘贴)
    • [③ 剪切](#③ 剪切)
  • [5. Visual可视化模式](#5. Visual可视化模式)
  • [6. 查找和替换](#6. 查找和替换)
    • [① Windows中记事本](#① Windows中记事本)
    • [② Linux中vim](#② Linux中vim)
      • 查找
      • 替换
        • [① 替换单个](#① 替换单个)
        • [② 替换整行](#② 替换整行)
        • [③ 替换整个文件的(替换全局文档)](#③ 替换整个文件的(替换全局文档))
        • [④ 替换指定行(全局替换)](#④ 替换指定行(全局替换))
        • [⑤ 全局替换带提示(②的升级):](#⑤ 全局替换带提示(②的升级):)
  • [7. vim的基础配置](#7. vim的基础配置)
    • [① ll查看home目录](#① ll查看home目录)
    • [② 创建.vimrc文件](#② 创建.vimrc文件)
    • [③ 配置vim](#③ 配置vim)
    • [④ 更新当前终端](#④ 更新当前终端)
    • [⑤ 检测是否配置成功](#⑤ 检测是否配置成功)
  • [8. 推荐](#8. 推荐)

1. 简单介绍

① 为什么叫vim

① GNU中的开发人员把 vi 移植到 linux 当中以后,他们就不能再用 vi 这个名字了。

② 准确来说,vim只是一个简称,全称应该是vi improved。

② linux常见的编辑器

命令版:

vi -- 原始Unix最初使用的编辑器

nano

emacs -- 神的编辑器 用的多

vim -- 编辑器之神 用的多
界面版:

KWrite

Gnome
注:

① Ubuntu自带的编辑器:text editor

② 服务器都是server版(纯命令)的,没有界面版

③ 注意事项

① 使用vim之前必须先安装vim,因为它自带的库有些有问题

② centos上显示的可能不是vim,而是vi

④ 其它

① vim好处很多,例如:可以快速跳转到长文档的开头或者末尾等,在下面的小节中可以感受到

② vim不太容易上手,需要一段时间适应(其实主要由于习惯问题),而且vim不安装插件就没有任何代码提示。因此,业界里有一个吹牛的话:牛逼的人总是想办法让工具变得更难用,来提高自己

③ 使用vim的两种人:1. 临时需要用服务器写一些东西(文档、配置、脚本等)或者编辑一些东西;2. 单纯喜欢vim

④ vim的使用与否也要根据个人习惯而言

⑤ 当今世界最流行的还是vim

⑥ 好的工具和插件确实帮助我们提高了开发效率,但从某种角度来说不能提高我们的水准

⑦ vim

2. 操作模式的划分

① 两种 -- 国际上

普通模式(命令操作模式)

普通模式:操作文件的时候 (例如:查找、撤销、复制粘贴、全选、翻页、保存等)

插入模式

插入模式:编辑文件内容的时候

② 三种 -- 国内

普通模式

普通模式:操作文件的时候 (例如:查找、撤销、复制粘贴、翻页、全选等)

如何进入与退出

进入:vim + 文件名
退出:冒号 + q 具体参见下述命令模式这一部分中常见的命令模式这一部分

界面

插入模式

插入模式:编辑文件内容的时候

如何进入与退出

进入:普通模式下按一下 i 即可 (原因:插入的英文是insert)
退出:Esc键

界面

命令模式

命令模式:普通模式输入冒号的一瞬间就进入了命令模式

如何进入与退出

进入:普通模式下按一下 shift + ; (即输入冒号)即可
退出:Esc键

界面
常见的命令模式

① :w -- 只保存不退出 (w代表write,写入文件的意思)

② :q -- 退出 (q代表quit,退出的意思)

③ :wq -- 保存退出

④ :q! -- 不保存退出

③ 区别

国内把用命令退出普通模式这个阶段,单独分离了出来,并且命名为命令模式。

④ 其它

我们可以发现在桌面版里用vim打开代码时,存在高亮;但是 server版里没有高亮(不过高亮效果可以后期自己设置,vim中的很多东西是可以调整的) 。

3. 命令

① 移动光标

① 通常情况下:方向键上下左右

② vim:

h:向左

j:向下

k:向上

l:向右
注:

① vim被称为编辑器之神,是因为用它写代码时可以将双手绝对的投放在左半边键盘上

② hhkb键盘没有方向键的目的就是,尽可能地避免使用方向键,减少时间消耗。

③ 一些大佬喜欢使用mbp(全称:MacBook Pro,苹果公司生产的一款笔记本电脑型号)编写代码

② 翻页

① 通常情况下:

PgUp:向上

PgDn:向下

② vim:

Ctrl + F:下一页

Ctrl + B :上一页

Ctrl + E:向下 滚动翻页

Ctrl + Y:向上 滚动翻页

G :移动到文档最后一行

gg:移动到文档第一行
注:VIM中所有的命令区分大小写

③ 不同方式编辑文本以及跳跃单词

编辑文本

插入

i(insert):光标位置之前插入字符

a(append):光标位置之后插入字符
o:直接enter到下一行输入(无论你在当前行的哪个位置)

删除

x:删除光标所在字符

dd:删除光标所在行

dw:删除光标当前位置到当前单词的结尾(包括空格)的文本

撤销操作

u:撤销操作

跳跃单词

b(back):跳跃首字母(即将光标移动到当前或前一个单词的开头)

e(end):跳跃尾字母(即将光标移动到当前或下一个单词的结尾)

w(word):跳跃至下一个单词的首字母
大跳:
shift联合操作 -- 只找大单词,忽略标点符号和空格

shift + b

shift + e

shift + w

④ 跳跃行首行尾

shift + 6 (^):跳跃到本行的开头

shift + 4($):跳跃到本行的末尾

0:直接跳到本行开头(包含空白字符)

⑤ 大括号跳跃函数段落

大括号相当于一个段落(代码块)

{ :跳至段落开头

} :跳至段落结尾
注:可以写个类似代码查看效果

⑥ 替换字母

r:替换光标所在字母(按下字母 r -> 按下要替换成的字母)

R:替换光标所在字母后还可以一直输入,直到按了Esc键退出

⑦ 光标移动到代码首行的开头

gg

⑧ 访问当前目录所有文件夹

vim .

仍然通过h j k l上下左右移动

想要编辑哪个文件就把光标移到到哪个文件,然后回车

⑨ 注意

① 普通模式下,尽量不要使用Backspace键(退格键)和Delete键,因为vim中的Backspace和Delete有时候可能会代表一些命令

② 插入模式下,尽可能别使用Backspace键

4. vim复制剪切粘贴

vim中有一个专门的缓冲区,记录复制、剪切、删除的数据

① 复制

yw:复制一个单词(从当前字符开始到当前单词的末尾,包含空格)

y$:从当前字符开始往后复制到行末尾

缺点

只有粘贴出来才知道复制了什么

② 粘贴

p(put):释放(即将最后一次复制或者剪切文本粘贴到当前光标位置之后)

③ 剪切

vim中准确来说没有剪切的概念。

dd(dw等删除操作) -> 光标移动到目标位置 -> p:可以理解为剪切操作

5. Visual可视化模式

① 作用

在不借助鼠标的情况下选择文本(借助 h j k l 键)

② 操作方式

普通模式下按 v 或 V 键 进入可视化模式

V(visual):只能按行复制

v(visual):可以借助h j k l 键上下左右随意复制,甚至可以使用之前学过的跳跃命令 (如:使用w键跳跃单词复制)

y:文本选择结束

p:粘贴

d:删除

gg:普通模式下移动到首行代码开头

删除或选择全部代码

① 删除:

gg(移动到首行代码开头) -> v -> G(全选) ->d

② 全选:

gg -> v -> G ->y

光标移动到所选文本的开头或结尾

o键

矩阵选择

Ctrl + v

例子(同时操作多行):

步骤一:ctrl +v

步骤二:y

步骤三:p

补全角落

v -> 0 或者 ctrl + v -> 0均可

向上选择文本

v -> -(减号) 或者 V -> - 或者 ctrl + v -> -均可

快速选择某个单词

在单词任意角落:

① v -> a -> w

② v -> a -> b(包含' () '括号)

③ v -> a -> B(包含' { } '括号)

④ v -> a -> < 或者 v -> a -> > (包含' <> '括号)
了解更多

快速删除或替换某个单词

光标放在单词开头:① 删除:v -> e -> c ② 替换:v -> e -> c -> 替换成的字符

③ 视图模式其它用法

代码缩进

缩进一行(不进入视图模式):i -> Tab

缩进很多行(视图模式):shift -> >

取消缩进(视图模式):shift -> <

大小写转换

shift + ~ (普通模式下也有效):大写变小写 小写变大写

选择文本后 -> 按U:全转换成大写

选择文本后 -> 按u:全转换成小写

6. 查找和替换

① Windows中记事本

编辑 -> 查找(替换)

输入查找内容(替换内容)

② Linux中vim

查找

查找模式: / + 要查询的内容(+ 回车)
继续向下查询:n

例如:

① 输入完查询内容:

② 回车(下方白块消失,上方绿色方块不停闪烁):

③ 按n:绿色方块移动到下一个int位置,然后不停闪烁

替换

命令模式

① 替换单个

冒号s/替换的内容/替换成什么(+ 回车)

例如:

② 替换整行

冒号s/替换的内容/替换成什么/g(+ 回车)

③ 替换整个文件的(替换全局文档)

冒号%s/替换的内容/替换成什么(+ 回车)

④ 替换指定行(全局替换)

冒号 替换起始行,替换到哪一行s/替换的内容/替换成什么/g(+ 回车)

例如(将9-20行的int替换为long):

临时显示行号

冒号set number

跳跃到指定行

行号 + gg

例如跳跃到50行:直接50gg就行,不用输入冒号

⑤ 全局替换带提示(②的升级):

冒号s/替换的内容/替换成什么/gc(+ 回车)

c:comment -- 注释、提示

例如(一个一个确认是否用long替换当下的int):

7. vim的基础配置

VIM和编辑器一样,可以配置主题、颜色、输入方式和习惯等内容

① ll查看home目录

发现没有所需的vim文件,只有一个.viminfo

② 创建.vimrc文件

touch .vimrc

③ 配置vim

配置vim:用vim编辑.vimrc文件中的内容

set syntax=on:常亮

set tabstop=4:每个tab之间的空当(开发时的要求,目的:统一进度),现有的Tab字符会显示为4个空格宽度

set softtabstop=4:在插入模式中按下Tab键会插入4个空格

set number:显示行号

set enc=utf-8:文件编码

set showmatch:括号匹配(实际上Ubuntu已经配好了)
注:其他常用配置可以去github搜索

④ 更新当前终端

source .vimrc

⑤ 检测是否配置成功

用vim随便打开一个文件(发现有行号等效果,说明配置成功):

8. 推荐

frank的linux课教程 以上笔记全部来源于此

复制代码
-----------------------------------未完待续...------------------------
---------------------------出现问题欢迎批评指正啊 ---------------------
相关推荐
Soneswy1 小时前
Linux系统篇--重定向与文件操作命令
linux
有毒的教程1 小时前
Linux底层存储路由配
linux·运维·网络
Linux系统运维工程师_郭主任2 小时前
运维人还在被拒offer?现在能考的,只有 RHCE 10.0。
linux
wujiuhsu2 小时前
图片里的简体中文怎么翻译成繁体?商品图、详情页和海报批量转换方法
经验分享·笔记
自养Agent2 小时前
MCP Server Boundary Audit Report
linux·服务器·人工智能·windows·大模型·llm
Coisinier3 小时前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
A心有千千结4 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
书生执笔画浮沉4 小时前
Linux 内核模块为什么不能自己解决兼容性问题?
linux·c·kernel·update·灵感
15Moonlight4 小时前
Linux网络(03):Socket 编程 TCP
linux·网络·tcp/ip
广州灵眸科技有限公司5 小时前
单芯片同时跑 Linux 与 RT-Thread:RV1126B的AMP异构方案完整拆解
linux·运维·服务器