vim可以分为三种状态,分别是 命令行模式(command mode) 、 输入模式(Insert mode) 和 底行模式(last line mode) ,这 3 种工作模式可随意切换,如下图所示。
使用vim编辑文件时,默认处于命令行模式。此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
下图所示是vim处于命令行模式的状态示意图。
在输入模式下,vim可以对文件执行写操作,类似于在Windows系统的文档中输入内容。
使vim进行输入模式的方式是在命令模式状态下输入 i 、 I 、 a 、 A 、 o 、 O 等插入命令(各指令的具体功能下表所示),当编辑文件完成后按 esc 键即可返回命令模式。
下图所示为vim处于输入模式模式下的示意图。
底行模式用于对文件中的指定内容执行保存、查找或替换等操作。
使vim切换到底行模式的方法是在 命令行模式 状态下按 : 键(注意是英文符号),此时vim窗口的左下方出现一个 : 符号,这是就可以输入相关指令进行操作了。
指令执行后vim会自动返回命令行模式。如想直接返回命令行模式,按 esc 即可。
下图所示为vim进入底行模式后的状态。
对于新手来说,经常不知道自己处于什么模式。不论是自己忘了,还是不小心切换了模式,都可以按一次 esc 键返回命令行模式。如果你多按几次 esc 键后听到"嘀————"的声音,则代表你已经处于命令行模式了。
打开文件
打开文件时光标处于文件尾部
打开文件时,光标定位到第几行
字符移动
这些移动键都可以加上数字(5h:向左移动5个字符格)
单词移动
行内跳转
行间移动
在底行模式下,直接给出行号,实现跳转
用法:起始地址,结束地址 s @要替换内容@替换后内容@gi(@分隔符)
例 :1,$s/a/A/g 把文件中全部的a换替换成A,全局替换
显示取消行号
设定自动缩进(写脚本时)
查找到的文本高亮显示
语法高亮
/etc/vimrc :全局配置文件,永久有效
~/.vimrc :个人配置文件,每个用户的家目录中,若不存在,手动创建
对于第一次用vim的童鞋,有几点需要提醒一下:
② vim模式与模式切换vim命令模式
vim有三种模式,本文介绍VIM模式与vim模式切换的方法。
vim命令 模式, 编辑模式 , 尾行模式 和文本编辑命令。
Vim编辑模式插入字符,行尾、行首插入,删除一个字符和删除整行命令,Vim复制和粘贴命令,vim替换输入以及撤销和反撤销命令,Vim保存和另存为文件,显示vim当前编辑文件名。
我们使用vim编辑器的常用文件操作主要是:插入、删除、复制、粘贴、替换、撤销、保存、另存为。
在介绍Vim中的上述基本文件操作命令前,需要先介绍下vim的操作模式。因为vim的各种对文件操作命令需要在不同操作模式下使用。
一、Vim三种操作模式
Vim编辑器一共有3种模式,分别为 命令模式 (默认)、编辑模式、尾行模式。这3种模式的转换关系如下图所示。
vim三种模式
1 命令模式(command mode)
命令模式是Vim的默认操作模式,当使用vim命令打开一个文件时,默认进入的就是命令模式。不管用户处于何种模式,只要按下Esc键就可使进入命令行模式
2 编辑模式(input mode)
只有在vim编辑模式下,才能将键盘键入的内容输入到当前打开的文件中
在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本编辑模式
3 尾行模式(last line mode)
尾行模式主要用于保存文件或退出Vim,同时也可以设置编辑环境和一些编译工作,如列出行号(set nu)、寻找字符串(/target)等
在命令模式下,用户按冒号键(:)即可进入末行模式下,此时Vi会在显示窗口的最后一行显示一个”:“作为末行模式的提示符,等待用户输入命令
二、Vim文本编辑命令
约定:在没有特殊说明的情况下,以下Vim编辑命令部分提到的命令均是在命令模式下使用。
1 vim插入命令
在命令模式下按以下按键可进入编辑模式,执行插入操作,具体包括:
从光标当前所在行的【行首】处开始插入:I
从光标当前所在行的【行尾】处开始插入:A
从光标当前所在行的【下一行】处开始插入:o
从光标当前所在行的【上一行】处开始插入:O
从光标当前所在位置的【前】一个字符处开始插入:i
从光标当前所在位置的【后】一个字符处开始插入:a
tips:i (insert)是在当前位置插入,a (append)表示是在后面追加
2 vim删除命令
在命令模式下按以下按键可执行删除操作,具体包括:
删除从光标所在位置到当前【单词结束】部分的内容并进入插入模式:cw、cW
删除从光标所在位置到当前【单词开始】部分的内容并进入插入模式:cb、cB
删除从光标所在位置到当前【单词结束】部分的内容但不进入插入模式:dw、dW
删除从光标所在位置到当前【单词开始】部分的内容但不进入插入模式:db、dB
删除光标位置的【一个】字符:x
删除当前光标所在【行】:dd
删除从光标所在位置到当前【行首】的内容:d0
删除从光标所在位置到当前【行尾】的内容:d$
tips:
(1) Vim的命令中,0 表示行首,$ 表示行尾,更多内容可参考卡拉图Vim操作范围、文件范围介绍
(2) w(word)、b(back)命令用于光标移动,具体可参考卡拉图:vim光标移动命令汇总
(3) cW、cB、dW、dB 命令操作的单词是以空白字符(空格、Tab)分隔的字符串
删除当前【段落】从光标位置开始到【段末】的内容:d}
删除当前【段落】从光标位置开始到【段首】的内容:d{
删除当前【句子】从光标位置开始到【句末】的内容:d)
删除当前【句子】从光标位置开始到【句首】的内容:d(
tips:Vim命令中用 ( 和 ) 表示句子,{ 和 } 表示段落
3 vim复制命令、vim粘贴命令
在命令模式下按以下按键可执行复制、粘贴操作,具体包括:
将最后一次删除或复制操作的文本内容粘贴到光标所在字符之【后】:p
将最后一个删除或复制操作的文本内容粘贴到光标当前字符之【前】:P
复制从光标所在位置到当前【单词结束】部分的内容:yw
复制光标所在【行】的所有字符 (包含换行符):yy
tips:yyp 操作可以实现复制一整行内容到当前所在行的下一行
4 vim替换命令
在命令模式下按以下按键后,再输入字符可替换原始文件中的内容
一直替换光标所在字符,直到按下[ESC]键为止:R
删除、复制操作的操作单位可以加操作次数,操作对象的范围为:操作次数 * 操作单位
替换光标当前所在字符一次:r
例如:d3w命令表示删除三个单词,10dd命令表示从光标所在行开始删除后面的十行,更多内容可以参考Vim中的操作符和动作命令。
5 vim撤销命令、vim回退反撤销命令
在命令模式下可执行撤销操作
撤销最近的一次操作:u
恢复最近的一次操作(取消撤销):<Ctrl> + r
tips:多次执行u 命令可以连续撤销最近的操作
6 vim保存命令
在尾行模式下执行以下命令可保存当前编辑的文件内容
保存当前编辑的文件::w
保存当前编辑的文件并退出vim::wq
强制将当前编辑的文件保存::w!
tips:上述操作是在尾行模式下执行的,所以命令都是以:开头
7 vim另存为命令
在尾行模式下执行命令 :w a.txt 可将vim当前打开的文件另存为新文件a.txt.
tips:w(write) 表示将文件存档,: 表示尾行模式命令。
8 vim显示当前文件名的方法
命令 <Ctrl> + g 可显示当前编辑文件名及行数,可以在不退出 Vim 的情况下了解当前编辑文件的信息,更多内容,可参考30个vim常用命令和使用 vim技巧 。
Vim入门级文件编辑命令汇总就先介绍到这里了,更多Vim文件编辑命令和Vim相关操作可阅读本站其它文章内容。
③ Linux中vi、vim命令大全
一、一般模式:删除、复制与粘贴类命令
x,X
x为向后删除一个字符,X为先前删除一个字符
nx(n代表数字)
向后删除n个字符
dd
删除当前行
D
删除当前行所有字符,试成为空行
ndd(n代表数字)
删除光标所在行的向下n列
d1G
删除光标所在行到第一行的所有数据
dG
删除光标所在行到最后一行的所有数据
yy
复制光标所在行
y1G
复制光标所在行到第一行的所有数据
yG
复制光标所在行到最后一行的所有数据
ynj(n代表数字)
复制光标所在行向下n+1行
dnj(n代表数字)
删除光标所在行向下n+1行
p,P
p为复制的数据粘贴在光标的下一行,P为复制的数据粘贴在光标的上一行
J
将光标所在行与下一行的数据结合成一行
u
恢复前一个动作(undo)
二、编辑模式命令
i,I
i为在当前光标所在处插入输入的文字,I为在光标所在行第一个非空字符插入输入的文字
a,A
a为在当前光标所在处下一个字符插入输入的文字,A为在光标所在行最后一个字符的下一个字符处插入输入的文字
o,O
o为在光标所在行的下一行行首开始插入字符,O为在光标所在行的上一行行首开始插入字符
r,R
r为替换光标所在那一个字符,R为一直替换光标所指的文字,直到退出
Esc
退出,回到一般模式
三、命令模式
h
光标向左移一个字符
j
光标向下移一个字符
k
光标向上移一个字符
l
光标向右移一个字符
Ctrl+f
屏幕向下翻一页
Ctrl+b
屏幕向上翻一页
Ctrl+d
屏幕向下翻半页
Ctrl+u
屏幕向上翻半页
+
光标移动到下一行的第一个非空字符
-
光标移动到当前行的第一个非空字符
n空格(n代表数字)
光标向当前行向右移动n个字符
0(数字0)
光标移动到当前行的第一个字符(可以为空字符,注意与-区分)
$
光标移动到当前行的最后一个字符(可以为空字符,注意与-区分)
H
光标移动到当前屏幕最上方的那一行的第一个非空字符
M
光标移动到当前屏幕最中间那一行的第一个非空字符
L
光标移动到当前屏幕最下方的那一行的第一个非空字符
G
光标移动到该文章最后一行的第一个非空字符
nG(n代表数字)
光标移动到该文章第n行的第一个非空字符
n
光标从当前行向下移动n行的第一个非空字符
/word
在光标之后查找word字符串
?word
在光标之前查找word字符串
:s/word1/word2/g
在光标当前行查找word1,并替换成word2
:n1,n2s/word1/word2/g
在第n1行与第n2行之间查找word1,并替换成word2
:%s/word1/word2/g
整个文章查找word1,并替换成word2
:w
将编辑的数据保存到硬盘文件中
:w
[filename]
将编辑后的数据保存到硬盘的另一个文件中
:r
[filename]
在编辑数据时,读入另一个文件中的数据,即将filename文件中的内容加到光标所在行下一行
:wq或:x
保存并退出
:q
退出,适用于未修改的文件
:q!
强制退出,适用于修改文件后不保存退出
:set
nu
显示行号
:set
nonu
取消行号
:n1,n2
w
[filename]
将n1到n2行的内容保存到名为filename的文件中
④ vim的使用方法
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
输入模式:正常的文本录入。
末行模式:保存或退出文档,以及设置编辑环境。
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式。Vim编辑器中内置的命令有成百上千种用法,为了能够帮助读者更快地掌握Vim编辑器,表4-1总结了在命令模式中最常用的一些命令。
表4-1 Vim中常用的命令
编辑
命令 作用
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。Vim文本编辑器
命令 作用
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one替换成two
:s/one/two/g 将当前光标所在行的所有one替换成two
:%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索该字符串
/字符串
⑤ vim编辑器命令
如果想获得光标所在行的行号,用 line('.')。如果是想获得列号是 col('.')。
map 的时候也许 execute 这个命令会比较有用。详见 :h 的说明。
如果楼主可以举个比较具体的例子,我们可以给你写一个参照。相信楼主看了会知道大概这些东西怎么使。
⑥ 如何让vim编辑器永久显示行号和命令大全
在Linux环境下的编辑器有vi、vim、gedit等等。进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的。我们有二种办法可以解决:
第一种是,手动显示:在vim命令行模式下输入 :set nu
取消显示:在vim命令行模式下输入: set nonu
第二种是,永久自动显示:我们修改一个配置文件。
我们输入命令:vim ~/.vimrc
打开后是一个空文件,我们添加 set nu,保存退出,再次进入vim编辑器,就会自动显示出行号了。如此简单
⑦ vim编辑器的常用命令,全部
这是个vim教程,可以直接修改操作。由于字数限制,给个邮箱,发给你。
vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中
就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这
些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。
完成本教程的内容大约需要25-30分钟,取决于您训练的时间。
每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上
进行训练(如果您是通过vimtutor来启动教程的,那么本文就已经是副本了)。
切记一点∶本教程的设计思路是在使用中进行学习的。也就是说,您需要通过
执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那么您可能
会很快遗忘这些命令的!
好了,现在请确定您的Shift-Lock(大小写锁定键)还没有按下,然后按键盘上
的字母键 j 足够多的次数来移动光标,直到第一节的内容能够完全充满屏幕。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一讲第一节∶移动光标
※※ 要移动光标,请依照说明分别按下 h、j、k、l 键。 ※※
^
k 提示∶ h 的键位于左边,每次按下就会向左移动。
h l l 的键位于右边,每次按下就会向右移动。
j j 键看起来很象一支尖端方向朝下的箭头。
v
1. 请随意在屏幕内移动光标,直至您觉得舒服为止。
2. 按下下行键(j),直到出现光标重复下行。
--- 现在您应该已经学会如何移动到下一讲吧。
3. 现在请使用下行键,将光标移动到第二讲。
提示∶如果您不敢确定您所按下的字母,请按下ESC键回到正常(Normal)模式。
然后再次从键盘输入您想要的命令。
提示∶光标键应当也能正常工作的。但是使用hjkl键,在习惯之后您就能够快速
地在屏幕内四处移动光标了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一讲第二节∶VIM的进入和退出
!! 特别提示∶敬请阅读完整本一节的内容,然后才能执行以下所讲解的命令。
1. 请按ESC键(这是为了确保您处在正常模式)。
2. 然后输入∶ q! 回车
--- 这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。
如果您想保存更改再退出,请输入∶
wq 回车
3. 如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是∶
vimtutor 回车
通常情况下您也可以用这种方式∶
vim tutor 回车
--- 这里的 'vim' 表示进入vim编辑器,而 'tutor'则是您准备要编辑的文件。
4. 如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然
后再次进入编辑器。接着将光标移动到第一讲第三节来继续我们的教程讲解。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一讲第三节∶文本编辑之删除
在正常(Normal)模式下,可以按下 x 键来删除光标所在位置的字符。
1. 请将光标移动到本节中下面标记有 --- 的那一行。
2. 为了修正输入错误,请将光标移至准备删除的字符的位置处。
3. 然后按下 x 键将错误字符删除掉。
4. 重复步骤2到步骤4,直到句子修正为止。
--- The ccow jumpedd ovverr thhe mooon.
5. 好了,该行已经修正了,下一节内容是第一讲第四节。
特别提示∶在您浏览本教程时,不要强行记忆。记住一点∶在使用中学习。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一讲第四节∶文本编辑之插入
在正常模式下,可以按下 i 键来插入文本。
1. 请将光标移动到本节中下面标记有 --- 的第一行。
2. 为了使得第一行内容雷同于第二行,请将光标移至文本第一个字符准备插入
的位置。
3. 然后按下 i 键,接着输入必要的文本字符。
4. 所有文本都修正完毕,请按下 ESC 键返回正常模式。
重复步骤2至步骤4以便修正句子。
--- There is text misng this .
--- There is some text missing from this line.
5. 如果您对文本插入操作已经很满意,请接着阅读下面的小结。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一讲小结
1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
h (左移) j (下行) k (上行) l (右移)
2. 欲进入vim编辑器(从命令行提示符),请输入∶vim 文件名 回车
3. 欲退出vim编辑器,请输入以下命令放弃所有修改∶
ESC q! 回车
或者输入以下命令保存所有修改∶
ESC wq 回车
4. 在正常模式下删除光标所在位置的字符,请按∶ x
5. 在正常模式下要在光标所在位置开始插入文本,请按∶
i 输入必要文本 ESC
特别提示∶按下 ESC 键会带您回到正常模式或者取消一个不期望或者部分完成
的命令。
好了,第一讲到此结束。下面接下来继续第二讲的内容。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二讲第一节∶删除类命令
输入 dw 可以从光标处删除至一个单字单词的末尾。
1. 请按下 ESC 键确保您处于正常模式。
2. 请将光标移动到本节中下面标记有 --- 的那一行。
3. 请将光标移至准备要删除的单词的开始。
4. 接着输入 dw 删除掉该单词。
特别提示∶您所输入的 dw 会在您输入的同时出现在屏幕的最后一行。如果您输
入有误,请按下 ESC 键取消,然后重新再来。
--- There are a some words fun that don't belong paper in this sentence.
5. 重复步骤3至步骤4,直至句子修正完毕。接着继续第二讲第二节内容。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二讲第二节∶其他删除类命令
输入 d$ 从当前光标删除到行末。
1. 请按下 ESC 键确保您处于正常模式。
2. 请将光标移动到本节中下面标记有 --- 的那一行。
3. 请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。
4. 然后输入 d$ 从光标处删至当前行尾部。
--- Somebody typed the end of this line twice. end of this line twice.
5. 请继续学习第二讲第三节就知道是怎么回事了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二讲第三节∶关于命令和对象
删除命令 d 的格式如下∶
[number] d object 或者 d [number] object
其意如下∶
number - 代表执行命令的次数(可选项,缺省设置为 1 )。
d - 代表删除。
object - 代表命令所要操作的对象(下面有相关介绍)。
一个简短的对象列表∶
w - 从当前光标当前位置直到单字单词末尾,包括空格。
e - 从当前光标当前位置直到单字单词末尾,但是 不 包括空格。
$ - 从当前光标当前位置直到当前行末。
特别提示∶
对于勇于探索者,请在正常模式下面仅按代表相应对象的键而不使用命令,则
将看到光标的移动正如上面的对象列表所代表的一样。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二讲第四节∶对象命令的特殊情况
输入 dd 可以删除整一个当前行。
鉴于整行删除的高频度,VIM 的设计者决定要简化整行删除,仅需要在同一行上
击打两次 d 就可以删除掉光标所在的整行了。
1. 请将光标移动到本节中下面的短句段落中的第二行。
2. 输入 dd 删除该行。
3. 然后移动到第四行。
4. 接着输入 2dd (还记得前面讲过的 number-command-object 吗?) 删除两行。
1) Roses are red,
2) Mud is fun,
3) Violets are blue,
4) I have a car,
5) Clocks tell time,
6) Sugar is sweet
7) And so are you.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二讲第五节∶撤消类命令
输入 u 来撤消最后执行的命令,输入 U 来修正整行。
1. 请将光标移动到本节中下面标记有 --- 的那一行,并将其置于第一个错误
处。
2. 输入 x 删除第一个不想保留的字母。
3. 然后输入 u 撤消最后执行的(一次)命令。
4. 这次要使用 x 修正本行的所有错误。
5. 现在输入一个大写的 U ,恢复到该行的原始状态。
6. 接着多次输入 u 以撤消 U 以及更前的命令。
7. 然后多次输入 CTRL-R (先按下 CTRL 键不放开,接着输入 R 键) ,这样就
可以执行恢复命令,也就是撤消掉撤消命令。
--- Fiix the errors oon thhis line and reeplace them witth undo.
8. 这些都是非常有用的命令。下面是第二讲的小结了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二讲小结
1. 欲从当前光标删除至单字单词末尾,请输入∶dw
2. 欲从当前光标删除至当前行末尾,请输入∶d$
3. 欲删除整行,请输入∶dd
4. 在正常模式下一个命令的格式是∶
[number] command object 或者 command [number] object
其意是∶
number - 代表的是命令执行的次数
command - 代表要做的事情,比如 d 代表删除
object - 代表要操作的对象,比如 w 代表单字单词,$ 代表到行末等等。
$ (to the end of line), etc.
5. 欲撤消以前的操作,请输入∶u (小写的u)
欲撤消在一行中所做的改动,请输入∶U (大写的U)
欲撤消以前的撤消命令,恢复以前的操作结果,请输入∶CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
⑧ VI和VIM命令的操作
vi编辑器是分为三种状态的
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
[Ctrl] + [d] 屏幕‘向下’移动半页
[Ctrl] + [u] 屏幕‘向上’移动半页
0 或功能键[Home] 这是数字‘ 0 ’:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
gg 移动到这个档案的第一行 (常用)
n<Enter> n 为数字。光标向下移动 n 行(常用)
n<space> 那个 n 表示‘数字’,光标会向右移动这一行的 n 个字符。
n<Enter> n 为数字。光标向下移动 n 行(常用)
/word 向下寻找某个单词
?word 向下寻找某个单词
n 向下重复执行搜索命令
N 向上重复执行搜索命令
dd 删除游标所在的整列
yy 复制游标所在那行
. 重复上一个动作
主要为一般模式到编辑模式的切换
i,I a,A o,O r,R 都可以实现到编辑模式的切换
其中r,R实现的是取代模式
Esc 为推出编辑模式回到常用模式
:w 编辑的数据写入硬盘
:w! 如果未见为只读的时候强制写入
;q 离开
:q! 不储存强制离开
:wq 储存后离开
:wq! 储存后强制离开
ZZ 若档案没有动过则直接离开,若档案已动过则保存离开
:set nu 设置行号
:set nonu 取消行号
⑨ linux下vi编辑器命令大全
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的:
:qx 开始记录宏,并将结果存入寄存器x
q 退出记录模式
@x 播放记录在x寄存器中的宏命令
稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模
式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@x20,可以重复20次。这个在文本的批处理中是非常有用的。
同时编辑多个文件
在vim众多的插件中,有一个叫minibuffer的插件,就是下面所说的标签页功能了,可以支持同时编辑多个文件。
标签命令
:tabe fn 在一个新的标签页中编辑文件fn
gt 切换到下一个标签页
gT 切换到上一个标签页
:tabr 切换到第一个标签页
:tabl 切换到最后一个标签页
:tabm [N] 把当前tab移动到第N个tab之后
对,正如你所想象的那样,跟eclipse, ue等的标签页是一个意思!
窗口命令
ctrl+w s 水平分割窗口
ctrl+w w 切换窗口
ctrl+w q 退出当前窗口(由于同时有多个文件,此命令不会影响其他窗口)
ctrl+w v 垂直分割窗口
其他
vim在保存之前不会对文件做实际的修改,只是加载到缓冲区中,对文件的编辑其实是对缓冲区的编辑,直到:w时才会存入物理文件。
:e file 把file加载到新的缓冲区中
:bn 跳转到下一个缓冲区
:bd 删除缓冲区(关闭文件)
:sp fn 分割窗口,并将fn加载到新的窗口中
退出编辑器
:w 将缓冲区写入文件,即保存修改
:wq 保存修改并退出
:x 保存修改并退出
:q 退出,如果对缓冲区进行过修改,则会提示
:q! 强制退出,放弃修改
查找替换
/pattern 向后搜索字符串pattern
?pattern 向前搜索字符串pattern
n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
N 上一个匹配(同上)
:%s/old/new/g 搜索整个文件,将所有的old替换为new
:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换
复制粘贴
dd 删除光标所在行
dw 删除一个字(word)
x 删除当前字符
X 删除前一个字符
D 删除到行末
yy 复制一行,此命令前可跟数字,标识复制多行,如6yy,表示从当前行开始复制6行
yw 复制一个字
y$ 复制到行末
p 粘贴粘贴板的内容到当前行的下面
P 粘贴粘贴板的内容到当前行的上面
]p 有缩进的粘贴,vim会自动调节代码的缩进
"a 将内容放入/存入a寄存器,可以支持多粘贴板
附:比如常用的一个寄存器就是系统寄存器,名称为+,所以从系统粘贴板粘贴到vim中的命令为"+p,注意此处的+不表示操作符,二十一个寄存器。
移动光标
在vim中移动光标跟其他的编辑器中有很大的区别,不过一旦学会了,就会飞速的在文本中移动了。
h,j,k,l 上,下,左,右
ctrl-f 上翻一页
ctrl-b 下翻一页
% 跳到与当前括号匹配的括号处,如当前在{,则跳转到与之匹配的}处
w 跳到下一个字首,按标点或单词分割
W 跳到下一个字首,长跳,如end-of-line被认为是一个字
e 跳到下一个字尾
E 跳到下一个字尾,长跳
b 跳到上一个字
B 跳到上一个字,长跳
0 跳至行首,不管有无缩进,就是跳到第0个字符
^ 跳至行首的第一个字符
$ 跳至行尾
gg 跳至文件的第一行
gd 跳至当前光标所在的变量的声明处
[N]G 跳到第N行,如0G,就等价于gg,100G就是第100行
fx 在当前行中找x字符,找到了就跳转至
; 重复上一个f命令,而不用重复的输入fx
tx 与fx类似,但是只是跳转到x的前一个字符处
Fx 跟fx的方向相反
),( 跳转到上/下一个语句
* 查找光标所在处的单词,向下查找
# 查找光标所在处的单词,向上查找
`. 跳转至上次编辑位置
在屏幕上移动
H 移动光标到当前屏幕上最上边的一行
M 移动光标到当前屏幕上中间的一行
L 移动光标到当前屏幕上最下边的一行
书签
ma 把当前位置存成标签a
`a 跳转到标签a处
编辑
r 替换一个字符
J 将下一行和当前行连接为一行
cc 删除当前行并进入编辑模式
cw 删除当前字,并进入编辑模式
c$ 擦除从当前位置至行末的内容,并进入编辑模式
s 删除当前字符并进入编辑模式
S 删除光标所在行并进入编辑模式
xp 交换当前字符和下一个字符
u 撤销
ctrl+r 重做
. 重复上一个编辑命令
~ 切换大小写,当前字符
g~iw 切换当前字的大小写
gUiw 将当前字变成大写
guiw 将当前字变成小写
>> 将当前行右移一个单位
<< 将当前行左移一个单位(一个tab符)
== 自动缩进当前行
插入模式
i 从当前光标处进入插入模式
I 进入插入模式,并置光标于行首
a 追加模式,置光标于当前光标之后
A 追加模式,置光标于行末
o 在当前行之下新加一行,并进入插入模式
O 在当前行之上新加一行,并进入插入模式
Esc 退出插入模式
可视模式
标记文本
v 进入可视模式,单字符模式
V 进入可视模式,行模式
ctrl+v 进入可视模式,列模式,类似于UE的列模式
o 跳转光标到选中块的另一个端点
U 将选中块中的内容转成大写
O 跳转光标到块的另一个端点
aw 选中一个字
ab 选中括号中的所有内容,包括括号本身
aB 选中{}括号中的所有内容
ib 选中括号中的内容,不含括号
iB 选中{}中的内容,不含{}
对标记进行动作
> 块右移
< 块左移
y 复制块
d 删除块
~ 切换块中内容的大小写