vim 及 emacs 编辑器的使用笔记

ed 基于单行编辑文本的工具

[tom@tom-virtual-machine ~]$ed 
a				<- 告诉 ed 我要编辑新文件 
tom is good		<- 输入第一行内容 
.				<- 返回 ed 的命令行状态 
i				<- 告诉 ed 我要在最后一行之前插入内容 
hello word
.
c				<- 告诉 ed 我要替换最后一行输入的内容
hello c++
.
w ton.txt		<- 将文件命名为“readme.text”并保存
22
q				<- 完全退出 ed 编辑器 

[tom@tom-virtual-machine ~]$cat ton.txt 
hello c++
tom is good

vim

 正则表达

全局替换%s/str1/str2/g

%s#\(^.*\)\(\/\/.*\)$#\1#g  删除文本中以//开头的注释(全局替换为\1,不能有空格)
%s# \(pattern1\) \(pattern2\)$ # \1 #g

  • \1 变量访问   \(pattern1\)
  • \2 访问第二个括号里匹配的结果

%s#\(^.*\)\(\/\/\).*$#\1\2#g  删除文本中以//开头注释后文本,保留//(全局替换为\1\2
%s# \(pattern1\) \(pattern2\).*$ # \1\2 #g

	%s/\(\d\+\)/\1tom/g					//匹配1次或者多次数字,并在每个数字后面加tom字符串
	%s/[0]\+/tom/g						//匹配1次或者多次数字0

	g/^#/d							 //删除行首为#的行
	g/words/d						//删除包含words的行
	g/^\s*$/d   					//删除空白行(空白)
	%s/\s*$//g						//删除行尾空格(替换为空即为删除)
	.,$s/^\s*//g					//删除当前行到结尾的行首的空格
	
	.,+20s@^@#@g					 //当前行至下20行 行首加#
	8,11s/^/#/g   					//8行到11行行首加#
	.,11s/^/#/g   					//当前行到11行行首加
	s/\<four\>/4/g                  //将所有的four替换成4,但是fourteen中的four不替换(\<匹配单词头,\>匹配单词尾)
	g/tom/.-2,.d				  //删除匹配到tom的行包括前两行
	12,$-1w >> /etc/named.conf  	//将12行到倒数第二行的内容追加到named.conf中
	
ex (命令)模式
vim -e -c 'g/banana/.-2,.d' -c 'wq' $yourfilename
ex -c 'g/banana/?apple?,/orange/d' -c 'wq' $yourfilename
-c 				#可以连接多条命令
#进入sh,退出后回到vim
:sh
    ├─sshd───bash───vim───bash───pstree
[tom@ton ~]$ exit
exit

:so file   读取文件内容再执行文件内容

vim +34 /etc/passwd   直接打开定位到34行
vim操作
命令操作
H,M,L(大写)光标移到屏上,中央,下
zz将当前行移到中央
set mouse=a开启所有鼠标模式
ctrl+v矩选择
shift+v行选择
U(大写)取消目前所有操作
ctrl+r取消撤回
ctrl+g或者:f查看当前文件名
:nohl取消高亮
:e!取消高亮
+11直接进入指定11行
<>回到文件最初始的状态
shift+5在当前行以括号为目标移动
-oor-O同时打开多个文档分屏显示,橫着分或者竖着分
vim配置
set ff=unix       #设置文件格式 
高亮十字架
set cuc      #设置列
set cul 	 #设置行
块选择
help 've'   
set ve=block	(或者set virtualedit=block)    #可以进行矩形选择,光标现在可以放在任何地方,包括行的末尾和制表符tab的中间
set ve=all     
#允许所有模式的虚拟编辑,光标现在可以放在任何地方,这对于在表中选择文本很有用,想象一下一个由表格数据组成的以空格分隔的文本文件。如果要在严格的表格结构中布局纯文本文件,那么使用set ve=all可能会很有用,因为移动到行尾以外,然后切换到插入模式并键入将导致添加额外的空格。
set ve=""       #取消设置

在这里插入图片描述


多行合并成一行

shift+v行选择,再用ctrl+j合并成一行
缓冲区命令有

  • :%j 全部合成一行,之间添加空格
  • %j! 不加空格全部合并成一行
  • j10 当前行至第10行和并一行

" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=v                                                                                                             
set selection=exclusive
set selectmode=mouse,key

下一步,在终端模拟软件使用“鼠标滚动”

emacs

下面操作用到bash界面也适用

操作命令
ctrl+p调用上一行
ctrl+h调用下一行
ctrl+b退后一格
ctrl+f前移一格
ctrl+l向左移一个词
ctrl+r向右移一个词
ctrl+a移到行首
ctrl+e移到行尾
ctrl+u清除行
ctrl+d清除光标后字符
ctrl+h清除光标前字符
ctrl+k清除光标至行尾字符
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值