Linux中设置vim自动在运算符号两边加上空格

Posted 糖炒栗子Sugar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中设置vim自动在运算符号两边加上空格相关的知识,希望对你有一定的参考价值。

vim中设置自动在=+-之类的运算符号左右两边加上空格。原版的vim不带这个功能,写出的代码例如z=x+y,不美观,很多编译器(如VS)能够自动在符号两边加上空格,如z = x + y,看起来比较美观。

只要在.vimrc里面加入如下代码:

"设置= + - * 前后自动空格
"设置,后面自动添加空格
if exists("g:equ")
:inoremap = <c-r>=EqualSign(=)<CR>
:inoremap + <c-r>=EqualSign(+)<CR>
:inoremap - <c-r>=EqualSign(-)<CR>
:inoremap * <c-r>=EqualSign(*)<CR>
:inoremap / <c-r>=EqualSign(/)<CR>
:inoremap > <c-r>=EqualSign(>)<CR>
:inoremap < <c-r>=EqualSign(<)<CR>
:inoremap , ,<space>
endif


function! EqualSign(char)
if a:char  =~ =  && getline(.) =~ ".*("
return a:char
endif 
let ex1 = getline(.)[col(.) - 3]
let ex2 = getline(.)[col(.) - 2]


if ex1 =~ "[-=+><>\/\*]"
if ex2 !~ "\s"
return "\<ESC>i".a:char."\<SPACE>"
else
return "\<ESC>xa".a:char."\<SPACE>"
endif 
else
if ex2 !~ "\s"
return "\<SPACE>".a:char."\<SPACE>\<ESC>a"
else
return a:char."\<SPACE>\<ESC>a"
endif 
endif
endif

就可以了。另外还可以加入如下代码,增加vim的便利性:

"预防手误的杀招
nnoremap : :
cnoremap Q! q!
command Wq wq
command Q q
command WQ wq

set nu 
"代码显示行号
syntax on 
"关键词高亮显示
set cindent 
"c语法自动缩进
set autoindent 
"新行自动缩进
set shiftwidth=4 
"缩进宽度4
set tabstop=4 
"tab键宽度4
set softtabstop=4 
"制表符宽度4

 

以上是关于Linux中设置vim自动在运算符号两边加上空格的主要内容,如果未能解决你的问题,请参考以下文章

如何在 bash 中设置 4 个空格制表符

批处理,如何在for 中的 delims 中设置空格和其他字符做分隔符

Linux vim批量注释

在 TextWrangler 中自动将制表符转换为 4 个空格?

在对数轴刻度中设置指数符号 - Matlab

vim替换tab到4空格