Linux之文本编辑器Vim

一、什么是vim

vi是一种模式编辑器。vi 是Unix世界里极为普遍的全屏幕文本编辑器,几乎可以说任何一台Unix机器都会提供这套软体,
其他的文本编辑器则不一定会存在,但是目前我们使用比较多的是 vim 编辑器。

vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说,vi是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具。

 

二、vi/vim的使用

基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。

 

1、命令模式

用户刚刚启动vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
比如我们此时按下a或者i或者o等等,并不会输入一个字符,而是会被当作一个命令进行处理。

1. 移动光标
w(e)    移动光标到下一个单词
b    移动到光标上一个单词

数字0  移动到本行开头
$    移动光标到本行结尾

H    移动光标到屏幕首行的行首
M    移动到光标到屏幕的中间一行的行首
L     移动光标到屏幕的尾行的行首

gg     移动光标到文档的首行
G    移动光标到文档尾行

nG 移动光标到指定行的行首(n为行数,例如 25G 移动到第25行)
:行号 快速定位到哪一行

Ctrl + f 翻到下一页 (向前翻页) front
Ctrl + b 翻到上一页(向后翻页) back

Ctrl + u 向前翻半页
Ctrl + d 向后翻半页

`.  移动光标到上一次的修改行


2. 查找
/字符串 在整篇文档中搜索 字符串,向下查找,按字母 n 跳到下一个
?字符串 在整篇文档中搜索 字符串,向上查找,按字母 n 跳到上一个

* 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
# 查找整个文档,匹配光标所在的所有单词,按下n查找上一处,N下一处

gd 找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上

%     找到括号的另一半!!

:noh 取消查找的内容


3. 复制粘贴
yy 光标在哪一行,输入yy就是复制这一行
p 粘贴yy所复制的内容

7yy 就是复制光标所在行的7行
p 粘贴刚才复制的7行

 

4. 删除

dd 删除光标所在行
2dd 删除光标所在的2行数据

dw 删除一个词语

D 删除当前光标到行尾的内容
dG 删除当前行到文档尾部的内容

x  删除光标所在的字符

 

5.撤销

u 撤销上一步的操作
Ctrl+r 反撤销

 

2、输入模式

i: 插入光标前一个字符
I: 插入行首

a: 插入光标后一个字符
A: 插入行未

o: 向下新开一行,插入行首
O: 向上新开一行,插入行首

 

3、底线命令模式

在命令模式下输入冒号(英文的:),就进入了底线命令模式,
在底线命令模式下可以输入单个或多个字符的命令,常用命令有


:w 将文件内容写入

:q 不保存退出
:q! 不保存强制退出

:x 保存退出
:wq! 强制保存退出

:set number 显示行号
:set nu 显示行号

:set nonu  取消行号

:! command 暂时离开vim指令模式,执行command的结果
例如 :!ip 临时看一下ip信息,然后可以回到vim

 

4、vim工作模式

 

5、vim按键

移动光标的方法
h 或 箭头键(←) 光标向左移动一个字符  |  nh:向左移动n个字符
j  或 箭头键(↓) 光标向下移动一个字符    |  nj:向下移动n行
k 或 箭头键(↑) 光标向上移动一个字符    |  nk:向上移动n行
l  或 箭头键(→) 或 空格(space) 光标向右移动一个字符  |  nl:向右移动n个字符
n为数字

向下移动5行      5j
向右移动10字符    10l


w:光标向右移动一个单词 | nw:光标向右移动n个单词 | 光标到单词的第一个字母上
b:光标向左移动一个单词 | nb:光标向左移动n个单词 | 光标到单词的第一个字母上

$:移动光标到行尾 | n$:以光标当前行为第一行,移动到第n行的行尾
0:移动光标到行首
^:移动光标到行首第一个非空字符上去

ctrl + n 是自动补齐

vim 编辑器中TAB变4空格
vim /etc/vimrc #打开 vimrc 文件,将以下三行内容添加到文件中

set ts=4

set expandtab

set autoindent

 

6、vim编辑中,替换文本的某个内容

:s/sb/zbj/ 替换当前行第一个 sb 为 zbj
:s/sb/zbj/g 替换当前行所有 sb 为 zbj

:ns/sb/zbj/g 替换第 n 行的所有 sb 为 zbj

:n,$s/sb/zbj/ 替换第 n 行开始到最后一行中每一行的第一个 sb 为 zbj
:n,$s/sb/zbj/g 替换第 n 行开始到最后一行中每一行所有 sb 为 zbj
 n 为数字,若 n 为 . 表示从当前行开始到最后一行

 

posted @   我用python写Bug  阅读(563)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示