Linux之Vim常用命令

2024-06-22 17:32
文章标签 linux vim 常用命令

本文主要是介绍Linux之Vim常用命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1 普通模式
    • 1.1 进入命令模式命令
    • 1.2 移动光标
    • 1.3 复制
    • 1.4 剪切
    • 1.5 删除
    • 1.6 粘贴
    • 1.7 替换和撤销
    • 1.8 查找并替换
  • 2 命令模式
    • 2.1 退出编辑器
    • 2.2 调整文本
    • 2.3 查找字符串
  • 3 vim的3种模式的关系图
  • 4 vim时其他命令
    • 4.1 显示隐藏行号
    • 4.2 底行模式下命令

1 普通模式

以下命令请在普通模式执行

1.1 进入命令模式命令

  • vi filename : 打开或新建文件,并将光标置于第一行首
  • vi +n filename :打开文件,并将光标置于第n行
  • vi + filename :打开文件,并将光标置于最后一行首
  • vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
  • vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
  • vi filename....filename :打开多个文件,依次编辑

1.2 移动光标

  • j:向下
  • 20j: 向下移动 20 行
  • k:向上
  • h:向左
  • l:向右
  • 0:数字0,到行首
  • ^:到行首第一个字符,如果前面有空格的话
  • $:到行尾
  • n$:光标移至第n行尾
  • gg:快速到文件头
  • G:快速到文件尾
  • 50G:跳转到第 50 行
  • n+:光标下移n行
  • n-:光标上移n行
  • w:光标跳到下个字的开头
  • e:光标跳到下个字的字尾
  • b:光标回到上个字的开头
  • #l:光标移到该行的第#个位置,如:5l,56l。
  • ctrl+ b:屏幕往移动一页。
  • ctrl + f:屏幕往移动一页。
  • ctrl + u:屏幕往移动半页。
  • ctrl + d:屏幕往"前"移动半页。
  • ctrl + g列出光标所在行的行号
  • space:光标右移一个字符
  • Backspace:光标左移一个字符
  • ):光标移至句尾
  • ( :光标移至句首
  • }:光标移至段落开头
  • {:光标移至段落结尾
  • H :光标移至屏幕顶行
  • M :光标移至屏幕中间行
  • L :光标移至屏幕最后行

注意:请不要在插入模式进行光标移动,效率很低下

1.3 复制

  • yy:复制一行
  • #yy:例如,6yy表示拷贝从光标所在的该行往下数6行文字
  • 8yy:向下复制8行
  • yw:复制光标开始的一个单词
  • #yw:复制#个字到缓冲区
  • y$:复制光标到行尾
  • yfA:复制光标到第一个大写A中间的内容
  • y2fA:复制光标到第二个大写A中间的内容
  • n,my:指定n到m行复制

1.4 剪切

  • x:向后剪切一个一个字符,如果是在行尾,则为向前剪切
  • 4x:剪切4个
  • xp:非行尾交换两个字符,如从bs变成sb

1.5 删除

  • dd:删除一行
  • 100dd:删除100行
  • dw:删除一个单词
  • df":删除到出现的第一个双引号
  • d^:删除至行首
  • #dd:从光标所在行开始删除#行
  • x:每按一次,删除光标所在位置的后面一个字符。
  • #x:例如,6x表示删除光标所在位置的后面6个字符。
  • X:大写的X,每按一次,删除光标所在位置的前面一个字符。
  • #X:例如,20X表示删除光标所在位置的前面20个字符。
  • Ctrl+u:删除输入方式下所输入的文本

注意:删除的内容会放到剪贴板,按p即可粘贴到其他地方。

1.6 粘贴

  • p(小写):粘贴复制或剪切的内容,将缓冲区内的字符贴到光标所在位置。
    在光标下一行粘贴
    注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能
  • 5p:将复制或剪切的内容粘贴5次
  • P(大写):在光标上一行粘贴(插入)

1.7 替换和撤销

  • r+<待替换字母>:将游标所在字母替换为指定字母
  • R:连续替换,直到按下Esc
  • cc:替换整行,即删除游标所在行,并进入插入模式
  • cw:替换一个单词,即删除一个单词,并进入插入模式
  • c#w:例如,c3w表示更改3个字
  • u{n}:撤销一次或n次操作
  • U(大写):撤销当前行的所有修改
  • Ctrl+r:redo,即撤销undo的操作

1.8 查找并替换

替换光标所在行第一个匹配的字符串:

# 语法
:s/旧字符串/新字符串
# 实例
:s/one/two

替换光标所在行所有旧字符串为新字符串:

# 语法
:s/旧字符串/新字符串/g

替换第几行到第几行中所有字符串:

# 语法
:n,m s/旧字符串/新字符串/g# 实例
:2,4 s/one/two/g

最常用的就是全文替换了:

# 语法
:%s/旧字符串/新字符串/g

2 命令模式

以下命令请在命令模式下执行
在普通模式下,输入:即可进入。

2.1 退出编辑器

  • wq:保存当前文件并退出或者x
  • wqa:保存所有文件并退出
  • q!: 不保存,强制退出
  • qa!: 有多个文件被打开,同时退出

2.2 调整文本

  • %s/$/sth/ :在行尾追加sth
  • %s/^M//g :替换掉dos换行符,\^M使用ctrl+v + Enter即可输入
  • :g/^\s$/d* :删除空行以及只有空格的行
  • %s/#.*//g :删除#之后的字符,没错,这里使用的是正则。
  • ce:使本行文本内容居中
  • ri:使本行文本内容靠右
  • le:使本行文本内容靠左

2.3 查找字符串

  • / 关键字:从光标开始处向文件尾搜索,先按/键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按n会往后寻找到要的关键字为止。
  • ? 关键字:从光标开始处向文件首搜索,先按?键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按n会往前寻找到要的关键字为止

在普通模式下,按下/直接进入查找,输入相应的字符串按确定即可

  • n:查找下一个匹配
  • N:查找上一个匹配
  • 2n:查找下面第二个匹配

3 vim的3种模式的关系图

在这里插入图片描述

  • 命令行模式command mode) :
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

  • 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按ESC键可回到命令行模式
    i, I 进入输入模式 Insert modei从目前光标所在处输入I在目前所在行的第一个非空格符处开始输入
    a, A 进入输入模式 Insert modea从目前光标所在的下一个字符处开始输入A 从光标所在行的最后一个字符处开始输入
    o, O 进入输入模式 Insert modeo在目前光标所在的下一行处输入新的一行O在目前光标所在处的上一行输入新的一行

  • 底行模式(last line mode)
    将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等

4 vim时其他命令

4.1 显示隐藏行号

:set number 或者 :set nu 显示行号
:set nonumber 或者 :set nonu 隐藏行号
##号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行

4.2 底行模式下命令

选项设置

  • :set all:列出所有选项设置情况
  • :set term:设置终端类型
  • :set ignorance:在搜索中忽略大小写
  • :set list:显示制表位(Ctrl+I)和行尾标志($)
  • :set number:显示行号
  • :set report:显示由面向行的命令修改过的数目
  • :set terse:显示简短的警告信息
  • :set warn:在转到别的文件时若没保存当前文件则显示NO write信息
  • :set nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
  • :set nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
  • :set mesg:允许vi显示其他用户用write写到自己终端上的信息

这篇关于Linux之Vim常用命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084950

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详