admin 管理员组

文章数量: 887021

Linux文本编辑器

  • 移动光标
  • 编辑
  • 搜索&替换
  • 删除&复制&粘贴
  • 区块选择
  • 多文件编辑
  • vim环境变量
  • 环境变量
  • 查看文件more、 less、tail、head、cat
    • more
    • less
    • tail
    • head
    • cat

移动光标

1.上下左右四个箭头键
2.h左j下k上l右
数字+hjkl(方向键)
数字+space(空格)   				向右移动N个字符
数字+enter(回车)  				光标向下移动指定行

Ctrl+f  page down				下翻页
Ctrl+b  page up					上翻页
Ctrl+d  						向下移动半页
Ctrl+u	 						向上移动半页

+     							光标移动到非空白字符处的下一行
-      							光标移动到非空白字符处的上一行

0(零)   						相当与home  移动到行首
$         						相当于end    移动到行尾

H   							光标移动到屏幕最上方所在的行首
M  								屏幕中央所在行的行首
L  								最下方所在行的行首

g g  							移动到文件的第一行  相当于1G
G  								光标移动到文件的最后一行
数字+G  							移动到指定行

编辑

I/i								i=光标前插入 I=光标所在行行首
A/a								a=光标后		A=光标所在行行尾
O/o								o=光标所在行下一行插入 O=光标所在行上一行插入

R/r(替换)						r=替换光标所在处的字符 R=从光标所在行开始替换、光标所在处开始向后替换。

# 保存、并退出		
:w  							保存
:w!  							强制保存
:q   							退出
:q!							强制退出
:wq  							保存退出
:wq!  							强制保存退出
:x								相当于wq
ZZ    							相当于wq!
: w /path/filename 				将内容保存到指定位置
:r /path/filename 				将内容从指定文件读取过来

搜索&替换

/keyword 						从光标所在位置向下搜索	n下一个、N上一个
?keyword  						从光标所在位置向上搜索	n上一个、N下一个

:%(全文)  s/old/new/g  		全文搜索替换   
:n1,n2	s/old/new/g    	 		n1与n2之间进行替换
:n  s/old/new/g      			只在n行进行替换
:n1,n2	s/old/new/gc(替换前询问)	n1与n2之间进行替换询问是否替换
:n1,n2 s/^#//  				n1与n2之间的开行头去掉#号
:n1,n2 s/^/#/  				n1与n2之间的开行头加上#号
:g/^\s*$/d 					删除全文中的空行  ^代表开头  \s代表空格  *通配符 $代表结尾

删除&复制&粘贴

X /x  							x=从光标所在处向后删除一个字符 X=从光标所在处向前删除一个字符。    数字+x同上,向前/向后删除n个字符
dG  							删除光标所在行处到最后一行
d1G  							删除光标所在行处到第一行的所有
d$								删除光标所在处到行尾
d0								删除光标所在处到行首
dd								删除光标所在行
数字+dd 							删除n行


yy  							复制光标所在行
数字+yy 							复制n行
y1G 							复制光标所在行处到第一行
yG  							复制光标所在行处到最后一行
y0  							复制光标所在处到行首
y$  							复制光标所在处到行尾

P								粘贴 
p/P  							p=从光标所在行下一行粘贴 P=上一行粘贴
u    							撤销 

区块选择

v		 						字符选择
V		 						行选择
Ctrl+V	 						区块选择
y 		 						复制
d 		 						删除 

eg:
多行注释:
Ctrl + v 进入区块选择模式——>按大些“I”进入插入模式——>输入注释符“#”或者是"//",然后立刻按下ESC(两下)
反注释:
Ctrl + v 进入块选择模式——>选中你要删除的行首的注释符号,——>选好之后按d即可删除注释

多文件编辑

vim filename1  filename2

:n								下一个
:N								上一个
:files 						查看打开的文件
:sp filename 					(上下分屏)切割当前窗口开启新的内容
Ctrl+w 							切换光标位置
:vsp  filename					(左右分屏)
Ctrl+w							切换光标位置

vim环境变量

设置vim环境变量  在用户的家目录下。vimrc(记录用户对vim的设置)

:set nu/:set nonu    			设置行号	
:set hisearch/:set no			搜索是=时是否高亮显示
:set autoindent/:set no			是否自动缩进
:set backup/:set no				是否自动备份
:set ruler/:set no				是否提示光标位置
:syntax on/:syntax off			文档内容是否显示颜色(语法高亮):syn on :syn off
:set paste(不要写到vimrc下) 		解决复制文本格式问题

用家目录下.viminfo 记录vim中使用过的命令/操作

环境变量

$? 								执行上一个指令的返回值
$0 								当前程序的名称
$n 								当前程序的第n个参数,n=1,2,9
$* 								当前程序的所有参数(不包括程序本身)
$# 								当前程序的参数个数(不包括程序本身)
$$ 								当前程序的PID
$@ 								与$*相同,但是使用时加引号,并在引号中返回每个参数
$- 								显示shell使用的当前选项,与set命令功能相同

echo $USER						表示当前用户的登录名称,值与whoami命令的结果一致
echo $UID       				表示当前用户的ID,该变量的值与”id-u”命令的结果一致
echo $SHELL     				表示当前用户的登录Shell,值与”passwd”文件中的Shell字段一致
echo $HOME     					表示当前用户的登录目录(宿主目录),值与”psaawd”文件中home字段一致
echo $PWD     					表示用户当前所在的目录,值与pwd命令的结果一致
echo $PATH      				表示当前用户的命令搜索路径,即用户不指定全路径名执行命令,Shell程序将在哪些目录以及按照何种顺序进行命令的搜索   

查看文件more、 less、tail、head、cat

more

Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。

# 参数:
-num 		一次显示的行数
-d 			提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔'-l 			取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 			计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 			不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c			跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 			当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 			不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern	在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 		从第 num 行开始显示
fileNames 	欲显示内容的文档,可为复数个数

# 实例:
逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。
more -s testfile

从第 20 行开始显示 testfile 之文档内容。
more +20 testfile

# 常用操作命令:
Enter 	向下n行,需要定义。默认为1Ctrl+F 	向下滚动一屏
空格键 	向下滚动一屏
Ctrl+B 	返回上一屏
= 		输出当前行的行号
:f 	输出文件名和当前行的行号
V 		调用vi编辑器
!命令 	调用Shell,并执行命令
q 		退出more

less

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

# 参数说明:

-b <缓冲区大小> 	设置缓冲区的大小
-e 				当文件显示结束后,自动离开
-f 				强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 				只标志最后搜索的关键词
-i 				忽略搜索时的大小写
-m 				显示类似more命令的百分比
-N 				显示每行的行号
-o <文件名> 		将less 输出的内容在指定文件中保存起来
-Q 				不使用警告音
-s 				显示连续空行为一行
-S 				行过长时间将超出部分舍弃
-x <数字>"tab"键显示为规定的数字空格
/字符串:		向下搜索"字符串"的功能
?字符串:		向上搜索"字符串"的功能
n:				重复前一个搜索(与 /? 有关)
N:				反向重复前一个搜索(与 /? 有关)
b 				向上翻一页
d 				向后翻半页
h 				显示帮助界面
Q 				退出less 命令
u 				向前滚动半页
y 				向前滚动一行
空格键 			滚动一页
回车键 			滚动一行
[pagedown]: 	向下翻动一页
[pageup]: 		向上翻动一页

# 实例:

1、查看文件
less log2013.log

2、ps查看进程信息并通过less分页显示
ps -ef |less

3、查看命令历史使用记录并通过less分页显示
[root@localhost test]# history | less
22  scp -r tomcat6.0.32 root@192.168.120.203:/opt/soft
23  cd ..
……省略……

4、浏览多个文件
less log2013.log log2014.log
说明:
输入 :n后,切换到 log2014.log
输入 :p 后,切换到log2013.log

# 附加备注:

1.全屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏

2.单行导航
j - 向前移动一行
k - 向后移动一行

3.其它导航
G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令

4.其它有用的命令
v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件

5.标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
ma - 使用 a 标记文本的当前位置
'a - 导航到标记 a 处

tail

可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

tail				查看日志	 tail -f =tailf
# 参数:
-f 						循环读取
-q 						不显示处理信息
-v 						显示详细的处理信息
-c<数目> 				显示的字节数
-n<行数> 				显示文件的尾部 n 行内容
--pid=PID 				与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 	从不输出给出文件名的首部
-s, --sleep-interval=S-f合用,表示在每次反复的间隔休眠S秒

# 实例:

要显示 notes.log 文件的最后 10 行,请输入以下命令:
tail notes.log

要跟踪名为 notes.log 的文件的增长情况,请输入以下命令:
tail -f notes.log
此命令显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。

显示文件 notes.log 的内容,从第 20 行至文件末尾:
tail -n +20 notes.log

显示文件 notes.log 的最后 10 个字符:
tail -c 10 notes.log

head

head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
# 参数:
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。

# 实例:
#显示 runoob_notes.log 文件的开头 10 行,请输入以下命令:
head runoob_notes.log

#显示 notes.log 文件的开头 5 行,请输入以下命令:
head -n 5 runoob_notes.log

#显示文件前 20 个字节:
head -c 20 runoob_notes.log

cat

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

# 使用权限:
所有使用者

# 语法格式:
cat [-AbeEnstTuv] [--help] [--version] fileName

#参数说明:
-n 或 --number:				由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:	和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:		当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:	使用 ^M- 符号,除了 LFD 和 TAB 之外。
-E--show-ends :			在每行结束处显示 $。
-T--show-tabs: 			将 TAB 字符显示为 ^I-A, --show-all:			等价于 -vET。
-e:						等价于"-vE"选项;
-t:						等价于"-vT"选项;

# 实例:
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
cat -b textfile1 textfile2 >> textfile3

清空 /etc/test.txt 文档内容:
cat /dev/null > /etc/test.txt
cat 也可以用来制作镜像文件。

要制作软盘的镜像文件,将软盘放好后输入:
cat /dev/fd0 > OUTFILE

把 image file 写到软盘,输入:
cat IMG_FILE > /dev/fd0

#注:
1. OUTFILE 指输出的镜像文件名。
2. IMG_FILE 指镜像文件。
3. 若从镜像文件写回 device 时,device 容量需与相当。
4. 通常用制作开机磁片。
		
cat主要有三大功能:
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file

# 创建并写入文件  追加  覆盖:
[root@fox yconfig]# cat > fox.txt <<EOF  #创建/覆盖fox.txt文件;
> 1
> 2
> EOF
[root@fox yconfig]# cat fox.txt 
1
2
[root@fox yconfig]# cat >> fox.txt <<E  #向fox.txt文件追加内容;
> 3
> E
[root@fox yconfig]# cat fox.txt 
1
2
3

#cat命令结合head、tail命令只显示文件的部分内容

#显示文件最后十行
cat  filename |head     

#显示文件的10-30行
cat  filename  |head -n 30 |tail -n +10

#显示文件的第10行之后的30行
cat filename |tail -n  +10 |head -n 30

#显示文件的除最后10行外的数据
cat filename |head -n -10

#显示文件的倒数第10-30行
cat filename |tail -n 30|head -n -10

#显示文件的倒数第十行上面的30行数据
cat filename |head -n -10 |tail -n 30

本文标签: 史上 命令 详细 Linux vim