vim——所向披靡之利器!

一,简介

vim编辑器是一个简单易用并且具有强大功能的源程序编辑器。

二,vim工作模式

1,vim共有三种工作模式:

- 命令模式(Command mode)
从shell进入vim时,初始模式为“命令模式”。在这种模式下,所有输入都被当做命令来解释。我们可以通过输入各种vim命令来实现对文本的“复制、粘贴、删除、移动、跳转”等操作。

- 插入模式(Insert mode)
在插入模式下,我们可以对文本进行编辑。

- 末行模式(Last line mode)
在命令模式下输入“:”即可进入末行模式,其特征为“在vim窗口的最下部,显示一个“:”等待输入命令。在此模式下,我们可以输入一些命令来进行“文件保存、退出、查找字符串、文本替换、显示行号”等操作。

2,vim三种模式的任意切换

在这里插入图片描述

3,vim的启动

vim 不指定文件名,保存文件是需指定文件名
vim filename 打开或新建文件
vim +n filename 打开文件并跳到第n行行首
vim + filename 打开文件并调到末行行首
vim + /String filename 打开文件并跳到匹配到的第一个String处

4,保存文件、退出

(1)命令模式下,输入"ZZ"
(2)末行模式下,输入以下命令:

w 保存文件但不退出
w filename 以filename为文件名保存为一个新文件
w! filename 强制以filename为文件名保存为一个新文件,若原
文件已存在,则覆盖。
q 退出,若文件改动而未保存,则会产生错误。
q! 强行退出
wq 保存并退出
x 保存退出

三,文本编辑

1,光标的移动(命令模式+插入模式)

在插入模式下使用方向键来移动光标;

在命令模式下的操作如下:

(1)逐字符移动

按键操作按键操作
h左移l右移
k上移j下移
nh、nl左/右移n字符nk、nj上下移n个字符

(2)逐单词移动

按键操作按键操作
b移动到上一个“词首”w移动到下一个“词首”
e移动到下一“词尾”nb、nw、ne移动到第n个词首/词尾

(3)句间跳转

按键操作按键操作
移动到上一句首移动到下一句首

(4)行内跳转

按键操作按键操作
0(零)移至绝对行首^移至行的第一个非空白字符
$移至绝对行尾

(5)行间跳转

按键操作按键操作
1G移至第一行gg移至第一行
nG移至第n行末行模式下直接给出行号n移至第n行
G移至最后一行

(6)段落间跳转

按键操作按键操作
{移动到上一段段首}移动到下一段段尾

(7)翻屏

按键操作按键操作
Ctrl+b向上翻一屏Ctrl+f向下翻一屏
Ctrl+u向上翻半屏Ctrl+d向下翻半屏

2,文本的删除

  • 编辑模式下:
按键操作
x删除光标处的字符
xp交换光标处字符和其后面字符的位置
d0删除绝对行首至光标前一个字符的所有字符
d$删除光标所在字符到行尾的所有字符
db删除光标前一字符至上一“词首”字符
dw删除光标字符至下一“词首”前一个字符
de删除光标字符至下一“词尾”字符
ndb、ndw、nde执行n次相应操作
dd删除光标所在行
D删除光标所在行,但保留删除后的空白行
ndd删除光标所在行及其之后的共n行

3,文本粘贴

文本粘贴使用的是p/P命令,即put、paste;

p用法如下:

  • 当缓冲区中存放的为整行,则粘贴至光标所在行下面一行;
  • 当缓冲区存放的不为整行,则粘贴至光标的后方下方;

P用法如下:

  • 当缓冲区中存放的为整行,则粘贴至光标位置之后;
  • 当缓冲区存放的不为整行,则粘贴至光标的后方下方;

4,文本复制

文本复制使用的是y命令,及yank;

用法与d命令类似;

5,文本修改

文本修改使用的命令是c,即change;

此命令执行后,直接从编辑模式跳转到插入模式;其操作相当于是执行d命令+a,即先删除,再跳到光标下一字符;

用法与d命令类似;

6,可视化模式

按键操作
v按字符选定区域
V按行选定区域,光标所过之行皆被选中

经常与d、y、c结合使用,用于对所选区域进行相应操作;

7,替换模式

替换模式使用命令r/R;

r/R+CHAR:将光标字符替换为CHAR

8,撤销操作

撤销前一次编辑操作:u
撤销前n次编辑操作:nu
重复前一次操作:.
撤销亲一次“撤销”:Ctrl+r

9,vim自带教程

vimtutor是vim中自带的用于新手学习的教程;支持我们以上所学的各种翻屏操作;

打开vimtutor:

[root@localhost /]# vimtutor

10,vim末行模式

(1)地址定界
用法::start_pos,end_pos

按键操作
:#选中第#行并且光标跳转到第#行行首(非空白字符)
:#1,#2选中第#1行到第#2行
:#1,+#2选中第#1行及其之后的#2行
.选中当前行
:$选中最后一行
. ,$-1选中当前行至倒数第二行及其之间行
:%选中全文
:/PATTERN1/,/PATTERN2/选中PATTERN1第一次匹配到的行到PATTERN2第一次匹配到的行及其之间的行。
:#,/PATTERN/选中从第#行开始,到PATTERN第一次匹配到的行结束
:/PATTERN/,$选中从PATTERN第一次匹配到的行开始,到最后一行

地址定界常与d、y、w、c等编辑命令结合使用,表示对所选中的区域执行相关操作;
例如:

 /*将文本第1行到第20行保存到文件/tmp/mytext.txt中*/
:1,20w  /tmp/mytext.txt 

/*将文件/tmp/mytext.txt中的内容读取到当前文本的第100行*/
:100r /tmp/mytext.txt  

(2)查找

按键操作
:/PATTERN从当前光标所在处向文件尾部查找
:?PATTERN从当前光标所在处向文件首部查找

匹配到查找内容后,若查找到多个匹配内容:
n : 与命令同方向查看下一个;
N : 与命令反方向查看下一个;

(3)查找并替换

使用s命令可在末行模式下完成查找替换操作;

用法:
s /查找内容/替换为的内容/修饰符`

  • 查找内容:可用PATTERN进行匹配查找;
  • 替换为的内容:不可用PATTERN匹配,但可用\1,\2……进行后向引用;还可用"&”引用查找内容;
  • 修饰符:g表示全局,i表示不区分大小写;

例:
从当前行到最后一行,搜索以r开头、以t结尾并且中间含有两个字符的字符串;然后将其开头字符r替换为R、替换为T,中间两个字符不变;

:. ,$s/r\(..\)t/R\1T/g

查找替换中使用的分隔符,如/,是可以改变的,可以使用其他特殊字符;
上例可写为:

:. ,$s@r\(..\)t@R\1T@g

下面我们来做几个练习吧!

1,复制/etc/grub2.cfg至/tmp/目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首中的空白字符;

[root@localhost jeffrey]# cp /etc/grub2.cfg /tmp/
[root@localhost jeffrey]# vim /tmp/grub2.cfg
:%s/^[[:space:]]\+//g

2,复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions中以空白字符开头的每行行首添加一个#;

[root@localhost tmp]# cp /etc/rc.d/init.d/functions /tmp/
[root@localhost tmp]# vim /tmp/functions
:%s/^[[:space:]]/#&/g

3,复制/etc/rc.d/init.d/functions文件至/tmp,替换此文件中的/etc/sysconfig/init为/var/log;

[root@localhost tmp]# cp /etc/rc.d/init.d/functions /tmp/
cp: overwrite ‘/tmp/functions’? y
[root@localhost tmp]# vim /tmp/functions
:%s/\/etc\/sysconfig\/init/\/var\/log/g

4,删除/tmp/functions文件中所有以#开头并且#后无空白字符的行行首的#;

[root@localhost tmp]# vim /tmp/functions
:%s/^#\([^[:space:]]\)/\1/g  

11,vim多文件编辑及分屏显示

(1)分屏显示一个文件

按键操作
Ctrl+w,s先按Ctrl+w,松开再按s,水平拆分窗口
Ctrl+w,v先按Ctrl+w,松开再按v,垂直拆分窗口
Ctrl+w,方向键先按Ctrl+w,松开再按方向键,在窗口间切换光标
:qa关闭所有窗口

(2)编辑多个文件

用法:~]# vim FILE1 FILE2…

按键操作
:next切换至下一个文件
:prev切换至上一个文件
:last切换至最后一个文件
:first切换至第一个文件
:qa全部退出
:wa保存全部

(3)分窗口编辑多个文件

用法:

水平分割显示
~]# vim -o FILE1 FILE2…

垂直分隔显示
~]# vim -O FILE1 FILE2…

12,vim配置

我们也可以对vim进行私人定制。

(1)通过配置文件定制vim,特点是永久有效;

配置文件通常包括全局配置文件和当前用户配置文件;

  • 全局配置文件:/etc/vimrc
  • 当前用户配置文件:~/.vimrc

(2)在末行模式下设置,特点是支队当前vim进程有效;

以下是配置vim的一些具体操作:

1)行号设置
显示行号:set number 简写为 set nu
取消显示:set nonumber 简写为 set nonu

2)括号匹配
启动匹配:set showmatch 简写为 sm
取消匹配:set nosm

3)自动缩进
设置启动:set autoindent 简写为 set ai
设置禁用:set noai
设置C语言语法自动缩进:set cindent
设置缩进宽度为#:set shiftwidth=#
设置tab缩进宽度为#:set tabstop=#

4)高亮搜索
启动:set hlsearch
禁用:set nohlsearch

5)语法高亮
启用:syntax on
禁用:syntax off

6)忽略字符大小写
启用:set ic
禁用:set noic

7)设置vim数值进制识别方式

set nrformats

vim在缺省情况下,会把以0开头的数字默认为八进制数,因此007是用加1后,会变成010,而不是008(读者可以手动验证一下)。此设置加入到文件vimrc中,这时,vim会把所有数字都当成十进制,记住是“所有”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值