Linux开发环境之vim
Linux开发环境之vim
@wrote by iNBC form SDUT at 2020.5.19
文本编辑工具
文本编辑工具是用来编写源代码的应用程序。Linux上比较流行的文本编辑工具有VI、Gedit、VIM和Emacs,这几个应用程序在编辑源代码时有各自的优点。下面以VIM和Emacs为例讲解文本编辑工具的用法。
vim
vim简介
- 现在版本的Linux系统中运行的vi实际是vim(Vi Improved),它在vi的基础上增加了很多新的特性和功能
- vim编辑器不是一个格式化文本的程序,它不能调整版面,也不具有复杂的文字处理系统所具有的格式化输出功能
vim工作模式
- vim编辑器没有菜单,只有命令
- vim提供三种基本的工作方式来解决,分别是
- 命令模式(Command Mode)
- 插入模式(Insert Mode)
- 末行模式(Last Line Mode)
- 提醒:在输入vim的命令时,请注意区分大小写
vim的进入与退出
进入vim
$vim
$vim filename
$vim +n filename
$vim +/pattern filename
退出vim
1、 命令模式下
- 在该模式下,连续按两下大写字母Z,
- 若当前文件被修改过,则vim保存该文件后退出,返回到shell;
- 若当前编辑的文件未被修改,则vim直接退出,返回到shell。
2、 末行模式下
(1)若当前文件被修改过,保存后退出
:w <newfile>
:q
(2)如果当前编辑的内容保存到原文件退出,也可以使用如下命令:
:wq
(3)若当前文件被修改过,不保存退出到shell
:q!
(4)若当前文件没有被修改过,从vim退出返回到shell
:q
vim编辑命令
移动光标
(1) 按字符移动光标
(2)按字移动光标
(3)按句子和段移动光标
(4)按行移动光标
数字0
,可将光标移动到当前行行首。
$
键,将光标移到当前行行尾。
G
键将光标移到文件最末行行首,若将光标移动到指定行,可使用:
[行号]G
(5)在屏幕内移动光标
H(Home)
键将光标定位到屏幕顶部一行的最左端;
M(Middle)
键将光标定位到屏幕的中间一行;
L(Lower)
键将光标定位到屏幕底部的一行。
注意,这里的移动是指屏幕内,文件本身不发生滚动。
文本插入
(1) 插入命令(Insert)
- i命令:从光标所在位置前插入文本;
- I命令:将光标移动到当前行首开始插入文本。
(2)附加命令(Append)
- a命令:从光标所在位置后开始追加文本;
- A命令:首先将光标移到所在行的行尾,从行尾开始插入文本。
(3)打开命令(Open)
- o命令:在当前行的下面打开一行;
- O命令:在当前行的上面打开一行。
文本删除
-
命令模式删除
-
末行模式删除
- 在vim末行模式下可实现对文本指定行的删除
:行x,行y d
- 该命令表示删除x至y行的文本内容。例如:
:1, 5 d
- 对行号进行显示:
:set number
- 在vim末行模式下可实现对文本指定行的删除
文本的复制与粘贴
(1)命令模式下的文本复制
yw
:将光标所在位置到字尾的字符复制到缓冲区。
nyw
:将从光标所在位置开始的n个字复制到缓冲区。
yy
:将光标所在的行复制到缓冲区。
nyy
:将光标所在的行开始连续n行复制到缓冲区。
p
:将缓冲区的字符粘贴到光标所在位置。
(2) 末行模式下的文本复制
:行x,行y co 行z
即将文本x-y行的内容,复制到z行下。例如:
:1, 4 co 5
当前编辑的文件1-4行复制到5行下,即原来文件内容新增了4行。
文本移动
(1) 命令模式下文本移动
- 使用文本删除命令将要移动的文本删除。
- 使用光标移动命令将光标移动到目标位置。
- 使用p命令将刚刚删除的文本粘贴在目标位置。
(2) 末行模式下文本移动
:行x,行y m 行z
该命令表示当前编辑的文件x-y行的文本内容移动到z行下。例如:
:1, 4 m 6
当前编辑的文本1-4行移动到6行下。
文本的查找与替换
(1) 命令模式下的文本查找与替换
-
文本的查找
f
命令,在当前行查找指定字符,并将光标移到该字符的下一次出现的位置。t
命令,将光标定位在指定字符下一次出现的前一个字符位置处。/text
,即斜杠(/)后加文本,然后按下Enter键,开始搜索(向下)字符串下一次出现的位置。?text
,即问号(?)后加文本,然后按下Enter键,开始搜索(向上)字符串前一次出现的位置。n
,命令n在不必再输入搜索字符串的情况下,重复上一次搜索。
-
文本的替换
1)取代命令r和R
-r<字符>
,表示用随后输入的字符代替当前光标出的字符。2)替换命令s和S
-s
,表示用随后输入的文本替换当前光标所在的字符。
-S
,表示用新输入的文本替换光标当前行(整行),输入S命令后当前行被删除,工作模式切换到插入模式,等待输入替换文本,若想回到命令模式,一定要按Esc键。3)字替换命令cw和行替换命令cc/C
cw
,表示将某个字的内容用其它字符串替换。cc
,表示将光标所在行整行字符用新输入文本替换,输入cc后,当前行被删除,工作模式被切换到插入模式,等待输入替换文本,若想回到命令模式,一定要按Esc键。
(2) 末行模式下的文本查找与替换
:[g] [address] s/search-string/replacement-string[/option]
其中address表示查找的地址;s为替换命令;search-string表示查找的字符串;replacement-string表示用来替换匹配的search-string
重复与取消
(1)重复命令
在命令模式下按“.
”键即可实现。
(2)取消命令
取消命令,也称为复原命令,它可以取消前一次的误操作。在命令模式下,使用u
命令即可实现。