Products
GG网络技术分享 2025-03-18 16:14 0
这一节主要是全面介绍vim(vi的高阶版本),另外现在几乎所有的linux分之版本vi命令都做了vim的软连接,如果验证的话可以再终端执行 ls -l `which vi`
vim软连接vi
所以本节所介绍的vi即vim,两者没有很大区分。
文本编辑器那么多,为什么要学习vi文本编辑器呢?因为:
以上四点中最重要的大概就是第二点了,所以说学会了vi,可以很大程度上避免\"重复造轮子\".怎么才算学会了vi呢,vi有很多有趣的快捷键,有很多你不知道的东西,一起来看一看吧.
熟悉linux的人都知道vi有三种模式,
命令模式(也称一般指令模式)
此模式是执行vi指令后的默认进入的模式,在此模式下可以通过\"上下左右\"移动光标,可以\"删除字符\"或者\"删除整列\",可以\"复制\"和\"黏贴\"
编辑模式(插入模式,或者替换模式)
这个模式是最常用到模式,也是最重要的模式,当执行vi指令编辑文件的时候,按下i,I,o,O,r,R,a,A等任意一个字母都会进入编辑模式,编辑结束之后,按ESC退出,编辑模式
命令行模式
在命令模式下,输入\": / ?\"三者之中任意一个都会进入命令行模式,在此模式当中,可以实现 搜索,读取,存盘,显示行号,退出vi等等
用一张图来看一下三种模式的关系:
三种模式的关系
从图中可以看出,命令模式可以于命令行模式或者编辑模式(插入模式)相互转换,编辑模式于命令行模式无法相互转换.
命令模式下主要使用的功能:
移动光标:
h 或 左方向键 (←) 光标向左移动一个字符
j 或 下方向键 (↓) 光标向下移动一个字符
k 或 上方向键 (↑) 光标向上移动一个字符
l 或 右方向键 (→) 光标向右移动一个字符
如果想要移动多行的话,可以在相应字母前加数字,eg:\"30j\" 或 \"30↓\" 是向下移动光标30行.
[Ctrl] + [f] 屏幕“向下”移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕“向上”移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕“向下”移动半页
[Ctrl] + [u]屏幕“向上”移动半页
0 或功能键[Home]这是数字“ 0 ”:移动到这一列的最前面字符处 (常用)
$ 或功能键[End]移动到这一列的最后面字符处(常用)
nG n 为数字。移动到这个文件的第 n 列。例如 20G 则会移动到这个文件的第 20 列(可配合 :set nu)
gg 移动到这个文件的第一列,相当于 1G 啊! (常用)
搜寻与取代:
/word向光标之下寻找一个名称为 word 的字串。eg:/star就是在当前文件中搜寻star字符串
?word向光标之上寻找一个字串名称为 word 的字串。
n 是搜索下一个的意思,
N 与 n 刚好相反,为“反向”进行前一个搜寻动作
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键字!
:n1,n2s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 列之间寻找 word1 这个字串,并将该字串取代为 word2 !举例来说,在 100 到 200 列之间搜寻 satr 并取代为 STAR 则:\":100,200s/star/STAR/g”。(常用)
删除复制与黏贴:
x, X 在一列字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是倒退键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, “10x”。
dd 删除光标所在的那一整行(常用)
ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据(删除光标之后所有)
d$ 删除光标所在处,到该行的最后一个字符(删除光标那一行)
d0 那个是数字的 0 ,删除光标所在处,到该行的最前面一个字符
yy 复制光标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该列行首的所有数据
y$ 复制光标所在的那个字符到该列行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在光标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)(类似于windows中的ctrl+z)
[Ctrl]+r重做上一个动作。(常用)(类似于windows中的ctrl+y)
编辑模式下使用的主要功能:
i, I 进入插入模式(Insert mode):i 为“从目前光标所在处插入”, I 为“在目前所在行的第一个非空白字符处开始插入”。 (常用)
a, A 进入插入模式(Insert mode):a 为“从目前光标所在的下一个字符处开始插入”, A 为“从光标所在行的最后一个字符处开始插入”。(常用)
o, O 进入插入模式(Insert mode):这是英文字母 o 的大小写。o 为“在目前光标所在的下一行处插入新的一行”; O 为在目前光标所在处的上一行插入新的一行!(常用)
r, R 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
命令模式下使用的主要功能:
:w 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为“只读”时,强制写入该文件。不过,到底能不能写入, 还是跟你对该文件的文件权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过文件,又不想储存,使用 ! 为强制离开不储存盘案。注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有“强制”的意思~
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!若文件没有更动,则不储存离开,若文件已经被更动过,则储存后离开!
:w [filename] 将编辑的数据储存成另一个文件(类似另存新文件)
:r [filename] 在编辑的数据中,读入另一个文件的数据。亦即将 “filename” 这个文件内容加到光标所在列后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个文件。
:! command 暂时离开 vi 到命令行界面下执行 command 的显示结果!例如 “:! ls /home”即可在 vi 当中察看 /home 下面以 ls 输出的文件信息!
:set nu 显示行号,设置之后,会在每一列的字首显示该列的行号
:set nonu 与 set nu 相反,为取消行号!
v 字符选择,会将光标经过的地方反白选择!
V 列选择,会将光标经过的列反白选择!
[Ctrl]+v区块选择,可以用长方形的方式选择数据
y 将反白的地方复制起来
d 将反白的地方删除掉
p 将刚刚复制的区块,在光标所在处贴上!
区块选择
按i进入编辑模式,找到一处空白地方,按ESC退出编辑模式,按p黏贴刚才复制的内容
批量复制
区块选择还有一个重要的功能,批量注释:
在第一列,先按ctrl+v,按向下方向键,选择需要注释的行数,按shift+i,然后shift+#,最后连按两次ESC就可以实现多行注释(小编非常喜欢这个快捷方式,常用到)
vim可以同时编辑多个文件,格式:vim filename1 filename2 ...
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个 vim 的打开的所有文件
示例:
root@ubuntu:/tmp# vi hosts1 hosts2
vim编辑多个文件
输入:n就进入到下一个文件中,输入:N就可以到上一个文件中
在命令行模式下输入:sp是对同一个文件的多窗口操作,:sp filename引入其他文件多窗口操作(多用于对比操作,非常有用)
示例一,:sp
vim多窗口
示例二,:sp filename
vim多窗口不同文件
:sp [filename] 打开一个新窗口,如果有加 filename, 表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示)。
[ctrl]+w+ j [ctrl]+w+↓按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下方向键),则光标可移动到下方的窗口。
[ctrl]+w+ k [ctrl]+w+↑同上,不过光标移动到上面的窗口。
[ctrl]+w+ q 其实就是 :q 结束离开啦! 举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+w+↓ 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+w+q 啊!
以上就是本节所有的vim的功能介绍了,是否对你有帮助呢,如果对您有帮助将万分荣幸,走过路过不要错过,点一波赞,关注一下,后面陆续有Linux知识文章更新,谢谢各位看客!
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。
推荐教程:《Linux运维》
以上就是Linux 中 vim 是什么意思?的详细内容,更多请关注php中文网其它相关文章!
Demand feedback