vim 特殊用法用法

启动时间分布

vim --startuptime vim.log

执行当前vim脚本的代码

使用@命令,@命令用于执行寄存器中的vim命令,把当前代码copy到寄存器 {0-9a-z".=*+},再使用@{0-9a-z".=*+} 执行寄存器的内容。

删除行尾的^M:%s/ //g

重复Ex命令

. Repeat last change, with count replaced with [count].
@: Repeat last command-line [count] times

列编辑模式

删除列
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.d 删除。

插入列
插入操作的话知识稍有区别。例如我们在每一行前都插入"() ":
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.SHIFT+i(I) 输入要插入的内容。
4.ESC 按两次,会在每行的选定的区域出现插入的内容。

格式化json 文件

%!python -m json.tool

在wq保存时发现权限不足

这时候输入以下命令解决,(w 后面有空格)
w !sudo tee %

命令解析:
w !{cmd} 指示 保存时执行额外命令;
tee 用于将输入定位到文件或管道,%指当前管道。

vim的next 命令

vim的grep

:grep xxx -r dir
然后输入

:copen
就能看到结果了,切换到 quickfix list,选择要查看的指定文件,然后回车即可

vim 查找相同的两行,以及删除重复行

要查找相同的两行,先将内容排序,然后查找前一行等于后一行者

:sort

/^(.+)$ 1

删除重复行(先排一下序):

:sort
:g/^(.+)$ 1/d

用VIM设置UTF-8编码的BOM标记

  1. 去掉BOM标记:

:set nobomb

  1. 加上BOM标记:

:set bomb

  1. 查询当前UTF-8编码的文件是否有BOM标记:

:set bomb?

  1. 更高级一点的:

:%!xxd "以16进制模式打开文件
:%!xxd -r "将以16进制格式打开的文件返回文本模式编辑

所以,先用第一个命令将文件以16进制打开,删除文件开头的EF BB BF,然后再用第二个命令返回文本模式。

解决linux下vim乱码的情况:(修改vimrc的内容)

全局的情况下:即所有用户都能用这个配置

文件地址:/etc/vimrc

在文件中添加:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

命令模式下粘贴寄存器内容

vim中,复制一些内容就是将内容放到寄存器里。
而在命令模式下粘贴寄存器的内容方法是CTRL-R加寄存器的名字。

复制之后的内容一般在寄存器"中。

举例说明:

比如visual模式下复制了内容:aaabbb。
然后希望替换这些内容,于是输入命令:%s/
这个时候使用Ctrl-R在按",那么复制的内容就会出现在命令行中。

shell脚本执行错误 $' ':command not found

存现这种错误是因为 编写的 shell脚本是在win下编写的,每行结尾是 的Unix 结果行是 所以在Linux下运行脚本 会任务 是一个字符,所以运行错误,需要把文件转换下

方法一、

sed -i 's/ //' 脚本名

方法二、

yum -y install dos2unix

dos2unix 脚本名

原文地址:https://www.cnblogs.com/ims-/p/10842032.html