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 | 在当前行以括号为目标移动![]() |
-o or-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 | 清除光标至行尾字符 |