首页 > 系统相关 >linux运维一天一个shell命令之vim详解

linux运维一天一个shell命令之vim详解

时间:2024-08-05 19:53:15浏览次数:17  
标签:shell 运维 可视 模式 vim 插入 文本 Vim

前言:

在日常运维工作中,掌握好 Vim 的使用可以极大地提高工作的效率。Vim 作为一个强大的文本编辑器,广泛应用于各种运维场景

一、定义

Vim 是一个非常强大的文本编辑器,在 Unix/Linux 环境中非常流行。它具有许多高级功能和快捷键,适合编写代码、编辑配置文件等。

1、特点:

  • 高级文本编辑:支持模式编辑(命令模式、插入模式、可视模式等),功能强大。
  • 可扩展性:通过插件进行功能扩展,常用插件管理器如 vim-plug。
  • 效率高:熟练使用后,编辑效率极高,适合大量文本处理和编程。
  • 跨平台使用:不仅在 Linux 上使用广泛,其他系统也有安装包。

2、安装:

ubuntu:
apt-get install vim

ceontos:
yum install vim*

3、启动和退出 Vim

3.1、启动 Vim 并打开文件:

vim filename

3.2、退出 Vim:

在普通模式下,输入 :q 退出。如果有未保存的更改,Vim 会提示你。
输入 :q! 强制退出且不保存更改。
输入 :wq 或 :x 保存更改并退出。

二、vim的使用

1、Vim 的几种主要模式:

  • 普通模式(Normal Mode):这是 Vim 启动后的默认模式。在这个模式下,你可以进行导航和操作文本。
  • 插入模式(Insert Mode):在这个模式下,你可以像普通编辑器一样输入文本。
  • 命令模式(Command Mode):在这个模式下,你可以输入命令,如保存文件、退出 Vim、搜索等
  • 可视模式(Visual Mode):在这个模式下,允许你选择文本块并对其执行操作

2、普通模式(Normal Mode)

2.1、进入普通模式:

启动vim 后默认进入普通模式
vim /filename

2.2、普通模式下的操作

  • 导航
h:左移一个字符
j:下移一行
k:上移一行
l:右移一个字符
w:移动到下一个单词开头
b:移动到前一个单词开头
0:移动到行首
$:移动到行尾
gg:移动到文件开头
G:移动到文件结尾
  • 编辑
i:进入插入模式,在光标前插入文本
a:进入插入模式,在光标后插入文本
o:在当前行下方插入新行并进入插入模式
O:在当前行上方插入新行并进入插入模式
x:删除光标所在字符
dd:删除当前行
yy:复制当前行
p:粘贴复制或剪切的内容
  • 撤销和重做
u:撤销
Ctrl + r:恢复撤销的操作
  • 搜索
/pattern:向下搜索 pattern
?pattern:向上搜索 pattern
n:跳转到下一个匹配项
N:跳转到上一个匹配项

3、插入模式

3.1、进入插入模式

在普通模式下按 i、a、o 或 O 进入插入模式。

i:在光标前插入。
I:在行首插入。
a:在光标后插入。
A:在行尾插入。
o:在当前行的下方插入新行并进入插入模式。
O:在当前行的上方插入新行并进入插入模式。

3.2、退出插入模式

要退出插入模式并返回普通模式,可以按 Esc 键

4、可视模式

4.1、分类

  • 字符可视模式(Character-wise Visual Mode) 字符可视模式允许你逐字符选择文本。
  • 行可视模式(Line-wise Visual Mode) 行可视模式允许你逐行选择文本。
  • 块可视模式(Block-wise Visual Mode) 块可视模式允许你选择矩形文本块

4.2、进入可视模式

在普通模式下,进入可视模式的方法如下:

- v:进入字符可视模式(Character-wise Visual Mode)
- V:进入行可视模式(Line-wise Visual Mode)
- Ctrl + v:进入块可视模式(Block-wise Visual Mode)

4.3、字符可视模式下的操作

4.3.1、选择文本:

使用导航键(如 h、j、k、l)选择文本。

4.3.2、编辑文本
d:删除选中的文本
y:复制选中的文本
c:修改选中的文本(删除并进入插入模式)
>:增加缩进
<:减少缩进
~:切换选中字符的大小写
U:将选中字符转换为大写
u:将选中字符转换为小写

4.4、行可视模式

4.4.1、选择行:

使用导航键(如 j、k)选择行。

4.4.2、编辑行
d:删除选中的行
y:复制选中的行
c:修改选中的行(删除并进入插入模式)
>:增加缩进
<:减少缩进

4.5、块可视模式

4.5.1、选择块

使用导航键(如 h、j、k、l)选择块

4.5.2、编辑块
d:删除选中的块
y:复制选中的块
c:修改选中的块(删除并进入插入模式)
I:在选中块的每一行前插入文本
A:在选中块的每一行后插入文本

4.6、退出可视模式

按 Esc 键。退出可视模式并返回普通模式

5、命令行模式

用于执行各种命令,例如保存文件、退出 Vim、搜索和替换文本等

5.1、进入命令行模式

: :执行命令
/:向前搜索
?:向后搜索
!:执行外部命令

5.2、命令操作

5.2.1、文件操作
:w:保存文件
:w filename:另存为指定文件
:q:退出 Vim
:q!:强制退出(不保存更改)
:wq:保存并退出
:x 或 ZZ:保存并退出
5.2.2、编辑操作
:e filename:编辑指定文件
:bn 或 :bnext:切换到下一个缓冲区
:bp 或 :bprev:切换到上一个缓冲区
:bd 或 :bdelete:删除当前缓冲区
5.2.3、搜索和替换
/pattern:向前搜索匹配 pattern 的文本
?pattern:向后搜索匹配 pattern 的文本
n:跳到下一个匹配项
N:跳到上一个匹配项
:s/old/new:将当前行的第一个 old 替换为 new
:s/old/new/g:将当前行的所有 old 替换为 new
:%s/old/new/g:将整个文件中的所有 old 替换为 new
:%s/old/new/gc:将整个文件中的所有 old 替换为 new,并确认每一次替换
5.2.4、设置选项
:set option:启用指定选项
:set nooption:禁用指定选项
:set number 或 :set nu:显示行号
:set nonumber 或 :set nonu:隐藏行号
:set tabstop=4:设置 Tab 宽度为 4 个空格
:set shiftwidth=4:设置自动缩进宽度为 4 个空格
:set expandtab:使用空格代替 Tab
:set noexpandtab:使用 Tab 而不是空格
5.2.5、命令行模式下的快捷键
<Up> / <Down>:浏览命令历史
<Left> / <Right>:在命令行中左右移动光标
<Ctrl + b>:移动到命令行的开头
<Ctrl + e>:移动到命令行的结尾
<Ctrl + w>:删除光标前的一个单词
<Ctrl + u>:删除光标前的所有文本

三、高频操作示例:

1、示例文档为默认nginx 配置文件,进入普通模式

root@xxx:~# /etc/nginx/nginx.conf

2、显示行号

:set nu

在这里插入图片描述

2、文本替换

:%s/SSL/ssl/g             ##全部替换
:%s/SSL/ssl              ##将当前行的第一个 old 替换为 new

3、文本查找

/SSL         ##查找SSL字符串

##搜索操作
n键:跳到下一个匹配项
N键:跳到上一个匹配项

4、批量删除行

光标放在需要删除的行

4dd    ##删除光标所在行开始的4行

5、编辑撤销

u键

6、恢复撤销的操作

Ctrl + r  组合键

7、批量注释

7.1 使用块可视模式批量注释

  • 进入块可视模式:按 Ctrl + v。
  • 选择要注释的列:使用 h、j、k、l 键。
  • 插入注释符号:按 Shift + i,或者大写I,输入注释符号(例如 #),然后按 Esc 键。这将在所选列的每一行前插入注释符号。

7.2 其他可视模式操作下的替换命令

  • 进入字符可视模式:按 v或者V
  • 选择要注释的文本,
  • 批量注释:按 :,然后输入 s/^/#/ 回车

8.批量复制粘贴

普通模式下

光标放在复制行首行
依次按4yy键    ##复制光标所在行的4行

然后光标放在需要插入行:
按p键即可粘贴 

四、vim终端命令

1、-h 或 --help:显示帮助信息并退出。

vim -h
vim --help

2、-v:以 Vi 模式启动 Vim。

vim -v

3 、-o [number]:打开多个文件,并按水平分割窗口显示。如果指定了 number,则分割为指定数量的窗口。

vim -o file1 file2 file3
vim -o3 file1 file2 file3

4、-O [number]:打开多个文件,并按垂直分割窗口显示。如果指定了 number,则分割为指定数量的窗口。

vim -O file1 file2 file3
vim -O3 file1 file2 file3

5、-c {command}:启动 Vim 后执行指定的命令。

vim -c 'echo "Hello, Vim!"'

6、+ 或 +{command}:启动 Vim 后移至文件末尾或执行指定的命令。

vim + file.txt
vim +5 file.txt  # 移动到文件的第 5 行

7、-s {script}:启动 Vim 后执行指定的脚本文件。

vim -s script.vim

8、-d:启动 Vim 的差异模式(diff),用于比较文件的差异。

vim -d file1 file2

9、-p [number]:打开多个文件,并在标签页中显示。如果指定了 number,则打开指定数量的标签页。

vim -p file1 file2 file3
vim -p3 file1 file2 file3

标签:shell,运维,可视,模式,vim,插入,文本,Vim
From: https://blog.csdn.net/weixin_46546303/article/details/140932896

相关文章

  • tmux和vim精简教程(非常详细实用!)
    tmuxtmux(TerminalMultiplexer)是一个终端复用器,它允许你在一个单一终端窗口内运行和管理多个终端会话。通过tmux,我们可以创建、访问和控制多个终端窗口,并在这些窗口之间自由切换。这对于远程工作、管理多个任务和长期运行的任务非常有用。1、安装tmux在Ubuntu上安装tmux:......
  • shell复习(3)-循环
    流程控制1.if语句单分支if条件表达式then命令序列fi#!/bin/bashN=10if[$N-gt5];thenechoyesfi#bashtest.shyes双分支if条件表达式then命令序列1else命令序列2fi#!/bin/bashN=10if[$N-lt5];thenechoyeselseecho......
  • vim 常用
     模式:    正常模式    插入模式:i    可视模式:v    命令模式:':'进入命令模式; \or?进入搜索 1.光标移动:    单个字符:    H(left)J(donw)K(up)L(right)    行首行尾:        <S-^......
  • vim常用命令
    命令模式命令效果$移动光标到行尾^移动光标到行首第一个非空白字符0移动光标到行首yy复制一行内容(命令前加数字表示从当前行开始复制几行)p粘贴内容(命令前加数字表示在当前行的下一行粘贴几次)dd删除一行内容(命令前加数字表示从当前行开始删除......
  • Shell编程 --基础语法(2)
    文章目录Shell基础语法运算符算术运算符关系运算符bool运算符逻辑运算符字符串运算符文件测试运算符read命令printf命令总结ShellShell编程Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;......
  • shell的变量——变量的运算
    1、写一个shell脚本,计算1+2+……+n共n个值的和,n值由用户输入#原理[root@se7enshell]#a=10[root@se7enshell]#seq-s'+'1$a1+2+3+4+5+6+7+8+9+10[root@se7enshell]#seq-s'+'1$a|bc55#配置文件[root@se7enshell]#vimnum.sh[root@se7enshell]#catn......
  • Linux--shell脚本语言—/—<2>
    一、shell基本语法1、shell字符串        字符串(String)就是一系列字符的组合。字符串是Shell编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)字符串可以由单引号''包围,也可以由双引号""包围,也可以不用引号。它们之间是有区别的。 1) 字符串举......
  • Linux--shell脚本语言—/—<1>
    一、shell简介        Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支        Shel......
  • Shell编程 --基础语法(1)
    文章目录Shell编程基础语法变量定义变量使用变量命令的使用只读变量删除变量传递参数字符串获取字符串长度字符串截取数组定义方式关联数组获取数组的长度总结Shell编程Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和......
  • Shell文本处理秘籍:掌握这11种工具,让数据处理如虎添翼!
    引言在Linux信息环境,文本数据处理是一项基础而重要的技能。对于广大Linux用户而言,掌握Shell环境下的文本处理工具不仅能提高工作效率,还能在面对复杂数据时游刃有余。本文将介绍,那些在文本处理中不可或缺的11种命令工具,让数据处理技能更上一层楼。目录find:find命令无......