vim的简单使用

149 阅读3分钟

「笔者:nullresot」

vim的三种模式

  • 一般命令模式(command mode)

    默认的模式,一般借用此模式进行光标的上下左右移动,简单的删除字符/删除整行或复制粘贴简单的操作,可以在此模式中通过按键进入insert mode或command-line mode。

  • 编辑模式(insert mode)

    command mode中我们无法对文件进行编辑,可以点击【i,I,o,O,a,A,r,R】等任意一个字母之后才会进入编辑模式,进入后,在界面的左下角会显示【INSERT】或【REPLACE】的字样,可以通过【Esc】退出编辑模式。

  • 命令行模式(command-line mode)

    可以进行读取,保存,退出,显示行号等操作,可以通过输入【: / ?】三个任意一个字符进入command-line mode。

注:模式的进入inset mode或command-line mode必须在command mode输入特定字符才可进入,command-line mode与command mode之间无法切换。


vim命令

「此模块仅介绍常用按键」

移动光标

按键效果
h或←光标向左移动一个字符
j或↓光标向下移动一个字符
k或↑光标向上移动一个字符
l或→光标向右移动一个字符
可以通过nj来做到向下移动30行n是一个数字,例如15k可以向上15行
ctrl+f屏幕向下移动一页,相当于【Page Down】
ctrl+b屏幕向上移动一页,相当于【Page Up】
n<space>光标向后移动n个字符,<space>是空格
0或[Home]移动到一行的最前面
$或[End]移动到一行最后面
G移动到最后一行
gg移动到第一行,相当于1G
nG移动到第n行
n<Enter>向下移动n行

查找与替换

按键效果
/string向光标之下查找string的字符串,查找的是/后面跟着的字符串
?string向光标之上查找string的字符串
n英文字母里的n,非数字,代表重复上一个查找的操作
N反着来,上一个是向下查找的话使用N会向上查找
:n1,n2s/word1/word2/gn1,n2是两个不同的数字,在n1行到n2行中寻找word1并将其替换成word2
:1,$/word1/wod2/g从第一行到最后一行查找word1并替换成word2
:1,$s/word1/word2/gc从第一行到最后一行查找word1并替换成word2,每次替换前都会进行询问是否替换

删除,复制,粘贴

按键效果
x与Xx向后删除一个字符(Del),X向前删除一个字符(Backspace)
nx连续向后删n个字符,nX同理
dd删除(剪切)光标所在的一整行
ndd删除(剪切)光标所在的下n行
yy复制光标所在的一整行
nyy复制光标所在的下n行
p与Pp,将复制的数据粘贴到光标所在的下一行;P,粘贴到上一行
u恢复前一个操作,相当于windows的ctrl+Z
ctrl+r重复上一个操作
.重复上一个操作

command mode进入insert mode

按键效果
i从目前光标所在处插入
o与Oo,在光标所在的下一行插入;O,在光标所在的上一行插入
r与R替换模式(Replace mode),r指挥替换光标所在的那个一个字符一次,R会一直替换,直到退出替换模式
Esc退出编辑模式(insert mode或replace mode),回到command mode

命令行常用命令 很多命令可以放在一起用,例如:wq是保存并退出

按键效果
:w将编辑的内容写入到硬盘文件中(保存)
:q退出vim
:w!/:q!强制保存/强制退出
:w [filename]将编辑的内容保存到另一个文件
:n1,n2 w [filename]将n1到n2行的内容保存为filename这个文件

vim环境设置参数

命令效果
:set nu显示行号
:set nonu取消行号(相反的命令就是多了个no)
:set autoindent/:set noautoindent自动缩进/取消缩进
:set backup备份文件,备份后的文件名为“原文件名~”,该文件记录原始原文件内容
:set all显示所有环境参数设置值
:syntax on/:syntax off写程序时可以帮助自动出错,如果编辑纯文本文件可以通过后面的命令关掉这个功能

「参考书目:《鸟哥的Linux的私房菜》」
如果有错误的话麻烦dalao指正