vim编辑器
vi:Visual Interface
vim:VI Improved
全屏编辑器,模式化编辑器
打开文件:
#vim /path/to/somefile
#vim +# filename 光标跳到指定行
#vim + filename 光标跳到尾
#vim + /pattern:光标跳到第一次匹配的位置
vim模式:
命令模式(编辑模式)
输入模式
末行模式
打开时默认为命令模式
编辑模式-->输入模式
i:光标前
a:光标后
o:下一行
O:上一行
I:行首
A:行尾
输入模式-->编辑模式
ESC
编辑模式-->末行模式
:
末行模式-->编辑模式
ESC,ESC
关闭文件:
1.末行模式关闭文件
:q
:wq
:q!
:w
:w!
:wq == :x
2.编辑模式下退出
ZZ:保存并退出
移动光标:
1.h,l,j,k(前面可以加数字指定移动次数)
2.按单词移动
w:移到下一个单词的词首
e:跳到当前或下个单词的词尾
b:跳到当前或前一个单词的词首
支持#数字
3.行内跳转
0:绝对行首
^:第一个非空白字符
$:行尾
4.行间跳转
#G:跳转到#行
末行模式,直接给出行号回车
gg:行首
翻屏
Ctrl+f:向下一屏
Ctrl+b:向上一屏
Ctrl+d:向下半屏
Ctrl+u:向上半屏
删除单个字符
x:
X:
#x:
删除命令:d
d命令跟跳转命令组全使用
#d跳转符:
dw,de,db,dd
末行模式下
:start,endlined 5,10d .,+5d .,100d .表示当前行 $表示最后一行
$-1,$-2,
复制命令:y
用法同命令d
撤消编辑改变:
u:撤消前一次操作
#u
Ctrl+r :反撤消
粘贴命令
p:如果是整行就粘贴到下一行,否则粘贴到光标后面
P:上一行
最后一次删除的内容可以粘贴到其他地方
先删除内容,再转换为输入模式
c
用法同命令d
替换:r
只能替换单个字符
R直接进入替换模式
ESC退出替换模式
重复前一次的操作
.
可视化模式:
v:按字符选取
V:按块选取
查找:
/pattern
?pattern
N,n
查找替换:
末行模式下
范围s///gci
%:表示全文
vim打开多个文件
vim filename1 filename2 ...
:prev,:next,:last,:first
:qa
分屏显示:
:split [filename]
Ctrl+w,s
Ctrl+w,v
切换
Ctrl+w, + k,j
分窗口显示文件
vim -o|-O filename1 filename2
w:
相当于另存为 1,100w filename
r:
把文件插入 r filename
!:
shell command :!ls -l
高级话题
set nu
set nonu
set ic(ignore case)
set indent
set nohl
syntax on
syntax off
配置文件
/etc/vimrc
~/.vimrc
使用脚本选项:
--add user1,will,mac,linux
echo $2 | sed 's/,/ /g' 获取用户列表
echo $2 | tr -s ',' ' '
文件查找:
locate:
非实时,模糊匹配,查找是根据全系统文件数据库进行查找的:
#updatedb,手动生成更新文件数据库
速度快
find
实时
精确
支持众多查找标准
遍历指定目录中的全部文件,速度慢
find 查找路径 查找标准 查找到后的处理动作(默认显示)
匹配标准:
-name 'filename'
文件名通配
*,?,[]
-iname 'filename' 不区分大小写
-regex pattern
-user
-group
-uid
-gid
-nouser
-nogroup
-type
-size
+,-
k,M,G
可以组合条件
-a,-o,-not
-mtime(天)
-ctime
-atime
+,-
5 现在
_____+5_______|_______-5__________|_
-mmin(分钟)
-cmin
-amin
-perm mode:exactly
/:any
-:all
动作:
-print:显示
-ls:类似ls -l
-ok command {} \; {}为文件名占位符(交互,用户确认)
-exec command {} \;
find ./ -perm -066 -exec chmod o-w {} \;
find ./ -type d -ok chmod +x {} \;
xargs:
find /etc/ -size +1M | xargs echo >> /tmp/etc.largefiles
作业
1.查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2.查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3.查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
4.查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5.查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
6.查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
vi:Visual Interface
vim:VI Improved
全屏编辑器,模式化编辑器
打开文件:
#vim /path/to/somefile
#vim +# filename 光标跳到指定行
#vim + filename 光标跳到尾
#vim + /pattern:光标跳到第一次匹配的位置
vim模式:
命令模式(编辑模式)
输入模式
末行模式
打开时默认为命令模式
编辑模式-->输入模式
i:光标前
a:光标后
o:下一行
O:上一行
I:行首
A:行尾
输入模式-->编辑模式
ESC
编辑模式-->末行模式
:
末行模式-->编辑模式
ESC,ESC
关闭文件:
1.末行模式关闭文件
:q
:wq
:q!
:w
:w!
:wq == :x
2.编辑模式下退出
ZZ:保存并退出
移动光标:
1.h,l,j,k(前面可以加数字指定移动次数)
2.按单词移动
w:移到下一个单词的词首
e:跳到当前或下个单词的词尾
b:跳到当前或前一个单词的词首
支持#数字
3.行内跳转
0:绝对行首
^:第一个非空白字符
$:行尾
4.行间跳转
#G:跳转到#行
末行模式,直接给出行号回车
gg:行首
翻屏
Ctrl+f:向下一屏
Ctrl+b:向上一屏
Ctrl+d:向下半屏
Ctrl+u:向上半屏
删除单个字符
x:
X:
#x:
删除命令:d
d命令跟跳转命令组全使用
#d跳转符:
dw,de,db,dd
末行模式下
:start,endlined 5,10d .,+5d .,100d .表示当前行 $表示最后一行
$-1,$-2,
复制命令:y
用法同命令d
撤消编辑改变:
u:撤消前一次操作
#u
Ctrl+r :反撤消
粘贴命令
p:如果是整行就粘贴到下一行,否则粘贴到光标后面
P:上一行
最后一次删除的内容可以粘贴到其他地方
先删除内容,再转换为输入模式
c
用法同命令d
替换:r
只能替换单个字符
R直接进入替换模式
ESC退出替换模式
重复前一次的操作
.
可视化模式:
v:按字符选取
V:按块选取
查找:
/pattern
?pattern
N,n
查找替换:
末行模式下
范围s///gci
%:表示全文
vim打开多个文件
vim filename1 filename2 ...
:prev,:next,:last,:first
:qa
分屏显示:
:split [filename]
Ctrl+w,s
Ctrl+w,v
切换
Ctrl+w, + k,j
分窗口显示文件
vim -o|-O filename1 filename2
w:
相当于另存为 1,100w filename
r:
把文件插入 r filename
!:
shell command :!ls -l
高级话题
set nu
set nonu
set ic(ignore case)
set indent
set nohl
syntax on
syntax off
配置文件
/etc/vimrc
~/.vimrc
使用脚本选项:
--add user1,will,mac,linux
echo $2 | sed 's/,/ /g' 获取用户列表
echo $2 | tr -s ',' ' '
文件查找:
locate:
非实时,模糊匹配,查找是根据全系统文件数据库进行查找的:
#updatedb,手动生成更新文件数据库
速度快
find
实时
精确
支持众多查找标准
遍历指定目录中的全部文件,速度慢
find 查找路径 查找标准 查找到后的处理动作(默认显示)
匹配标准:
-name 'filename'
文件名通配
*,?,[]
-iname 'filename' 不区分大小写
-regex pattern
-user
-group
-uid
-gid
-nouser
-nogroup
-type
-size
+,-
k,M,G
可以组合条件
-a,-o,-not
-mtime(天)
-ctime
-atime
+,-
5 现在
_____+5_______|_______-5__________|_
-mmin(分钟)
-cmin
-amin
-perm mode:exactly
/:any
-:all
动作:
-print:显示
-ls:类似ls -l
-ok command {} \; {}为文件名占位符(交互,用户确认)
-exec command {} \;
find ./ -perm -066 -exec chmod o-w {} \;
find ./ -type d -ok chmod +x {} \;
xargs:
find /etc/ -size +1M | xargs echo >> /tmp/etc.largefiles
作业
1.查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2.查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3.查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
4.查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5.查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
6.查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls