Linux学习—vim大全
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习—vim大全相关的知识,希望对你有一定的参考价值。
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选项然后正常保存退出
以上是关于Linux学习—vim大全的主要内容,如果未能解决你的问题,请参考以下文章