文本编辑秘籍之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 13:58
下一篇 2016-08-10 13:58

相关推荐

  • Linux基础介绍

    1、Linux用户: Linux用户分为普通用户和管理员,普通用户的系统操作权限低,用户的误操作对系统数据的破坏程度有限,不会对系统造成灾难性的破坏。而管理员对系统具有绝对的权限,可以修改和设置系统的任何数据,如果误操作,及其容易对系统数据造成不可挽回的破坏,比如执行以下命令 rm  -rf  / 。因此,系统管理员在操作root用户时需…

    Linux干货 2016-07-26
  • 项目实践==虚拟主机及SSL通信(Blog 14)

    httpd-2.4及httpd-2.4实现

    2017-12-02
  • mysql数据库及表的管理

    MySQL中字符大小写: 1、SQL关键字及函数名不区分字符大小写; 2、数据库、表及视图名称的大小区分与否取决于低层OS及FS 3、存储过程、存储函数及事件调度器的名字不区分大小写,但触发器区分; 4、表别名区分大不写; 5、对字段中的数据,如果字段类型为Binary类型,则区分大小写;非Binary不区分大小写; 数据库: CREATE {DATABAS…

    Linux干货 2015-06-01
  • 逻辑卷实战演练

    1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录 3、扩展testlv…

    Linux干货 2016-09-01
  • linux文件权限详解

    基本命令 1.cut : cat /etc/passwd | cut -d’:’ -f7| uniq -c| sort -nr 2.authconfig 修改加密方式 –passalgo=sha256 — update 3.scp 上传文件 -r dir ip:path 传目录 file ip:path传文件 …

    Linux干货 2017-04-03
  • 磁盘分区管理与文件系统的创建

    磁盘分区管理与文件系统的创建   不光是linux文件系统,所有的大结构,多数据凑到一块的时候,单一的管理是没有能力处理这样庞大规模的存在的。所谓“君王不下县”也就是这个道理。要系统的,规范的管理一个国家,存在着省、市这样的层级结构。linux系统也是这样,将整个系统划分为若干个分区,实现不同功能,不同层级的规范管理,这就是创建磁盘分区的意义。既然…

    Linux干货 2016-09-01