网上文章太杂,都是泛泛讲解,没有重点,本文表格的内容是相对重点的参数,值得读者学习掌握。

表7-1 vi/vim命令的参数选项及说明

7-22命令

说明

普通模式:移动光标的操作

G(shift+g)

将光标移动到文件的最后一行

gg

将光标移动到文件的第一行,等价于1gg1G

0

数字0,将光标从所在位置移动到当前行的开头

$

从光标所在位置将光标移动到当前行的结尾

n<Enter>

n为数字,<Enter>为回车键,将光标从当前位置向下移动n行。

ngg

n为数字,移动到文件的第n行,如11gg可移动到第11行,可配合“:set nu”查看,同nG

H

光标移动到当前窗口最上方的那一行

M

光标移动到当前窗口中间的那一行

L

光标移动到当前窗口最下方的那一行

h()

光标向左移动一个字符

j或(↓)

光标向下移动一个字符

k或(↑)

光标向上移动一个字符

l或(→)

光标向右移动一个字符

普通模式:搜索与替换操作

/oldboy

从光标位置开始,向下寻找名为oldboy的字符串

?oldboy

从光标位置开始,向上寻找名为oldboy的字符串

n

从光标位置开始,向下重复前一个搜索的的动作

N

从光标位置开始,向上重复前一个搜索的的动作

:g/A/s//B/g

把符合A的内容全部替换为B,斜线为分隔符,可以用@#等替代

:%s/A/B/g

把符合A的内容全部替换为B,斜线为分隔符,可以用@#等替代

:n1,n2s/A/B/gc

n1n2为数字,在第n1行和n2行间寻找A,用B替换

普通模式:复制、粘贴、删除等操作

yy

复制光标所在的当前行

nyy

n为数字,复制光标开始向下共n

p/P

p将已复制的数据粘贴到光标的下一行,P则为粘贴到光标的上一行

dd

删除光标所在的当前行

ndd

n为数字,删除从光标开始向下共n

u

恢复(回滚)前一个执行过操作

.

点号。重复前一个执行过的动作

x

向后删除字符

X

向前删除字符

d1G

删除当前行至第一行

dG

删除当前行至最后一行

d0

删除当前光标文本至行首

d$

删除当前光标文本至行尾

进入编辑模式命令

i

在当前光标所在处插入文字

a

在当前光标所在下一个字符处插入文字

I

在当前所在行的行首第一个非空格符处开始插入文字,和A相反

A

在当前所在行的行尾最后一个字符处开始插入文字,和I相反

O

在当前所在行的上一行处插入新的一行

o

在当前所在行的下一行处插入新的一行

Esc

退出编辑模式,回到命令模式中

命令行模式

:wq

退出并保存

:wq!

退出并强制保存,“!”为强制的意思

:q!

强制退出,不保存

:n1,n2 w filename

n1n2为数字,将n1行到n2行的内容保存成filename这个文件

:n1,n2 co n3

n1n2为数字,将n1行到n2行的内容拷贝到n3位置下

:n1,n2 m n3

n1n2为数字,将n1行到n2行的内容挪至n3位置下

:!command

暂时离开vi到命令行模式下执行command的显示结果!例如 :! ls /etc

:set nu

显示行号

:set nonu

set   nu相反,取消行号

:vs filename

垂直分屏显示,同时显示当前文件和filename对应文件的内容

:sp filename

水平分屏显示,同时显示当前文件和filename对应文件的内容

I + # + Esc

在可视块模式下(Ctrl + v, 一次性注释所选的多行,取消注释可用:n1,n2s/#/ /gc[t1] ,这里操作是一个通用的方法,#号可以换成别的操作,例如tab键,这样就是批量缩进

Del

在可视块模式下(Ctrl + v),一次性删除所选内容

r

在可视块模式下(Ctrl + v),一次性替换所选内容

 内容来自老男孩2018年7月出版的新书《跟老男孩学Linux运维:核心系统基础实践》第7 ,敬请期待。


 [t1]这是几种方法?如果是多种方法,各方法间请用顿号。