Linux下vim bash初始化脚本

每次换个操作环境, 都得按自己的习惯重新搭配搭配, 尤其是公司里, 这么多虚拟机, 我使用 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初始化脚本

相关文章:

你感兴趣的文章:

标签云: