文本编辑秘籍之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)
M20-1钟明波M20-1钟明波
上一篇 2016-08-10
下一篇 2016-08-10

相关推荐

  • 用户和组管理类命令

    用户和组管理类命令 useradd useradd命令用于Linux中创建的新的系统用户 语法 useradd(选项)(参数) 选项 -c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中; -d<登入目录>:指定用户登入时的启始目录; -D:变更预设值; -e<有效期限>:指定帐号的有效期限; -f<…

    Linux干货 2018-03-18
  • 文本处理三剑客之grep

    文本处理三剑客之grep 正则表达式(regex) 文本处理工具 grep egrep 试验环境:CentOS 7.2 正则表达式 Linux的哲学之一“一切皆文件”,学习Linux应得掌握其基本的文本处理工具,这些工具主要包括: 文件内容:less和cat 文件截取:head和tail 文件抽取:cut 关键字搜索:grep 正则表达式是计算机科…

    Linux干货 2016-08-07
  • 初识Nginx

    前言:   Nginx介绍:    Nginx(engine x)是由俄罗斯人logor sysoev研发的;官方网站:nginx.org;nginx是一个轻量级的高性能的web服务器和反向代理服务器;nginx本身一个处理静态资源的web服务器,但是通过加装fastcgi等模块,可是支持动态资源;可以为IMAP/POP3/SM…

    Linux干货 2015-06-23
  • linux文件目录详解

    linux目录结构   (且看且不看) 历史上 /usr和 /etc文件夹下既保存静态文件,也保存可变文件,后来有了/var层次结构,/usr下面的可变文件被转移到/var下面。因而/usr现在可以只读的方式挂载(如果它在单独的文件系统上)。 /etc下的可变文件早已转移到/var,因为技术上允许/ 根是系统内核启动后挂载的第一个分区,挂载到根上的…

    Linux干货 2017-05-31
  • Java输入输出流

    1.什么是IO       Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 &nb…

    Linux干货 2015-04-10
  • Bash Shell详解

    引言:什么是Shell? Linux的命令行接口归结起来就是各种Shell,那么到底什么是Shell?Shell,译为外壳,是用户直接连入计算机所使用的计算机程序,负责解析用户提供的命令,如词法分析、语法分析、句法分析。 1.Shell的分类 Linux 的命令 shell 是与操作系统相分离的一层。不同的 shell 环境影响您具备不同的功能,比如可编辑的…

    2017-09-07