• vim:全屏编辑器,模式化编辑器

  • vim模式:编辑模式(命令模式)   输入模式   末行模式

  • 模式转换:

  • 编辑--输入:i 在当前光标所在字符的前面转为输入模式。  a 在当前光标所在字符的后面转为输入模式。  o 在当前光标所在行的下方,新建一行并转为输入模式。  I 在当前光标所在行的行首转为输入模式。  A 在当前光标所在行的行尾转为输入模式。  O 在当前光标所在行的上方,新建一行并转为输入模式。

  • 输入--编辑:ESC

  • 编辑--末行:(只能从编辑模式转换到末行模式) :冒号

  • 末行--编辑:ESC

  • 一.打开文件

  • vim +(数字) file :打开文件直接让光标在多少行 +若不接数字,则默认为尾行  vim +/pattern file :打开文件定位至第一次被pattern匹配到的行的行首

  • 二.关闭文件

  • 1.末行模式关闭文件:w 保存 w!强行保存 q 退出 wq 保存并退出 q! 强制不保存退出

  • 2.编辑模式下退出:ZZ 保存退出

  • 三.移动光标(编辑模式)

  • 1.逐字符移动:h 左 l 右 j 上 k 下  (#h:移动#个字符)

  • 2.以单词为单位移动:w 移至下一个单词的词首 e 移至当前单词的词尾 b 移至当前单词的词首 (#w:移动#个单词)

  • 3.行内跳转:0 绝对行首 ^ 行首的第一个非空白字符 $ 绝对行尾

  • 4.行间跳转:G 最后一行 g 行首 (末行模式:行号 回车 ,#G 跳转至第#行)

  • 四.翻屏

  • ctrl + f 向下翻一屏  ctrl + b 向上翻一屏 ctrl + d 向下翻半屏 ctrl + u 向上翻半屏

  • 五.删除单个字符

  • x 删除光标所在处的单个字符  #x 删除光标所在处及向后共#个字符

  • 六.删除命令

  • #d 跳转符  #dw  #de  #db  dd 删除当前光标所在行 #dd 删除包括当前光标所在行内的#行  在末行模式中  start,endd(3,4d)回车删除3行和4行  . 表示当前行  $ 表示最后一行  +# 表示向下的#行  $-1 表示倒数第一行

  • 七.粘贴命令

  • p (小写)如果删除的或复制的是整行内容,则粘贴至光标所在行的下方.如果删除的或复制的内容为非整行,则粘贴至光标所在字符的后面  P (大写)如果删除的或复制的是整行内容,则粘贴至光标所在行的上方.如果删除的或复制的内容为非整行,则粘贴至光标所在字符的前面

  • 八.复制命令

  • (y用法同d 命令) #yw  #ye  #yb  yy  #yy

  • 九.修改命令

  • (c用法同d命令)  #cw  #ce  #cb  cc  #cc

  • 十.替换

  • r 只能替换单个字符  R 替换模式

  • 十一.撤消

  • u 撤消前一次的编辑操作,连续u命令可撤消此前的最多50次操作 (也可以用#u) ctrl + r 还原撤消的最近一次撤消

  • 十二.重复前一次编辑操作 '.'

  • 十三.可视化模式

  • v  按字符选取   V 按矩形块选取

  • 十四.查找

  • /pattern  ?pattern  n 下一个  N 上一个  (支持正则表达式)

  • 十五. 查找并替换

  • 在末行模式下使用s命令 s#pattern#string#g/i   指定行查找替换  r1,r2 s#pattern#string#g/i  % 表示全文

  • 十六.如何使用vim编辑多个文件

  • vim file1 file2 默认显示第一个文件 末行模式:next 切换下一个文件  prev 回到上一个文件(回到之前需要保存修改) last 切换到最后一个文件   first  切换到第一个文件  qa 全部退出

  • 十七.分屏显示一个文件

  • ctrl + w   s 水平拆分窗口  ctrl + w  v 垂直拆分窗口   ctrl + w 上/下切换窗口  q 退出 qa全部退出

  • 十八.多窗口显示多个文件

  • vim -o file1 file2 水平显示  vim -O file1 file2 垂直显示

  • 十九.将当前文件中部分内容另存为另外一个文件

  • 末行模式中 r1,r2 w 路径文件名

  • 二十.将另外一个文件内容填充在当前文件中

  • r 路径文件名  填充到光标行的下一行

  • 二十一.跟shell交互

  • ! commad 回车 回车(退出)

  • 二十二.vim设定

  • 1.显示或取消显示行号  set nu(显示)  set nonu(不显示)

  • 2.忽略或区分字符大小写  set ic(忽略)  set noic(不忽略)

  • 3.设定自动缩进  set ai  set noai

  • 4.高亮显示匹配到的文本  sed hlsearch   sed nohlsearch

  • 5.语法高亮  syntax on  syntax off

  • 二十三.配置文件

  • /etc/vimrc :全部用户生效

  • ~/.vimrc :只对当前用户生效

  • (注:非法退出vim时出错 :vim -r 打开文件正确保存后 再删除 该文件以 .swp结尾的文件)

  • 测试:

  • 整数测试:-le -ge -lt -gt -eq -ne

  • 字符测试:==  !=  >  <  -n  -z

  • 文件测试:-e  -f  -d  -r  -w  -x

  • 组合测试:-a 与关系  -o 或关系  !非关系 若:[! \(** -o **\)]==! ** -a ! **

  • 文件查找:

  • locate 非实时,模糊查找是根据全系统问家数据库进行的,速度快(若没有数据库,则可以手动生成文件数据库,时间长 updatedb)

  • find:find  查找路径  查找标准  查找到以后的处理动作

  • 实时查找,精确,速度慢(遍历指定目录中的所有文件完成查找,支持很多查找标准)

  • 查找路径:默认为当前目录

  • 查找标准:默认为指定路径的所有文件

  • 处理动作:默认为显示打印

  • 匹配标准:-name ”filename“ 对文件名作精确匹配(文件名同配:* ? []) -iname ”不区分大小写“  -regex pattern 基于正则表达式进行的文件名匹配  -user username 根据属主查找  -group groupname 根据属组进行文件名匹配  -uid  uid:根据uid进行查找  -gid gid:根据gid进行查找  -nouser 查找没有属主的文件  -nogroup 查找没有属组的文件  -size(+/- #K #M #G 默认为字节 #(数字) ) 根据文件大小进行查找  -type #(d f c b l p s) 根据文件类型进行查找  -mtime -ctime -atime :根据以天为单位进行查找文件的时间戳(+/-)(-mmin ...以分钟为单位...) -perm -/mode 以文件权限查找 -文件权限能完全包含此mode时才能被匹配 / 9位中任意一位被匹配都行

  • 组合条件:-a 与 -o 或 -not 非

  • 处理动作:默认为 -print :打印显示  -ls :类似-ls -l 的形式显示每一个文件的详细内容 , -ok commad \;每一个操作都需要用户的确认  -exec commad {}(引用找到的文件) 不需要用户确认 (例:find ./ -perm -001 -exec mv {} {}.new\;)

  • 特殊权限:

  • SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者的

  • SGID:运行某程序时,相应进程的属组是程序文件自身的所属基本组 ,而不是启动者的

  • sticky:在一个公共目录,每个用户都可以创建文件,但只能删除自己创建的文件

  • chmod u+s,g+s,o+t file 若file文件原有x权限,最后一位显示为s否则显示为S