文本编辑秘籍之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

相关推荐

  • 如何学好C语言

    有人在酷壳的留言版上询问下面的问题 keep_walker : 今天晚上我看到这篇文章。 http://programmers.stackexchange.com/questions/62502/small-c-projects 我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢! 我相信,这可能是很多朋友的问题,我以前…

    Linux干货 2016-08-15
  • sed命令初识

           sed是一种流编辑器,它是文本处理中非常常用的工具,能够配合正则表达式使用。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自…

    Linux干货 2017-12-03
  • puppet配置详解

    主程序: facter-2.4.6-1.el7.x86_64.rpm puppet-3.8.7-1.el7.noarch.rpm #agent主机上用的包 puppet-server-3.8.7-1.el7.noarch.rpm 注:yum仓库中不是最新版的,可能会有些差别,最好到ftp上下载最新版的 配置文件:    &nbs…

    Linux干货 2017-08-08
  • HAProxy服务配置

    HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件。 相较与 Nginx,HAProxy 更专注与反向代理,因此它可以支持更多的选项,更精细的控制,更多的健康状态检测机制和负载均衡算法。 四层和七层负载均衡的区别: 四层: 通过分析IP层及TCP/UDP层的流量实现的基于“IP+端口”的负载均衡。 七层: …

    Linux干货 2017-05-19
  • Linux命令格式及常用命令详解

    Linux命令格式及常用命令详解 Linux的命令格式 COMMAND OPTIONS ARGUMENTS COMMAND 表示要执行的命令 OPTIONS 表示命令的运行特性 RGUMENTS 命令的作用对象,有时可以包含多个对象,空格隔开 常用命令详解 ifconfig 功能描述:获取网络接口配置信息或配置网络接口 命令格式: ifconfig [-a]…

    Linux干货 2017-07-02
  • ​N22-℡浮生.若夢 ╮第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell; ~]# grep -E "^(root|user1|fedora)" /etc/passwd |cut -d: -f1,7 root:/bin/bash user1:/bin/bash fedo…

    Linux干货 2016-10-09