每次换个操作环境, 都得按自己的习惯重新搭配搭配, 尤其是公司里, 这么多虚拟机, 我使用 vim 有点强迫症.
写了个 Python 小脚本, 针对 ubuntu 系统写的, 可以一次搞定 vim 配置和 bash 下 alias 的设定! 给自己赞一个~
主要是 vim 的括号匹配, tab 键设置, 自动对其, 还有 bash 下省事的操作等功能, 所以说, 世界是靠懒人推动的!
root 用户的配置在 /etc/
, 普通用户的配置文件在 /home/
, 对应的修改locate_file
函数即可
#!/usr/bin/python#coding: utf-8#get_ready for my linux envimport osimport subprocessimport re#get vim ready#suggest you have already installed vimglobal vim_backupglobal bash_backup# config .vimrc to suit needsdef config_vim(vim_file): #make a copy of that global vim_backup vim_backup = vim_file + '.backup' os.system('cp %s %s' %(vim_file, vim_backup)) #if these are not in .vimrc, add it! add_commands = ['set smartcase', 'set mouse=a', 'set autoindent', 'set smartindent', \'set nu', 'set ts=4', 'colorscheme elflord', 'set shiftwidth=4', 'set softtabstop=4','set expandtab', 'set smarttab'] vim_content = open(vim_file).read() for command in add_commands: if command not in vim_content: os.system('echo >> %s "%s"' %(vim_file, command)) #sure these blow are not in .vimrc, just add that map_brackets = '''inoremap jk :winoremap ( ()iinoremap ) =ClosePair(')')"inoremap { {}kAinoremap } =ClosePair('}')inoremap [ []iinoremap ] =ClosePair(']')function ClosePair(char) if getline('.')[col('.')-1 ]== a:char return '\' else return a:char endifendfvmap :S/^/#/vmap XX :S/^##*// '''# print map_brackets if 'inoremap' not in vim_content: os.system('echo >> %s "%s"' %(vim_file, map_brackets))config_vim('/home/fish/tmp')# config .bashrc to suit needsdef config_bash(bash_file): global bash_backup #make a copy bash_backup = bash_file + '.backup' os.system('cp %s %s' %(bash_file, bash_backup)) bash_commands = ['alias ll="ls -alF"', 'alias la="ls -A"', \ 'alias l="ls -CF"', 'alias ..="cd .."', 'alias cp="cp -v"', \ 'alias mv="mv -v"', 'alias py="python"', 'alias df="df -h"', \ 'alias gmt="git commit -m"', 'alias ga="git add ."', \ 'alias gp="git push"'] #add these alias if not in bashrc bash_content = open(bash_file).read() for command in bash_commands: if command not in bash_content: os.system("echo >> %s '%s'" %(bash_file, command))#config_bash('/home/fish/tmp')def locate_file(filename): #this function is used to locate file #下面这句代码信息量很高, 使用重定向输出到stdout, 然后*.stdout.read() 获取 all_file_location = subprocess.Popen('locate %s' %filename, stdout = subprocess.PIPE, shell = True).stdout.read().split('n') #print all_file_location for location in all_file_location: exact_location = re.search('^/home.*%s$' %filename, location) if exact_location != None and os.path.isfile(exact_location.group(0)): return exact_location.group(0) break print 'can not locate the file %s' %filename#mainif __name__ == '__main__': global vim_backup global bash_backup vim_location = locate_file('.vimrc') bash_location = locate_file('.bashrc') print '*' * 22 print 'you are going to change these files:' print vim_location print bash_location print '*' * 22 check = raw_input('Type yes to modify:') if check.upper() == 'YES' or check.upper() == 'Y': config_vim(vim_location) config_bash(bash_location) print 'The files have been modified, and their backup are: \n' print vim_backup print bash_backup print 'The difference before and after modified are blow:\n' print subprocess.Popen('diff %s %s' %(vim_location, vim_backup), \ stdout = subprocess.PIPE, shell = True).stdout.read() print subprocess.Popen('diff %s %s' %(bash_location, bash_backup), \ stdout = subprocess.PIPE, shell = True).stdout.read()
原文地址:Linux下vim bash初始化脚本, 感谢原作者分享。 别为荒漠的艰难而哭泣,只为奔流入海功成名就那一天,