Linux-VIM编辑器

148 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

什么是VIM

是一个类似vi的文本编辑器,不过在vi的基础上增加了很多新特性,vim被公认为类vi编辑器中最好用的一个。

vim在vi的基础之上增加了很多的小功能。可以有效的帮助程序员快速的排查问题。

很多系统都内建vi编辑器,其他的文本编辑器不一定有,很多软件都会主动调用vi的接口。

VIM的三种模式

一般模式、编辑模式、命令模式

一般模式

h或←光标左移一个字符。如果是20h,表示左移20个字符。

j或→光标下移一个字符 同上

k或↑光标上移一个字符 同上

l或↓光标右移一个字符 同上

[Ctrl]+[f]屏幕向下移动一页 Page Down!!

[Ctrl]+[b]屏幕向上移动一页 Page Up !!

0或[Home]移动到此行最前面字符处!!

$或[End]移到光标所在行的行尾!!

H 光标移到当前屏幕最上方行的第一个字符!!

M光标移到当前屏幕中间行的第一个字符!!

L光标移动到当前屏幕最下方行第一个字符!!

G移到此文件最后一行!!!

nG移到第n行

gg相当于1G,即移到第一行!!!

n[Enter]光标下移n行

/word向下查找单词“word”(!!!)

?word向上查找单词“word”(!!!)

n表示重复前一个查找操作

N与n相反(反向查找)

yy复制光标所在行(!!)

nyy复制光标所在向下n行(n为数字)

y1G复制光标所在行到第一行所有数据

yG复制光标所在行到最后一行所有数据

y$复制光标所在处到同行最后一个字符

y0复制光标所在处到同行第一个字符

p将已复制的数据粘贴到光标所在下一行

P将已复制的数据粘贴到光标所在上一行

u复原前一个操作(类似于windows中的ctrl+z)!!!

Ctrl+r恢复一个操作

x向后删除一个字符

nx向后删除n个字符(n为数字)

X向前删除一个字符

dd删除光标所在行(!!!)

ndd删除光标所在行以下n行(n为数字,包含当前行在内)

d1G删除光标所在行到第一行所有数据(包括所在的行)

dG删除光标所在行到最后一行(!!)

d$或d end删除光标所在处到同行最后一个字符(!!)

d0或d home删除光标所在处到同行第一个字符。(!!)


编辑模式

i从光标所在处插入(!!!)

I从光标所在行第一个非空白字符处插入(!!)

a从光标所在处下一个字符处插入

A从光标所在行最后一个字符处插入(!!)

o在光标所在处下一行插入新的一行(!!)

O在光标所在处上一行插入新的一行(!!)

r替换光标所在处字符一次

R一直替换光标所在处文字直到按下Esc(!!!)


命令模式

如何进入命令模式:、 /、 ?

  • 三种符号任意都可以进入命令模式

:w [filename] 另存为filename

:r [filename] 读取filename指定文件中的内容到光标所在的行。

:n1,n2 w [filename] 将n1到n2行另存为filename

:! command 临时切换到命令行模式下执行command命令。

  • 例如 :!find / -name Helllo.java即可在vim当中执行命令。

:wq 保存后离开

:q 不保存离开(未改可以离开,如果修改了需要q!强制离开)

:q! 不保存强制离开

:set nu 显示行号 (number)

:set nonu 取消显示行号 (noNumber)

:s/word1/word2/g 在当前行将word1替换成word2(!!)

:%s/word1/word2/g 在当前文件将word1替换成word2(!!)

:n1,n2s/word1/word2/g 在n1到n2行查找word1替换成word2 (n1、n2为数字)

:10,$ s/word1/word2/g从第一行到最后一行查找word1替换成word2

:%s/word1/word2/gc 同上,在替换前确认是否替换。(!!!)只能单行确认,需要逐个确认。

  • 替换为 b (y/n/a/q/l/^E/^Y)?
  • y表示yes,n表示no,a表示all(限光标当前到最后一行),q表示quit,l表示替换后移动光标到行首,^E(Ctrl+E)表示向下翻,^y(Ctrl+Y)表示向上翻。