文本编辑秘籍之vim宝典

一、初识Vim

Vim是从 vi 发展出来的一个文本编辑器。其功能非常强大,熟练掌握vim的常用操作和快捷操作能让我们从繁杂的文本处理任务中杀出血路,在运维的道路上愉快前行。

vim使用简单命令组合来完成复杂操作,同时也支持基本正则表达式。

二、拨开vim迷雾:

2.1 使用vim打开一个文件:

如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑后第一次存盘时创建它

       vim 的用法:vim  [OPTION]…  FILE…

       vim后直接跟文件,可以打开、编辑文件。默认情况下,第一次打开文件。光标会定位在行首;若曾打开编辑过文件,再次打开文件光标会停留在上次退出时的位置。这时,如果我们在对一个大文件进行操作,我们想打开文件后就定位在某行或者定位在包含了某个字符的行或者直接处于行尾。只需要在打开文件时加上定位参数就行了:

            + m: 打开文件后,直接让光标处于第m行的行首

+ /Pattern:打开文件后,直接让光标处于第一个被Pattern匹配到的行的行首.。Pattern支持正则表达式。

vim  +  file: 直接打开file,光标在最后一行

例1.1:打开文件并将光标定位于第11行

[root@localhost /tmp]#vim +11 fs1

例1.2:打开文件并定位在以UUID开头的行

vim定位.gif

注:在以模式定位光标时,代开过程中会出现提示,直接摁“Enter”键就ok了。

2.2 vim模式详解:

在不同的模式中,可以通过不同的方式来实现对文本的操作。vim模式被分为三类:

              编辑模式(也叫命令模式):通过键盘快捷方式操作

输入模式:在文本中输入内容

末行模式:vim内置的命令行接口,执行vim的内置命令。比如:查找、替换、执行shell命令等。

不同模式之间进行切换:

blob.png

    

           编辑模式 –> 插入模式

i: insert, 在光标所在处输入

I:在当前光标所在行的行首输入

a: append, 在光标所在处后面输入

A:在当前光标所在行的行尾输入

o: 在当前光标所在行的下方打开一个新行

O:在当前光标所在行的上方打开一个新行

插入模式 —-> 编辑模式:ESC

编辑模式 —-> 末行模式::

末行模式 —-> 编辑模式:ESC 

附:多数人的行为习惯受windows的影响,在保存文本时习惯ctrl+s,殊不知在vim中ctrl+s会锁定屏幕,那么要如何解锁呢,使用ctrl +q即可。

三、末行模式可用操作

(1)退出vim编辑:

先退出当前模式至末行模式。使用下面的命令即可退出。

              q  退出

q!  强制退出,放弃做出的修改。

wq 保存退出

x   保存退出,等同于wq。

(2)读取文件内容或另存文件内容

r  filename  读取指定文件的内容,并将内容插入到光标所在行的下一行

           w filename  将当前文件内容写入另一个文件

例:读取/etc/issue文件中的内容至第4行后,将新增后的内容保存至/tmp/test.txt

vim之r&w.gif

(3)执行shell命令

       vim支持不退出文件编辑执行shell命令,方便在编辑文件的同时进行其他操作。

       !command:执行命令

 r!command:将命令的执行结果追加保存至光标所在行后

例:将ls /tmp的执行结果插入18行后

vim之末行执行命令.gif

四、 编辑模式可用操作

字符间跳转:

h: 左 l: 右 j: 下 k: 上

#COMMAND:跳转由#指定的个数的字符;

单词间跳转:

w:下一个单词的词首

e:当前或下一单词的词尾

b:当前或前一个单词的词首

#COMMAND:由#指定一次跳转的单词数

当前页跳转:

H :页首 ,即跳转至当前页第一行

M:页中间行

L :页底

行首行尾跳转:

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

0: 跳转至行首

$: 跳转至行尾

    行间移动:

#G :跳转至由#指定行

G :跳转至最后一行

1G, gg: 跳转至第一行

      句间移动:

(:跳转至上一句

):跳转至下一句

      段落间移动:

{:跳转至上一段

} : 跳转至下一段

       翻屏操作

       Ctrl+f: 向文件尾部翻一屏

       Ctrl+b: 向文件首部翻一屏

       Ctrl+d: 向文件尾部翻半屏

       Ctrl+u:向文件首部翻半屏

字符编辑:

x: 删除光标处的字符;

#x: 删除光标处起始的#个字符

xp: 交换光标所在处的字符及其后面字符的位置

~:转换大小写

替换命令(r, replace)

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

R:切换成REPLACE模式

删除命令:

d: 删除命令,可结合光标跳转字符,实现范围删除;

d$: 删除到行尾

d0:删除到行首

      dd: 删除光标所在的行

#dd:多行删除

复制命令(y, yank):

      yy:复制行

#yy: 复制多行

粘贴命令

p: 将复制或删除的内容复制至指定行的下方

P:将复制或删除的内容复制至指定行的上方

      改变命令:c

              cc:删除当前行并输入新内容

#cc:

             C:删除当前光标到行尾,并切换成插入模式

例:将fs1文件中的/dev替换为test

vim之replace.gif

六、撤销操作:

       对文件内容更改之后,想要撤销更改操作

  u:撤销最近的更改

             #u:撤销之前多次更改

             按Ctrl – r重做最后的“撤消”更改

七、可视化模式:

       允许选择的文本块

v 面向字符

V 面向行

ctrl-v 面向块

        可视化键可用于与移动键结合使用:w, ) , } ,箭头等

        突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等。

例:将fs1文件中的20-26行第三列之后的内容注释掉

vim之注释.gif

操作步骤:

    1、摁ctrl + v 选中行

    2、摁shift + i切换至插入模式

    3、摁shift + 3输入想要插入的#号

    4、摁esc

八、多窗口模式

当需要参考一个文件对另一个文件进行修改时,可以使用此模式。

vim -o|-O FILE1 FILE2 …

-o: 水平分割

-O: 垂直分割

在窗口间切换: Ctrl+w, 方向键

九、vim的配置文件

       配置文件:永久有效

全局: /etc/vimrc

个人: ~/.vimrc

常用配置:

显示行号:

启用:set number简写为set  nu

禁用:set nonu

自动缩进:

启用:set ai

禁用:set noai

           设置tab键占用几个空格:

                  set tabstop=2

十、使用vimtutor练习:

       vim提供的各种功能只有在不断重复练习才能熟悉,为了方便练习,vim通过vimtutor提供练习文档。

原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/32616

(0)
上一篇 2016-08-10 13:58
下一篇 2016-08-10 13:58

相关推荐

  • python agent应用

    BaseHTTPServer 模块说明 class BaseHTTPServer.HTTPServer(server_address, RequestHandlerClass) server_address : 是一个服务器 (ip, port)元组。 RequestHandlerClas…

    Linux干货 2016-09-19
  • 软件包管理

    软件包的分类,主要有以下两大类    源码包    二进制包(rpm包,系统默认包) rpm包由Redhat公司提出,被众多linux发行版所采用。 优点:建立统一的数据库文件,详细记录软件包的安装、卸载等变化信息,能够自动的分析软件包依赖关系。 查询已安装的rpm软件信息: 格式:     rpm…

    Linux干货 2016-08-25
  • 马哥教育网络班21期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@CentOS7 ~]# fdisk /dev/sdb Command (m for help): n Select…

    Linux干货 2016-08-22
  • Linux基础 & bash相关

    Q1:Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令: cd, ls, touch, cp, mv, rm, cat, tac, more, less, tail, head; 详细介绍以上命令: cd: 在Linux文件系统上,可以使用切换目录命令cd将shell会话切换到另一个目录。 命令格式: ~]#&nbsp…

    Linux干货 2016-11-06
  • 网络管理的相关命令

    今天要说的是有关网络的一些相关内容,主要介绍的有以下几点:网络的服务:Centos6/7中的常用命令,如何手动配置网络,路由表的相关内容,关于Bond(仅主机模式)网络接口的配置以及Bridge(桥接)的网络接口配置。 首先要说的是网络的服务: 1,Centos6/7的常用网络的命令: Centos6:禁用网卡:ifconfig 网卡名 down启用网卡:i…

    2017-09-07
  • 网络基础

    计算机网络     计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 1、网络通信设备     网络通信设备种类繁多,且日新月异,网络通信设备通常由网络线缆、网卡、集线器、中继器、网桥、交换机、路由器等组成。 网桥(Bri…

    Linux干货 2016-12-16