【方向盘】Linux下的编辑器之神---Vim的常用操作与命令(简明教程)

简介: 在地球上,流传着两大编辑器的传说。

Emacs:神的编辑器

Vim:编辑器之神


Vim它的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘流的各种巧妙组合操作却能带来极为大幅的效率提升。


Vim的入门学习曲线陡峭,需要记住很多按键组合和命令,如今被看作是高手、Geek们专用的编辑器(装逼必备神器)。


而本文,只讨论Vim以及常用的一些命令总结(主要是为了自己方便使用而记录)


Vim是Vi最受欢迎的变种之一,除了继承了Vi迅捷的编辑方式, Vim的功能已经比原始的Vi强大得多。这也得益于它可以用Vim脚本无限地扩展。 Vim.org 上已经有数千个脚本了,给Vim增加各种各样的特性和功能。


说明


本文只会记录一些常用的命令,能够满足我们平时大部分时候使用Vim,但是并不让你成为专家水平,毕竟我们还是使用为主,我也并不是专业运维,不需要那么厉害的技能,哈哈~~

Vim的四种模式


vim --version:用来查看vim的版本(当前最通用的为7.x版本。8.x版本为最新版本)

四大模式


   正常模式 (Normal-mode)

   启动vim后默认处理该模式。任意模式下,按下Esc键都会进入此模式


   插入模式 (Insert-mode)

   正常模式下:按i I a A(左侧、行首、右侧、行位),就进入插入(编辑)模式


   命令模式 (Command-mode)

   正常模式下:按下:(英文冒号)键,会进入命令模式。这里就可以输入一系列的命令了,这是最强大的地方。常用的有保存退出:

   :wq!:强制保存和退出

   :w:保存但不退出

   :q!:不保存文件,强制退出


   可视模式 (Visual-mode) 块选择模式

   正常模式下:按下v, V, +v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。(再按一下退出到正常模式(或者按两次Esc))。选中后就可以用“编辑模式”的命令操作了:

   d :删除 y:复制 p:粘贴

常用命令(正常模式下)


gg:跳到文首 G:跳至文尾(nG定位到指定的行)


0/$ 和 Home/End:效果一样 跳到行首/行尾


w:跳到下一个字首(比移动光标快一点)


翻页相关:半页 ctrl-d ctlr-u(d=down u=up) 整页 ctrl-f ctrl-b(f=forword,b=backward)


调整屏幕位置(使用较少):zz 让光标所的行居屏幕中央 zt 让光标所杂的行居屏幕最上一行 t=top zb 让光标所杂的行居屏幕最下一行 b=bottom


撤销和恢复:u 撤销 ctrl+r 恢复上一次操作


删除(剪切):dd 删除一行 dw删除一个单词 删除多行:3dd 下同(复制多行原理一样)


复制:yy复制一行 yw复制一个单词 复制多行同上


粘贴:p 当前光标行下粘贴 P 当前行上粘贴


移动整行:<< >> == 光标所在行向左、向右移动一个tab的距离


重复上一步操作:. 这是小数点键


常用命令(命令模式下)


临时显示行号::set number(永久请改配置文件) 简写:set nu


取消行号显示::set nonumber 简写::set nonu


/word或者?/word:向下向上查找指定单词,并且高亮显示出来


n N:重复查找动作(下一个 和 上一个)


取消高亮::noh


文件另存为并退出当前文件::wq! newFileName


多文件编辑、多窗口编辑


多文件编辑

场景:你需要把一个文件的内容复制到另外一个文件,如何做?

答曰:打开2个shell窗口,然后Command + C ; Command + P(原理其实是借用了OS的剪贴板功能)


这样显然是能达到效果的。但稍微麻烦点嘛。显得也不是那么的高级


如果我只想用命令来呢?比如10yy,然后p可以么?不可以的,因为每个vim都是独立的。


那么我们可以这么做:一次性就打开两个文件,然后就可以自由的复制了(因为还是一个vim嘛)


vim file1 file2 file3…可以同时打开多个文件


    查看打开的文件::files 可以查看当前vim打开的文件们


    文件之间跳转:命令行模式中,:n :N表示上一个、下一个文件


   继续再打开一个文件:命令行模式中 :e newfile


这样我们在同一Vim窗口打开了多个文件,就医随意的使用yy p等命令咯


多窗口编辑


加入你的一个文件很长,然后表头信息你又想一直看到怎么办。这个时候多窗口编辑,就能很好的实现效果了。比如这个文件的前10行放在一个窗口,另外一个窗口放其余的(也达到类似excel冻结窗口表头的功效)


    切割::sp 横向 :vs 竖向 :sp newfile 就会把newfile在新编辑窗口打开。否则还是打开当前文件 【sp:split page】


    快速窗口间切换:ctrl+w(两次) 可以依次切换窗口 若要指定顺序(此处先不做记录了)


文本替换(使用较多) [:[range]s/from/to/[flags]]

flags解释:

无 : 只对指定范围内的第一个匹配项进行替换。

g : 对指定范围内的所有匹配项进行替换。

c : 在替换前请求用户确认。

e : 忽略执行过程中的错误。


替换当前行内容 [:s/from/to/]


[:s/from/to/] : 将当前行中的第一个from,替换成to。如果当前行含有多个from,则只会替换其中的第一个。


[:s/from/to/g]:将当前行中的所有from都替换成to。


[:s/from/to/g]:将当前行中的所有from都替换成to,但是每一次替换之前都会询问请求用户确认此操作。

注意:这里的from和to都可以是任何字符串,其中from还可以是正则表达式。


替换指定行的内容 [:33s/from/to/g]

   :.s/from/to/g : 在当前行进行替换操作


   :33s/from/to/g : 在第33行进行替换操作。


   :$s/from/to/g : 在最后一行进行替换操作。


替换所有行的内容 [:%s/from/to/g]


   :%s/from/to/g : 对所有行的内容进行替换。


一些特殊替换的应用


在行首插入:【:%s/^/your_word/】

在行尾插入:【:%s/$/your_word/】

多行变一行:【:0,$s/\n/ /】

多行变一行,中间加入逗号分隔:【:0,$s/\n/,/】


最后


学习命令没任何技巧,只有一句良言:熟能生巧

相关文章
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
1126 3
|
11月前
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
2159 7
ERPNext 搭建教程:Linux 一键部署与维护
|
10月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
2329 64
|
11月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1061 13
|
10月前
|
Ubuntu 网络协议 Unix
Linux教程(Ubuntu为蓝本)之Linux介绍篇
SuSE嫁到了Novell,SCO继续顶着骂名四处强行“化缘”, Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月,SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。[1-2]
|
10月前
|
Ubuntu Linux 数据安全/隐私保护
Win10安装Linux子系统教程!如何在Win10系统中安装Ubuntu!
登录系统后,输入cd /返回上一级,然后再输入“ls”查看一下系统文件目录,看看对不对!
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
1455 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
关系型数据库 Linux 数据库
Linux系统安装Postgre和Postgis教程
本文详细介绍了PostgreSQL/PostGIS的卸载与安装步骤。卸载部分涵盖Docker、Yum/RPM及源码编译安装的清理方法,包括停止服务、删除容器/包、清理残留文件和环境变量等操作,并强调卸载前需备份数据库数据。安装部分提供在线yum安装和离线源码编译两种方式,前者简单快捷,后者需准备依赖(如gcc、readline-devel等)、创建用户组、初始化数据库及配置访问规则。每步均附带命令示例,确保操作清晰明确。
1753 0
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
1488 32