笔记·vim编辑器
文本查看及处理工具:wc,cut,sort,uniq,diff,patch,head,tail,paste
#wc [-l|-w|-c]
#cut -d: -f1,3-5,7 /etc/passwd
-d CHAR:指定分隔符
-f FIELDS:挑选出的字段
#:指定的单个字段
#-#:连续的多个字段
#,#:离散的多个字段
--output-delimiter=STRING指定输出分隔符
#df | tr -s ' '|cut -d' ' -f5 |tr -dc "[0-9\n]"
#df | tr -s ' ' % |cut -d% -f5 |tr -d '[:alpha:]'
#df | tail -n +2|tr -s ' ' % |cut -d% -f5
#df | tail -n +2|tr -s ' ' |cut -d' ' -f5 |tr -d %
#sort -t: -k3 /etc/passwd
-n:基于数值大小进行排序
-t CHAR:指定分隔符
-k FIELDS:用于排序的字段
-r:逆序排序
-u:连续且重复的行只保留一次
#df | tr -s " " %|cut -d% -f5|tr -d '[:alpha:]' | sort -nr
#uniq:报告或移除重复的行
-c:统计重复出现的次数
-u:只显示没有重复的行
-d:只显示有重复的行
#ss -nt|tail -n+2 |tr -s ' ' : |cut -d: -f6|sort|uniq -c|sort -nr |head -n2
#cat test1.txt test2.txt | sort |uniq -d //取文件相同行
#cat test1.txt test2.txt | sort |uniq -u //取文件不同行
#diff -u test test.new > test.patch //将两个文件的不同生成补丁文件
-u:使用unfied机制,即显示要修改的行的上下文,默认为3行
#patch -i test.patch test //将补丁打到test文件中
-R:逆向补丁,例如:patch -R -i test.patch test
#patch -p0 testfile1 testfile.patch
#patch -b f1.txt f.patch
#head -n <k:前三行|-k:排除后三行>
#tail -n <k:后三行|+k:排除前三行>
#paste -d: user.txt pass.txt|chpasswd //合并文件
打开文件
#vim FILE
+#:打开文件后,直接让光标处于第#行行首;
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
编辑模式:默认模式
编辑模式-->输入模式:
i:光标所在处输入;
a:光标所在处后方输入;
o:光标所在处下方新开一行输入;
I:光标所在行的行首输入;
A:关闭所在行的行尾输入;
O:光标所在处上方新开一行输入;
输入模式-->编辑模式
ESC
编辑模式-->末行模式
:
末行模式-->编辑模式
ECS
关闭文件
ZZ:保存并退出
:q 退出
:q! 不保存强制退出
:wq 保存并退出
:x 保存并退出
:w /PATH/TO/SOMEFILE 保存到其他文件,即另存为
光标跳转
字符间跳转
k j h l:上 下 左 右
10l:向右跳10字符
2j:向下跳2行
#COMMAND:跳转指定#个字符;
单词间跳转
w:跳到下一个单词的词首
b:当前或前一个单词词首
e:当前或后一个单词词尾
#COMMAND:跳转指定#个单词;
行首行尾跳转
^:跳转至行首第一个非空白字符;
0:跳转至行首;
$:跳转至行尾;
行间跳转
#G:跳转至第#行;
1g或gg:跳转至第一行
G:跳转至最后一行
句间跳转
)
(
段间跳转
}
{
翻屏操作
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Enter:按行向后翻
vim编辑命令
字符编辑:
x:删除光标所在处字符;
#x:删除光标所在处起始的#个字符;
xp:交换光标所在处的字符与其后面的字符的位置;
替换编辑:
r:替换光标所在处的字符,r后需要跟一个字符;
删除命令:
d:删除命令;
d$:删除当前字符到行尾的字符;
d^:删除光标前的字符至行首的字符;
dw:删除当前单词;
dd:删除当前行;
#COMMAND:删除多个指定的字符或单词或行;
粘贴命令:
小写p:缓冲区的内容为整行,则粘贴在光标所在行的后方;否则,粘贴在当前位置;
大写P:缓冲区的内容为整行,则粘贴在当前位置;否则,粘贴在光标所在行的后方;
复制命令:
y:复制,工作行为与d相似
y$、y^、yw、yy、#yy
改变命令(change,c):
编辑模式-->输入模式,实现删除操作;
c$、c^、c0、cb、ce、cw、cc、#cc
可视化模式:
v:按字符选定
V:按行选定
结合编辑命令使用:d、c、y
撤销操作:
u:撤销此前的操作;
#u:撤销此前#个操作;
撤销此前的撤销;
Ctrl+r
重复执行某个操作:
.
vim末行命令
地址定界:
:start[,end]
#:特定的第#行;
.:当前行;
$:最后一行;
#,#:指定范围;
#,+#:从第#行开始往后加#行;
%:全文;
/pattern/:从光标所在到文末第一次被指定的pattern匹配到的行;
编辑命令一同使用:d、y、c
w PATH:将范围内的文本保存至指定文件中;
r PATH:将指定文件中的内容写入到指定位置;
查找:
/PATTERN:从当前向文件尾部查到匹配到的所有字符串;
?PATTERN:从当前向文件首部查到匹配到的所有字符串;
n:下一个
N:上一个
查找并替换:
s:末行模式的命令,使用格式:s/要查找的内容/替换为的内容/修饰符
要查找到内容:可使用正则表达式;
替换为的内容:不能使用正则表达式,但是可以引用;
修饰符:
i:忽略大小写;
g:全局替换;
可以把分隔符替换为其他非常用字符;
s@@@
s###
范例:
%s@\<t\([[:alpha:]]\+\)\>@T\1@g
%s@\<t\([[:alpha:]]\+\)\>@er@g
%s@^[[:space:]]\+@@
%s@^[[:space:]]\+[^[:space:]]@#&@g
%s@\(enabled\|gegcheck\)=0@\1=1@g
vim多文件功能
多文件:
#vim File1 File2 ...
文件间切换:
:next 切换到下一个文件
:prev 切换到上一个文件
:last 切换到最后一个
:first 切换到第一个
退出所有文件:
:wqall 保存所有文件并退出
多窗口:
#vim -o File1 File2 ...
-o:水平分割
-O:垂直分割
Ctrl+w,松开后按向上或向下的箭头。
Ctrl+w,松开后按s单文件中再次水平切割。
Ctrl+w,松开后按v单文件中再次垂直切割。
定制vim工作特性:在末行模式下的设定只对当前vim进程有效;
永久生效:
/etc/vimrc
~/.vimrc
行号:
:set nu 显示行号
:set nonu 取消显示行号
匹配高亮:
:set showmatch 高亮显示
:set noshowmatch 取消高亮显示
自动缩进:
:set ai
:set unset
搜索高亮:
:set hlsearch
:set nohlsearch
语法高亮:
:syntax on
:syntax off