IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【Linux】vim常用命令 -> 正文阅读

[开发工具]【Linux】vim常用命令

【Linux】vim常用操作命令


前言

vim共包含三种基本模式,分别是一般命令模式、编辑模式与命令行模式

  • 一般命令模式
    使用vi打开一个文件即可进入一般模式,一般模式中可以使用【上下左右】按键移动光标,可用使用【删除字符/整行】或【复制、粘贴】处理文件内容。

  • 编辑模式
    一般模式下可以进行删除、复制、粘贴操作但无法编辑文件内容。在一般模式下使用【i、I、o、O、a、A、r、R】可以进入编辑模式,在编辑模式下使用【ESC】可以返回一般模式。进入编辑模式后,左下方会出现【INSERT或REPLACE】字样。

  • 命令行模式
    一般模式下使用【: / ?】三者种任意一个按键可以进入命令行模式,命令行模式可以提供【查找数据】操作,并且可以实现读取、保存、批量转换字符、退出vi、显示行号等操作。使用【ESC】可以从命令行模式退回一般模式。

一、一般命令模式

进入一般命令模式

vi filename #进入一般命令模式

1.1 光标移动

操作描述
h或左箭头光标向左移动一个字符
j或下箭头光标向下移动一个字符
k或上箭头光标向上移动一个字符
l或右箭头光标向右移动一个字符

进行多次移动,可以使用n+光标移动操作
例如:向上移动30行===>30k

操作描述
n +【SPACE】光标向右移动n个字符
n +【ENTER】光标向下移动n行
0光标移动到该行最前面字符
$光标移动到该行最后面字符
G光标移动到文件最后一行
nG光标移动到文件第n行
gg光标移动到文件第一行,相当于1G
H光标移动到屏幕最上方第一个字符
M光标移动到屏幕中央行第一个字符
L光标移动到屏幕最下方第一个字符
【ctrl】 +【f】向下移动一页
【ctrl】 + 【b】向上移动一页
【ctrl】 + 【d】向下移动半页
【ctrl】 + 【u】向上移动半页
【+】光标移动到非空格符下一行
【-】光标移动到非空格符上一行

1.2 查找与替换字符串

操作描述
/word从当前光标处往下查找字符串word
?word从当前光标处往上查找字符串word
n重复前一个查找操作,若上一个操作为/word 则继续向下查找word;,若上一个操作为?word 则继续向上查找word
N反向重复前一个查找操作,若上一个操作为/word 则向上查找word;,若上一个操作为?word 则向下查找word

可以使用/word配合n或N实现关键词查找
例如:
在n1到n2行之间寻找word1,并将word1替换为word2

:n1,n2s/word1/word2/g

在1到最后一行之间寻找word1,并将word1替换为word2

:1,$s/word1/word2/g

在1到最后一行之间寻找word1,并将word1替换为word2,替换前提示用户进行确认(confirm)

:1,$s/word1/word2/gc

1.3 复制、删除、粘贴

  • 复制操作
复制描述
yy复制光标所在行
nyy复制光标所在的向下n行
y1G复制光标所在行到第一行的所有数据
yG复制光标所在行到最后一行的所有数据
y0复制光标所在字符到该行行首的所有字符
y$复制光标所在字符到该行行尾的所有字符
  • 删除操作
删除描述
x向后删除一个字符
X向前删除一个字符
nx向后连续删除n个字符
dd删除光标所在行
ndd删除光标所在向下n行
d1G删除光标所在行到第一行所有数据
dG删除光标所在行到最后一行所有数据
d0删除光标所在处到该行行首的所有字符
d$删除光标所在处到该行行尾的所有字符
  • 粘贴操作
粘贴描述
p将已复制数据粘贴在光标下一行
P将已复制数据粘贴在光标上一行

1.4 其它小技巧

操作描述
J将光标所在行数据与下一行数据结合成同一行
c重复删除多个数据,例如向下删除10行====>【10cj】
u恢复前一个操作
【crtl】+ r重复上一个操作
【.】重复前一个操作

二、编辑模式

从一般模式进入到编辑模式:

  • 插入模式

页面左下角显示【INSERT】

操作描述
i光标所在处插入
I光标所在行第一个非空格符号处插入
a光标所在行下一行第一个字符处插入
A光标所在行最后一个字符处插入
o光标所在行下一行处插入新的一行
O光标所在行上一行处插入新的一行
  • 替换模式

页面左下角显示【REPLACE】

操作描述
r替换光标所在处字符一次
R一直替换光标所在处字符直到按下【ESC】结束替换模式

按下【ESC]从编辑模式退回一般模式

三、命令行模式

保存、退出、另存为:

操作描述
:w将编辑的数据写入硬盘文件种
:w!若未见类型为只读时,强制写入该文件
:q退出vi
:q!若修改过文件但不想进行保存,强制退出并不保存
:wq保存并退出
:wq!强制保存并退出
ZZ若文件未被修改则不保存退出;若文件被修改,则保存后退出
:w filename将编辑的数据另存为filename文件
:r filename将filename文件内容加到当前光标所在行后
:n1,n2 w filename将n1到n2的内容保存到filename文件中
:! command暂时退出vi到命令行模式下执行command的显示结果
:set nu显示行号
:set nonu取消显示行号

当系统因为某些原因宕机时,vim可以利用缓存来恢复之前未保存的数据,vim会在被编辑文件所在目录下简历一个.filename.swp的文件。当缓存文件存在,vim会自动判断这个文件可能存在问题,打开文件时会出现警告信息。需要用户自行决定是否删除swp文件来避免警告信息。
警告信息按键:
.filename.swp already exists!下面说明你可进行的操作

  • 【O】pen Read-Only:以只读方式打开文件,只想查看文件内容,并不编辑文件
  • 【E】dit anyway:以正常方式打开要编辑的文件,不加载缓存文件内容
  • 【R】ecover:加载缓存文件的内容并进入编辑,退出后还是要自行手动删除缓存文件
  • 【D】elete it:若确定缓存无用,删除swp文件进入编辑
  • 【Q】uit:退出vim
  • 【A】bort:忽略这个编辑操作,退回命令提示符

四、其它功能操作

4.1 多文件编辑

vim编辑多个文件:

vim file1 file2 file3 ... filen
操作描述
:n编辑下一个文件
:N编辑上一个文件
:files列出这个vim开启的所有文件

4.2 多窗口编辑

1. 同时编辑多个文件但是只打开第一个文件

vim file1 file2 ...

2.竖直分屏

vim -On file1 file2 ... filen

3. 水平分屏

vim -on file1 file2 ... filen
操作描述
:sp 【filename】上下分割并打开一个新的文件
:vsp 【filename】左右分割并打开一个新的文件
[ctrl] + w + s上下分割当前打开的文件
[ctrl] + w + v左右分割当前打开的文件
[ctrl] + w + j 或 [ctrl] + w + 【下】光标移到下方窗口
[ctrl] + w + k 或 [ctrl] + w + 【上】光标移到上方窗口
[ctrl] + w + h 或 [ctrl] + w + 【左】光标移到左方窗口
[ctrl] + w + l 或 [ctrl] + w + 【右】光标移到右方窗口
[ctrl] + w + q关闭当前窗口,若无剩余窗口则退出vim
[ctrl] + w + c关闭当前窗口
:qall退出所有窗口
:wqall保存所有窗口并退出
:wall保存所有窗口但不退出

ctrl + w:先按住ctrl不放再按下w放开,再按下后续命令


总结

本文对vim在三种模式下的常用命令做出整理,并且介绍了vim多文件编辑以及多窗口功能操作

参考资料

1.《鸟哥的Linux私房菜》
2. https://www.cnblogs.com/lovychen/p/6519847.html

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:44:21  更:2022-07-17 16:45:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 13:25:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码