vim--


目录 vim的使用 退出模式 vim的三种主要模式 命令模式 vim的个性化配置 产生.swp文件的深入解析 一、vim的使用 vim + filename 编辑文件,当文件不存在的时候会在保存退出后自动创建文件 vim + file1 + file2 + ... 编辑多个文件 :next 下一个文件 :prev 上一个文件 :first 第一个 :last 最后一个 :wall 保存所有 :qall 退出所有 :wqall 保存退出所有 vim -o + file1 + file2 多文件水平分割显示 -O + file1 + file2 多文件垂直分割显示 Ctrl + w,然后上或下 屏幕跳转

    Ctrl + w,然后v         一个文件垂直分割
    Ctrl + w,然后s         一个文件水平分割
    :qall                   全部退出

二、退出模式 (保存退出) : 进入退出模式 w 保存 q 退出 q! 强制退出,不保存 w! 强制保存 当文件权限为400,文件的所属人可以使用w! wq,x 保存退出 r + filename 将文件filename内容粘贴到当前文件 w + filename 将当前文件内容存入另一个文件filename ! + command 将命令执行结果直接插入到相应位置 r! + command 将命令输出结果写入在光标所在行的下一新行 .! + command 将命令输出结果替换光标所在行内容 ESC(按一下) 延时2秒进入命令模式 ESC(按两下) 立即进入命令模式 /关键词 向下搜索 ?关键词 向上搜索 %s/要查找的内容/替换为的内容/修饰符 其中的分隔符/可以换成@ 修饰符: % 对全文生效
i 取消大小写 g 全局替换,不加g每一行只替换第一次出现的 三、vim的三种主要模式 退出模式 插入模式 (文本编辑) 命令模式 四、命令模式 (移动光标,复制,剪切,粘贴,撤销,重做,搜索,进入其他模式) h(左)l(右)k(上)j(下) 移动光标 w 单词间移动 H 跳转至页首 L 跳转至页尾 M 跳转至页中间 gg 文件的首行 G 文件的尾行 数字 + G 跳转至第几行 或者 退出模式下 数字 + enter i 在光标所在位置进入插入模式 I 在光标所在行的行首进入插入模式 a 在光标所在位置的后一个字符进入插入模式 A 在光标所在行的行尾进入插入模式 o 在光标所在行的下一行创建空白行并进入插入模式 O 在光标所在行的上一行创建空白行并进入插入模式 ZZ 保存退出 ZQ 不保存退出 u 撤销,最终至文件打开时候的状态 U 直接撤销至文件打开时候的状态(仅对一行内容有效,修改期间换行则失效) . 重复上一个操作 e! 将文件直接恢复到打开状态 v 从光标开始的位置上下左右选中内容(针对字符) V 从光标所在行的位置上下选中整行(针对行) r + 任一字符 替换 R 进入替换模式。可以多个字符修改 dd 剪切光标所在行内容 dw 剪切光标所在的整个单词 yy 复制光标所在行内容 yw 复制光标所在的整个单词 p 在光标所在行的下一行粘贴或者光标所在处向后 P 在光标所在行的上一行粘贴或者光标所在处向前 Ctrl + f 向下翻屏 Ctrl + b 向上翻屏 Ctrl + d 向下翻半屏 Ctrl + u 向上翻半屏 五、vim的个性化配置 /etc/vimrc 针对所用用户 ~/.vimrc 针对指定用户 (先/etc/vimrc再~/.vimrc,后者的效果会覆盖前者的效果) set number 或者 set nu 显示行号 set nonumber 或者 set nonu 取消显示

set ai       自动缩进
set noai     取消缩进 

set list     显示Tab键为^I和换行符为$ 
     可以区分Tab、空格、换行
set nolist  取消
但是上述的配置会在退出之后设置不予保存,可以:
 vim /etc/vimrc
 set ai/nu/list 添加到第一行
 wq保存退出
 永久设置成功

六、产生.swp文件的深入解析 有时候我们利用vim编辑文件,会出现Swap file ".xxx.swp" already exists!的字样。下面来分析这种情况: ①利用watch命令,可以动态的刷新一条命令的输出结果, 在终端1下输入watch -n 1 ls -al /app 每隔一秒刷新/app目录下的情况 ②然后打开另一终端(命名为终端2)输入vim /app/fstab 发现终端1出现了.fstab.swp文件 ③当我们编辑fstab之后,正常保存退出或者直接退出,终端1的.fstab.swp文件不在了 ④我们联想下命令模式下为什么u可以一直撤销至最终打开的状态;当我们对fstab文件不停地大量修改的时候,我们发现终端1的.fstab.swp文件大小一直增大,fstab文件大小不变。 ⑤再打开一终端(终端3),输入killall vim,即表示非正常退出,终端1的.fstab.swp仍然存在 ⑥在终端2输入cat fstab,结果显示的是文件没有修改之前的内容,即没有保存 最终得出:当.fstab.swp存在时,vim fstab会出现Swap file ".xxx.swp" already exists!字样{一种情况是另一个用户正在编辑,一种情况就是上次编辑非正常退出} 其实这个文件存放着上次修改文件但未保存的内容 ⑦如果想正常编辑fstab文件,可以在终端2输入vim -r fstab,出现提示按enter 发现终端1出现了一个.swp.swo文件 这是因为原来的.swp没有删除,再次编辑fstab文件时,会再次出现一个.swp文件,但是.swp文件已经存在,所以只能用另外一个名字.swo(防止重名) ⑧这次:wq正常退出之后,.fstab.swo消失 ⑨对于最后的.fstab.swp文件我们可以rm .fstab.swp删除 也可以vim fstab进入之后输入D选项然后正常保存退出