Uinx vim指令详解

进入输入模式

Vi切换到输入模式的正规方法

指令 指令说明
a 在当前光标之后输入
A 在当前行之末输入
i 在当前光标之前输入
I 在当前行之首输入
o 在当前行之下新增一行,并在新增行输入
O 在当前行之上新增一行,并在新增行输入

输入结束后,按Esc键推出输入模式

光标移动

Vi光标移动

指令 指令说明
h 向左移动一个字节
i 向右移动一个字节
j 向下移动一个字节
k 向上移动一个字节
b 左移一个单词,到词首
w 右移一个单词,到词首
e 右移一个单词,到词尾
:0 移动到文档起始位置
0 移动当前行行首
^ 移动到文档起始位置
$ 移动到当前行行尾
+ 移至下一行的行首
- 移至上一行的行首
H 移至视窗的第一行
M 移至视窗的中间一行
L 移至视窗的最后一行
G 移至该文件的最后一行
nG 移至该文档的第n行
N+ 下移n行
n+ 上移n行
{ 光标移动到上一个空行
} 光标移动到下一个空行
[[ 光标移动到下一个函数起始位置(‘{’字符所在位置)
]] 光标移动到上一个函数起始位置(‘{’字符所在位置)
( 光标移动到上一段落起始位置,空行也被认为是段落(多个连续空行被认为是一个段落)
) 光标移动到上一段落起始位置,空行也被认为是段落(多个连续空行被认为是一个段落)

以上命令从h到e,均可指定重复操作次数,如5h表示光标向前移动5个字节,10j表示向下移动10行

视窗移动

Vi视窗移动

指令 指令说明
<Ctrl>+f 视窗下卷一页
<Ctrl>+b 视窗上卷一页
<Ctrl>+d 视窗下卷半页
<Ctrl>+u 视窗上卷半页
<Ctrl>+e 视窗下卷一行
<Ctrl>+y 视窗上卷一行

删除操作

**Vi删除操作

指令 指令说明
x 删除光标所在字节
X 删除光标前一字节
dw 从光标当前位置开始向后删除一个单词
db 从光标当前位置开始向前删除一个单词
d0 从行首删除至当前光标位置
d$ 从光标当前位置删除至行尾
dd 删除光标所在行
D 同d$
dG 删除从当前光标位置直到文档末尾的所有内容

以上x、X、dw、db、dd可以指定字符/行数,如3x表示删除从当前光标所在位置起的3个字符,3dd表示删除从当前光标所在行开始的3行。

拷贝和粘贴操作

Vi拷贝粘贴

指令 指令说明
[n]yy 拷贝一行或n行
p 粘贴刚刚拷贝或者删除(d*命令操作的内容)到当前光标后面,如果如果是单词则粘贴到当前行,其他内容则在当前光标所在行后面添加新行进行粘贴
P 粘贴刚刚拷贝或者删除(nx或者d*命令操作的内容)到当前光标后面,如果如果是单词则粘贴到当前行,其他内容则在当前光标所在行后面添加新行进行粘贴

修改操作

Vi修改操作

指令 指令说明
s 修改光标所在字节,修改完成后按Esc键结束
S 修改整行内容,修改完成后按Esc键结束
r 替换当前光标所在字节
R 进入替换状态,直至按Esc键结束
cw 修改一个单词(从光标位置至词尾)
cb 修改一个单词(从词首至光标位置)
cc 修改整行内容,完成后按Esc键结束,同S
c0 修改行首至光标位置的内容
c$ 修改光标位置至行尾的内容
~ 光标所在字节大小写切换

指令重复

Vi指令重复

指令 指令说明
nx 删除n个字节
ndd 删除n行
ns 修改n个字节

在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次。常用的重复操作

取消前一操作

Vi取消前一个操作

指令 指令说明
u 撤消上一指令的结果
U 撤销本行上的所有修改

查找字符串

Vi查找字符串

指令 指令说明
/字符串 从当前光标向后查找该字符串
?字符串 从当前光标向前查找该字符串
n 从当前光标向后查找下一个字符串
N 从当前光标向前查找下一个字符串
# 向上查找当前光标所在位置的单词,如果当前位置为空白,则为其后的第一个单词
* 向下查找当前光标所在位置的单词,如果当前位置为空白,则为其后的第一个单词

查看编辑状况

Vi查看编辑状况

指令 指令说明
<Ctrl> + g 显示正在编辑的文件名、当前光标所在行数、文件总行数、文件是否被修改

括号匹配

Vi括号匹配

指令 指令说明
% 定位到匹配的“(”、“)”、“{”、“}”

括号匹配符可以用在各种指令中,如d%表示从但前光标位置删除到匹配的“(”“)”“{”“}”
的位置,c%表示替换从当前光标到配置的“(”“)”“{”“}”位置,y%表示拷贝从当前光标位
置到其后匹配的“)”或“}”。当光标不在“(”“)”“{”“}”上时,默认找其后最近的“(”,然后找“{”。

执行指令

Vi执行指令

指令 指令说明
:10,20d 删除第10行至第20行的内容
:10d 删除第10行的内容
:%d 删除全部内容
:10,20co30 将第10行至第20行的内容复制到第30行之后
:10,20mo30 将第10行至第20行的内容移动到第30行之后
:1,$s/old/new 将第1行至最后一行中的old替换成new
:1,$s/^/new 将第1行至最后一行的内容前面插入new
:10 将光标移至第10行
:10,20y 拷贝第10行至第20行的内容
:g/old/s//new 在全文档范围内查找每行第一次出现的old字符串并替换为new字符串
:g/old/s//new/g 在全文档范围内查找所有old字符串并替换为new字符串
:g/old/d 删除文档中包含old字符串的行
:r filename 读入filename文件内容,并粘贴到当前光标下一行
:e 重新载入当前文档的内容覆盖当前所有修改,其实就是将所有自上次保存(或者打开)后的所有修改撤销。
:$ 光标移动到文档末尾一行行首
:[w]n[!] [filename] 切换到下一个文件进行编辑。如果指定了filename则打开指定的filename文件进行编辑,如果filename不存在则默认为创建该新文件。如果没有指定文件名,则只能在vi已经打开多个文件且当前编辑的文件不是最后一个文件时使用该命令。n表示next,w表示在切换到下一个文件前将当前文件的修改进行保存,!表示强制执行。
:rew[!] rew即rewind,重新打开第一个文件进行编辑,但是如果当前文件的修改没有保存的话将失败,如果使用了!,则将舍弃对当前文档的最近修改(自上次存储或者文件打开以来),强行打开第一个文件进行编辑。
:la[!] la即last,打开最后一个文件进行编辑,类似rew,只不过一个是打开第一个文件,一个是打开最后一个文件。
:help [key] 显示vi的帮助信息,如果指定了命令,则显示该命令的帮助信息。用:exit或:q推出帮助界面。

以上用具体的数字为例进行介绍,数字表示行数,光标所在行可用“.”代替,文件最后一行可用“$”代替。

保存与退出

Vi保存与退出

指令 指令说明
:w 保存,但不退出
:wq 保存并退出
:x 同:wq
:q 退出,如果当前文件没有保存,禁止退出
:q! 不保存退出
:w file1 将内容保存至文件file1中,注意:此时编辑的仍为原文件
:w! file1 将内容覆盖保存至文件file1中,如文件file1存在,:w file1将禁止执行

环境设置

Vi环境设置

指令 指令说明
:set 显示已设置的环境状况
:set all 显示所有的环境设置选项
:set nu 显示行号
:set nonu 不显示行号
:set ts=n 设置Tab键的长度为n

vi环境设置的缺省值可在$HOME/.exrc文件中设置。

重复指令

Vi重复指令

指令 指令说明
. 重复上一条指令

切换到shell状态

Vi切换到shell状态

指令 指令说明
:sh 切换到shell状态,此时可以执行所有shell命令,知道执行exit返回文档编辑状态。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352