“Linux vi 编辑器”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
vi 编辑器
常用操作
 
(未显示1个用户的20个中间版本)
第1行: 第1行:
=== 文件操作命令 —— ln ===
+
==文本编辑器的作用==
 +
*创建或修改文本文件
 +
*维护Linux系统中的各种配置文件
 +
==Linux中最常用的文本编辑器==
 +
*vi:类Unix系统中默认的文本编辑器
  
 +
*vim:vi编辑器的增强版本,习惯上也称为vi
  
用途:为文件或目录建立链接(Link)
+
<nowiki>alias vi='/usr/bin/vim'
 +
[root@maxin ~]# which vi
 +
alias vi='/usr/bin/vim'
 +
        /usr/bin/vim</nowiki>
  
格式:ln  [-s]  源文件或目录…  链接文件或目标目录
+
==工作模式==
  
常用命令选项
+
[[文件:linux3-2.png]]
*-s:建立符号链接文件(省略此项则建立硬链接)
 
 
 
关于链接文件
 
 
 
*符号链接:指向原始文件所在的路径,又称为软链接
 
*硬链接:指向原始文件对应的数据存储位置
 
*不能为目录建立硬链接文件
 
*硬链接与原始文件必须位于同一分区(文件系统)中
 
 
 
文件内容操作命令 —— cat
 
 
 
用途:显示出文件的全部内容
 
 
 
<nowiki>[root@localhost ~]# cat  /etc/host.conf
 
order hosts,bind
 
[root@localhost ~]# cat  /etc/resolv.conf
 
search localdomain
 
[root@localhost ~]# cat  /etc/resolv.conf  /etc/host.conf
 
search localdomain
 
order hosts,bind</nowiki>
 
 
 
文件内容操作命令 — more、less
 
 
 
用途:全屏方式分页显示文件内容
 
 
 
交互操作方法:
 
 
 
*按Enter键向下逐行滚动
 
*按空格键向下翻一屏、按b键向上翻一屏
 
*按q键退出
 
 
 
less命令
 
 
 
用途:与more命令相同,但扩展功能更多
 
 
 
交互操作方法:
 
*与more命令基本类似,但个别操作会有些出入
 
 
 
文件内容操作命令 ——head、tail
 
 
 
用途:查看文件开头的一部分内容(默认为10行)
 
格式:head -n 文件名
 
 
 
tail命令
 
 
 
用途:查看文件结尾的少部分内容(默认为10行)
 
 
 
格式:tail -n 文件名
 
 
 
tail -f  文件名
 
  
<nowiki>
+
主要操作: i ,/:w ,:q (插入,查找,保存,退出)
[root@localhost ~]# tail -2 /var/log/messages
 
Sep  8 15:49:29 localhost scim-bridge: Cleanup, done. Exitting...
 
Sep 8 15:49:29 localhost Cleanup, done. Exitting...
 
</nowiki>
 
  
文件内容操作命令—— wc
+
===三种工作模式===
  
用途:统计文件中的单词数量(Word Count)等信息
+
1)'''命令模式''':启动vi编辑器后默认进入命令模式,该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作
  
格式:wc  [选项]...  目标文件...
+
2)'''输入模式''':该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改、或者添加新的内容。处于输入模式时,vi编辑器的最后一行会出现“-- INSERT --”的状态提示信息
  
常用命令选项
+
3)'''末行模式''':该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现冒号“:”提示符
*-l:统计行数
 
*-w:统计单词个数
 
*-c:统计字节数
 
  
 +
===模式的切换===
  
<nowiki>[root@localhost ~]# wc /etc/hosts
+
*在命令模式下输入 i(插入)、c(修改)、o(另起一行) 命令时进入输入模式;按 esc 键退回到命令模式。
  4  23 185 /etc/hosts</nowiki>
+
*在命令模式下输入冒号(:)可以进入末行模式。输入完命令按回车,命令执行完后会自动退回命令模式。
  
文件内容操作命令—— grep
+
*如果不确定当前处于哪种模式,按两次 Esc 键将回到普通模式。
  
*用途:在文件中查找并显示包含指定字符串的行
+
==常用操作==
 +
===插入文本命令:i ===
 +
i 命令将文本插入到光标所在位置前。此时 vi 处于文本插入状态,
  
*格式:grep  [选项]...  查找条件  目标文件
+
屏幕最下行显示 “--INSERT--”说明信息。
  
*常用命令选项
+
这时就可以在屏幕上光标活动处任意插入文字。
  
**-i:查找时忽略大小写
+
如果要插入的文字不在一处,还可以使用方向键或分页键移动光标
**-v:反转查找,输出与查找条件不相符的行
 
  
*查找条件设置
+
插入完成后,按 esc 键退回到命令模式。
**要查找的字符串以双引号括起来
 
**“^……”表示以……开头,“……$”表示以……结尾
 
**“^$”表示空行
 
  
归档及压缩命令 —— gzip、bzip2
+
[[文件:linux3-12.png]]
 +
===退出文件===
 +
一般在'''命令模式'''下退出 vi 编辑器。
  
用途:制作压缩文件、解开压缩文件
+
<nowiki>退出命令 说明
 +
:q 如果文件未被修改,会直接退回到Shell;否则提示保存文件。
 +
:q! 强行退出,不保存修改内容。
 +
:wq w 命令保存文件,q 命令退出 vi,合起来就是保存并退出。</nowiki>
  
格式:
+
练习:新建文本文件test.txt ,输入以下文字并退出:
<nowiki>gzip  [-9]  文件名...
 
zip  [-9]  文件名...
 
gzip  -d  .gz格式的压缩文件
 
bzip2  -d  *.bz2格式的压缩文件</nowiki>
 
  
*常用命令选项
 
-9:表示高压缩比,多在创建压缩包时用
 
-d:用于解开已经压缩过的文件
 
 
归档及压缩命令 —— tar
 
 
用途:制作归档文件、释放归档文件
 
格式:tar  [选项]...  归档文件名  源文件或目录 (制作归档文件)
 
              tar  [选项]...  归档文件名  [-C 目标目录]  (解压归档文件)
 
 
常用命令选项
 
<nowiki>-c:创建 .tar 格式的包文件
 
-x:解开.tar格式的包文件
 
-v:输出详细信息
 
-f:表示使用归档文件
 
-p:打包时保留原始文件及目录的权限
 
-t:列表查看包内的文件</nowiki>
 
 
  <nowiki>
 
  <nowiki>
-C:解包时指定释放的目标文件夹
 
-z:调用gzip程序进行压缩或解压
 
-j:调用bzip2程序进行压缩或解压</nowiki>
 
  
=== 文件操作命令 —— which ===
+
public class Test_2 {
  
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
                  int num = 0;
 +
for(int i=1;i<=100;i++) {
 +
if (i%2==0) {
 +
num += i;
 +
}
 +
               
 +
}
 +
              System.out.println(num);
 +
}
  
用途:查找Linux命令文件并显示所在的位置,搜索范围由 PATH 环境变量指定
+
}</nowiki>
  
格式:which  命令或程序名
 
 
<nowiki>[root@localhost ~]# which  mkdir
 
/bin/mkdir
 
[root@localhost ~]# echo  $PATH
 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
 
[root@localhost ~]# which  cd
 
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
 
</nowiki>
 
 
==vi 编辑器==
 
 
[[文件:linux3-2.png]]
 
 
===光标移动===
 
===光标移动===
 
{| class="wikitable"
 
{| class="wikitable"
第165行: 第94行:
 
|-
 
|-
 
| 行号显示 ||:set nu ||在编辑器中显示行号  
 
| 行号显示 ||:set nu ||在编辑器中显示行号  
 +
|-
 
| 行号显示 ||:set nonu ||取消编辑器中的行号显示
 
| 行号显示 ||:set nonu ||取消编辑器中的行号显示
 
|}
 
|}
 +
 +
[[文件:linux5-6.png]]
 +
 +
*着重讲解最常用的操作键(能够迅速提高文本编辑效率),其余的有个印象就可以了
 +
*从本页开始,分4部分简单介绍命令模式中的常用操作,然后集中进行演示
 +
 +
===复制、粘贴、删除===
 +
在命令模式下
 +
*dd : 删除当前光标所在行
 +
*yy : 复制当前行整行的内容到剪贴板
 +
*p :  将缓冲区中的内容粘贴到光标位置处之后
 +
 +
===查找和替换===
 +
查找和替换一般在末行模式下进行:
 +
 +
*<nowiki>:/word</nowiki>  :从上而下在文件中查找字符串“word”
 +
* n :定位下一个匹配的被查找字符串
 +
 +
 +
常见的提示:
 +
*E486: Pattern not found: word :没有找到字符串word
 +
*search hit TOP, continuing at BOTTOM  :查找已到顶端,再查将会回退到底端继续查找。
 +
 +
 +
<nowiki>:% s/old/new/g</nowiki>  在整个文件范围内替换所有的字符串“old”为“new”
 +
<nowiki>:% s/old/new/c</nowiki>  在整个文件范围内替换所有的字符串“old”为“new”,并逐个确认
 +
 +
常见的提示:
 +
 +
*10 substitutions on 2 lines  :在2行中完成了10个替换。
 +
 +
练习:
 +
 +
*在刚才编写的程序中,用vi编辑器显示行号
 +
*跳转到第5行
 +
*查找源代码中所有的num
 +
*将源代码中所有的num替换为Num
 +
*将源代码中所有的Num替换为num,并逐个确认。
 +
 +
==详细操作==
 +
以下命令初学者可以先不看。
  
 
===复制、粘贴、删除===
 
===复制、粘贴、删除===
第172行: 第143行:
 
|-
 
|-
 
! 操作类型 !! 操作键 !! 功能
 
! 操作类型 !! 操作键 !! 功能
 +
|-
 
| 删除 ||x或Del ||删除光标处的单个字符
 
| 删除 ||x或Del ||删除光标处的单个字符
 
|-
 
|-
第191行: 第163行:
 
|}
 
|}
  
 +
===查找和替换===
 +
 +
{| class="wikitable"
 +
|-
 +
! 操作类型 !! 操作键 !! 功能
 +
|-
 +
| 查找 || /word || 从上而下在文件中查找字符串“word”
 +
|-
 +
| 查找 || ?word || 从下而上在文件中查找字符串“word”
 +
|-
 +
| 查找 || n || 定位下一个匹配的被查找字符串
 +
|-
 +
| 查找 || N || 定位上一个匹配的被查找字符串
 +
|-
 +
| 替换 || :s /old/new || 将当前行中查找到的第一个字符“old” 串替换为“new”
 +
|-
 +
| 替换 ||:s /old/new/g  || 将当前行中查找到的所有字符串“old” 替换为“new”
 +
|-
 +
| 替换 || :#,# s/old/new/g || 在行号“#,#”范围内替换所有的字符串“old”为“new”
 +
|-
 +
| 替换 || :% s/old/new/g || 在整个文件范围内替换所有的字符串“old”为“new”
 +
|-
 +
| 替换 || :s /old/new/c || 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
 +
|}
 +
 +
*字符串替换命令相对查找命令的格式要复杂得多,在讲解时需要着重演示字符串替换的范围和替换确认机制
 +
 +
===保存、撤销及退出===
 +
{| class="wikitable"
 +
|-
 +
! 操作类型 !! 操作键 !! 功能
 +
|-
 +
| 撤销 || u || 按一次取消最近的一次操作
 +
多次重复按u键,恢复已进行的多步操作
 +
|-
 +
| 撤销 || U || 用于取消对当前行所做的所有编辑
 +
|-
 +
| 保存 || :w ||
 +
|-
 +
| 保存 || :w /root/newfile || 另存为其它文件
 +
|-
 +
| 退出 || :wq || 保存退出
 +
|-
 +
| 退出 || :q! || 放弃对文件内容的修改,并退出vi
 +
|}
 +
 +
 +
==忘了root密码的解决方法==
 +
1.以单用户方式进入系统,修改root的密码然后再重新启动即可。
  
返回 [[Linux基础]]
+
2.当系统启动到出现GRUB引导画面时,按字母e键,进入GRUB编辑状态。 按键盘上或下键选择相应的引导项,在选择了一个引导项目后接字母e键进入命令行编辑。 在出现的命令行后添加"空格single"并按回车返回编辑状态,再按字母b即可以单用户方式启动系统, 进入系统后使用passwd命令修改root的密码即可。

2019年6月21日 (五) 03:38的最新版本

文本编辑器的作用

  • 创建或修改文本文件
  • 维护Linux系统中的各种配置文件

Linux中最常用的文本编辑器

  • vi:类Unix系统中默认的文本编辑器
  • vim:vi编辑器的增强版本,习惯上也称为vi
alias vi='/usr/bin/vim'
[root@maxin ~]# which vi
alias vi='/usr/bin/vim'
        /usr/bin/vim

工作模式

Linux3-2.png

主要操作: i ,/,:w ,:q (插入,查找,保存,退出)

三种工作模式

1)命令模式:启动vi编辑器后默认进入命令模式,该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作

2)输入模式:该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改、或者添加新的内容。处于输入模式时,vi编辑器的最后一行会出现“-- INSERT --”的状态提示信息

3)末行模式:该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现冒号“:”提示符

模式的切换

  • 在命令模式下输入 i(插入)、c(修改)、o(另起一行) 命令时进入输入模式;按 esc 键退回到命令模式。
  • 在命令模式下输入冒号(:)可以进入末行模式。输入完命令按回车,命令执行完后会自动退回命令模式。
  • 如果不确定当前处于哪种模式,按两次 Esc 键将回到普通模式。

常用操作

插入文本命令:i

i 命令将文本插入到光标所在位置前。此时 vi 处于文本插入状态,

屏幕最下行显示 “--INSERT--”说明信息。

这时就可以在屏幕上光标活动处任意插入文字。

如果要插入的文字不在一处,还可以使用方向键或分页键移动光标

插入完成后,按 esc 键退回到命令模式。

Linux3-12.png

退出文件

一般在命令模式下退出 vi 编辑器。

退出命令	说明
:q 	如果文件未被修改,会直接退回到Shell;否则提示保存文件。
:q! 	强行退出,不保存修改内容。
:wq 	w 命令保存文件,q 命令退出 vi,合起来就是保存并退出。

练习:新建文本文件test.txt ,输入以下文字并退出:


public class Test_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
                   int num = 0;
		for(int i=1;i<=100;i++) {
			if (i%2==0) {
				num += i;
			}
                
		}
               System.out.println(num);
	}

}

光标移动

操作类型 操作键 功能
光标移动 上下左右 上下左右
翻页 Page Up/Page Down 示例
行内快速跳转 Home键 跳转至行首
行内快速跳转 End键 跳转至行尾
行间快速跳转  :0 跳转到文件的首行
行间快速跳转 :$ 跳转到文件的末尾行
行间快速跳转 :n 跳转到文件中的第#行
行号显示 :set nu 在编辑器中显示行号
行号显示 :set nonu 取消编辑器中的行号显示

Linux5-6.png

  • 着重讲解最常用的操作键(能够迅速提高文本编辑效率),其余的有个印象就可以了
  • 从本页开始,分4部分简单介绍命令模式中的常用操作,然后集中进行演示

复制、粘贴、删除

在命令模式下

  • dd : 删除当前光标所在行
  • yy : 复制当前行整行的内容到剪贴板
  • p : 将缓冲区中的内容粘贴到光标位置处之后

查找和替换

查找和替换一般在末行模式下进行:

  • :/word  :从上而下在文件中查找字符串“word”
  • n  :定位下一个匹配的被查找字符串


常见的提示:

  • E486: Pattern not found: word :没有找到字符串word
  • search hit TOP, continuing at BOTTOM  :查找已到顶端,再查将会回退到底端继续查找。


:% s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new” :% s/old/new/c 在整个文件范围内替换所有的字符串“old”为“new”,并逐个确认

常见的提示:

  • 10 substitutions on 2 lines :在2行中完成了10个替换。

练习:

  • 在刚才编写的程序中,用vi编辑器显示行号
  • 跳转到第5行
  • 查找源代码中所有的num
  • 将源代码中所有的num替换为Num
  • 将源代码中所有的Num替换为num,并逐个确认。

详细操作

以下命令初学者可以先不看。

复制、粘贴、删除

操作类型 操作键 功能
删除 x或Del 删除光标处的单个字符
删除 dd 删除当前光标所在行
删除 #dd 删除从光标处开始的#行内容
删除 d^ 删除当前光标之前到行首的所有字符
删除 d$ 删除当前光标处到行尾的所有字符
复制 yy 复制当前行整行的内容到剪贴板
复制 #yy 复制从光标处开始的#行内容
粘贴 p 将缓冲区中的内容粘贴到光标位置处之后
粘贴 P 粘贴到光标位置处之前

查找和替换

操作类型 操作键 功能
查找 /word 从上而下在文件中查找字符串“word”
查找  ?word 从下而上在文件中查找字符串“word”
查找 n 定位下一个匹配的被查找字符串
查找 N 定位上一个匹配的被查找字符串
替换  :s /old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
替换 :s /old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
替换  :#,# s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”
替换  :% s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
替换  :s /old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
  • 字符串替换命令相对查找命令的格式要复杂得多,在讲解时需要着重演示字符串替换的范围和替换确认机制

保存、撤销及退出

操作类型 操作键 功能
撤销 u 按一次取消最近的一次操作

多次重复按u键,恢复已进行的多步操作

撤销 U 用于取消对当前行所做的所有编辑
保存  :w
保存  :w /root/newfile 另存为其它文件
退出  :wq 保存退出
退出  :q! 放弃对文件内容的修改,并退出vi


忘了root密码的解决方法

1.以单用户方式进入系统,修改root的密码然后再重新启动即可。

2.当系统启动到出现GRUB引导画面时,按字母e键,进入GRUB编辑状态。 按键盘上或下键选择相应的引导项,在选择了一个引导项目后接字母e键进入命令行编辑。 在出现的命令行后添加"空格single"并按回车返回编辑状态,再按字母b即可以单用户方式启动系统, 进入系统后使用passwd命令修改root的密码即可。