vim常用命令和配置

一、配置

可在.vimrc文件加入以下内容,不需冒号,作基本配置使用,每次打开都生效;
也可在当前打开的文件中Normal模式下输入:命令,作临时配置使用。

:set tabstop=4 "设置tab键为4个空格
:set shiftwidth=4  "设置当行之间交错时使用4个空格
:set expandtab "将tab键替换为空格
:set autoindent
:set hlsearch "高亮显示匹配项
:set incsearch "显示更多的匹配项
:set smarttab
:set paste "粘贴模式(粘贴时不会每行都自动再加上tab缩进)
:set nopaste "非粘贴模式,即普通模式
:%retab! "替换所有tab为空格(是立即全局执行一次)
:%!xxd "以十六进制模式显示(对二进制码流等文件方便)
:set fileformat=unix "转换windows文件为linux文件(替换结束符,也可把^M这种显示去掉)
set backspace=indent,eol,start 
"这条set backspace命令告诉Vim在Insert模式下退格键何时可以删除光标之前的字符.
"选项中以逗号分隔的三项内容分别指定了Vim
"缩进,断行,以及开始进入Insert模式之前的位置
"此解释来源于https://blog.51cto.com/lilinji/1199999
set ruler
filetype plugin indent on
set cindent
set autoindent

===================================================================

二、格式化文本

Normal模式下输入gg=G可格式化文本(即自动缩进重新排版),此命令不需冒号:

设置makefile文件的tab不被空格替换
(在.vimrc文件加入以下语句,参考自https://blog.csdn.net/haifeng_gu/article/details/73258714):
autocmd FileType makefile set noexpandtab 试了这一条,没有起作用
autocmd FileType make set noexpandtab 这一条最终起作用了

===================================================================

三、命令保存为脚本与执行脚本

命令:vim -w my_script file1.txt
会打开file1.txt,里面执行的任何命令操作都会保存到脚本my_script文件里

命令:vim -s my_script file2.txt
会打开文件file2.txt,并执行脚本my_script里的命令(相当于把对file1.txt执行过的操作在file2.txt里执行一次)

这两个命令搭配起来比较适合放在第3方脚本里来对批量文件执行同样vim编辑

四、指定范围搜索或替换

a、比如想当前行到有)的行之间进行替换可以如下:

:.,/(/s+oldtxt+newtxt+gc

/(/是一个偏移,放在这里就是指有(的行。
+oldtxt+newtxt+这里用+号代替了常见的/oldtxt/newtxt/形式
b、标记特定区域,只在该区域内替换
比如当前行标记为a,即normal模式下输入ma
去到另一个地方,标记为b,即normal模式下输入mb,

:'a,'bs/oldtxt/newtxt:gc  '可标记a到标记b的区域里的oldtxt替换掉

其中‘a的’是顿号,但是若只是想当前地方跳转到a标记处,则是normal模式下输入`a,这个`就是Esc键下面那个符号

五、大小写替换

方法1:

:%s/ABC/\L&/g '把ABC变小写
:%s/abc/\U/g ‘把abc变大写

方法2(使用vim内置函数):

:%s/ABC/\=tolower(submatch(0))/g ‘把ABC变小写
:%s/abc/\=toupper(submatch(0))/g '把abc变大写

更多内置函数参考:vim 内置函数

六、替换时做一些简单运算

替换数字为它本身值+1
下例是替换十六进制的数据为其+1后的值,替换后同样为十六进制

:%s/\d\+/\=printf("%02x",submatch(0)+1)/g 

将十进制数替换为十六进制

:%s/\(\d\+\)/\=printf("%x",submatch(0))

将当前行往后10行的data0依次替换为data0,data1……data9

:let n=0 | .,+10g/data\zs0\ze/s//\=n/ | let n+=1

七、systemverilog语法高亮

按以下网址内容操作
vim官方配置sv语法高亮
安装方法:
在这里插入图片描述

八、Vim缓冲区内容作为标准输入/标准输出

来自python执行cmd命令行_Vim执行shell命令及使用Vim批量更改文件名

在用 :!{cmd} 时,Vim 会回显 {cmd} 命令的输出,可以用 :read !{cmd} 命令把 {cmd} 命令的输出重定向当前Vim缓冲区中,或使用 :write !{cmd} 把当前Vim的缓冲区内容作为指定 {cmd} 的标准输入。

例如,在Vim命令行模式下执行命令 :write !sh 后会在 shell 中执行当前缓冲区中的每行内容。

假如当前所在目录包含如下的文件:

1.cc
2.cc
3.cc

我希望把 .cc 后缀更名为 .cpp,可以在Vim中通过 :read !ls *.cc 命令将shell命令 ls .cc 的输出重定向到Vim缓冲区中,再使用Vim替换命令 :%s/(.).cc/mv & 1.cpp 生成shell重命名命令mv,最后使用 :write !sh 执行当前缓存区中的每一行,从而达到对所有 .cc 文件重命名为 .cpp 的目的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值