【linux相识相知】VIM编辑器

2023-11-01 12:40

本文主要是介绍【linux相识相知】VIM编辑器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vim是一个类似Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了许多的功能,VIM是自由软件,今天我们就来讲讲VIM的使用方法。

本文是基于centos7上的vim编辑器演示的,默认centos7没有安装vim,可以使用yum -y install vim安装vim。

 

VIM的四种模式及转换

命令模式:控制屏幕的光标移动,进行文本的删除、复制等文字编辑工作,当使用vim打开某个文件的时候,默认模式就                     是命令模式

插入模式:只有在插入模式下,才可以输入文字

末行模式:保存文件或退出vim,同时也可以设置编辑环境和一些编译工作,如列出行号、寻找字符串等。

可视化模式:可以使用鼠标框选文字,比较人性化

  特别要提到的是,在命令模式到插入模式,可以有多种方式:

i:insert,在光标所在处输入
a:append,在光标所在处后方输入
o:在光标所在行处的下方打开一个新行
I:在光标所在行的行首输入
A:在光标所在行的行尾输入
O:在光年所在行的上面打开一个新行

 

 退出文件

 在命令模式下:

ZZ:保存并退出

 在末行模式下:

  q:退出q!:强制退出,不保存此前的编辑操作wq:保存并退出x:保存并退出w:保存,也可以保存到某个文件  w  /PATH/TO/SOMEFILE

举例:我们复制一个文件cp /etc/rc.d/init.d/functions  /tmp/functions.txt,然后操作/tmp/functions.txt这个文件,在第第二行中插入"# hello linux",保存退出。

 

 

光标跳转

在命令模式下操作

字符间跳转

 

h:向左一个字符
l:向右一个字符
k:向上一个字符
j:向下一个字符

当然也可以是键盘的上下左右箭头

可以结合数字加COMMAND,例如按 " 2  h " 光标向左移动2个字符

 

 单词间跳转

w:下一个单词的词首
e:当前或后一个单词的词尾
b:当前或者前一个单词的词首
可以结合数字加COMMAND,例如" 2 w  ":当前单词后的第二个单词的词首

 

行首行尾跳转

^:跳转至行首的第一个非空白字符
0:跳转至行首
$:跳转至行尾

 

 行间跳转

#G:跳转至由#指定的行
1G,gg:第一行
G:最后一行

 

句间跳转和端间跳转(不常用)

):下一句
(:上一句
}:下一段
{:上一段

 

翻屏

Ctrl+f:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
Enter:按行向后翻

 

 vim的编辑命令

 字符编辑

x:删除当前字符
#x:删除光标处起始的#个字符
xp:交换光标处的字符及其后面字符的位置

 

 替换命令(replace)

r:替换光标所在处的字符
r+替换字符

 

 删除命令

d:删除命令,不能单独使用
d$:删除当前字符到所在行的行尾
d^:删除当前字符到所在行的行首(不删除光标所在字符)
dw:删除光标所在的单词位置至下一个单词的词首
de:删除光标所在单词的位置至下一个单词的词尾
db:删除光标所在单词的位置至单词的首部
dd:删除光标所在的行
可以结合数字使用: "3 dd":删除光标所处的行起行及下面的行,共3行
注意:删除的内容被保存在缓存区里面

 

 粘贴命令

p:缓冲区中的内容如果是整行,则粘贴在当前所在行的下方,否则,则粘贴至当前光标所在处的后方
P:缓冲区中的内容如果是整行,则粘贴在当前所在行的上方,否则,则粘贴至当前光标所在处的前锋

 

复制命令

y:复制,不能单独使用
y$:复制光标位置到行尾
y^:复制光标位置至行首,不包含光标所在的字符
ye,yw:复制光标所在单词的位置至词尾
yb:复制光标所在单词的位置至词首
yy:复制一整行

 

 改变命令

 和d的作用是一样的,删除文件,不同之处在于,使用c之后,会直接进入插入模式

c$:删除光标所在位置至行尾并进入插入模式
c^:删除光标所在位置至行首并进入插入模式
ce,cw:删除光标所在单词的位置至单词尾部
cb:删除光标所在单词的位置至单词首部

 

 其他编辑操作

 在命令模式下使用v和V进入可视化模式

v:按字符选定
V:按行选定

 选定之后,可以结合d(删除),c(删除并进入插入模式),y(复制)来操作

 

 vim末行模式

地址定界

n:特定的第n行,列入:5,即第5行
. :当前行
$:最后一行
n1,n2:指定行范围,左侧为起始行,右侧为结束行
n1,+n2:指定行范围,左侧为起始行,右侧为偏移量
%:全文
/pattern/:从光标所在处起始向文件尾部第一次被模式匹配到的行
/pat1/,/pat2/:从光标所在处起始,第一由pat1匹配到的行开始,至第一次由pat2匹配到的所有行

可以结合d,y,c使用,也可以使用w将范围内的文本保存至指定的文件,使用r  /PATH/FROM/SOMEFILE 将指定文件中的文本读取并插入至指定的位置。

 

查找

/PATTERN:从当前光标所在处向文件尾部查找能够被模式匹配的所有字符串
?PATTERN:从当前光标所在处向文件首部查找能够被模式匹配的所有字符串
n:查看下一个  N:查看上一个

 

查找并替换

s:末行模式的命令

格式:s/要查找的内容/替换的内容/修饰符
要查找的内容:可使用正则表达式
替换的内容:不能使用正则表达式,但是可以引用如果"要查找的内容"部分在模式中使用了分组符号,在"替换的内容"中可以使用后向引用直接引用查找模式匹配到的全部文本,要是用&符号修饰符:
i:忽略大小写
g:全局替换,意味着一行中如果匹配到多次,则均替换

有的时候我们需要匹配"\",我们就可以把分隔符替换为其他的字符,比如s@@@或者s###。

 

vim的多文件功能

vim可以同时打开多个文件

vim  FILE1  FILE2..

在文件间切换:

:next  下一个文件
:prev  上一个文件
:first  第一个文件
:last   最后一个文件

退出所有文件:

:wqall  保存退出所有文件
:wall 保存所有文件
:qall 退出所有文件

 

多窗口查看

在使用vim打开多个文件时使用选项:

-o:水平分隔窗口
-O:垂直分隔窗口

使用ctrl+w切换窗口

 

定制vim的工作特性

在末行模式下的设定,仅对当前vim有效,永久修改必须修改配置文件:

全局:/etc/vimrc
用户个人:~/.vimrv  没有可以创建

在末行模式下的操作:

1、行号显示:set number, 简写为set nu取消显示:set nomber, set nonu
2、括号匹配高亮匹配:set showmatch, set sm取消:set nosm
3、自动缩进启用:set ai禁用:set noai
4、高亮搜索启用:set  hlsearch禁用:set nohlsearch
5、语法高亮启用:syntax on禁用:syntax off 
6、忽略字符大小写启用:set ic禁用:set noic

 

举例:在vim中,tab键为8个空格的位置且8个空格是一个整体,如果是左右键移动会看到只能移动一次就是8个空格,那么如何将其修改为4个空格呢?

可以在/etc/vimrc加入以下2行:

set ts=4     #设置宽度为4个空格
set expandtab  #将tab转换为了space

在末行模式下可以获取VIM的帮助

:help  
:help subject

如果大家想练习vim的操作,输入vimtutor即可获取VIM教程

[root@localhost ~]# vimtutor

 

转载于:https://www.cnblogs.com/liubinsh/p/7225171.html

这篇关于【linux相识相知】VIM编辑器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

防止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的进化优

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

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

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

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

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