zoukankan      html  css  js  c++  java
  • vim编辑器的使用--转自MJ学长

    一、引言

       1. vim是一款功能强大的文本编辑器,如果使用熟练,将会有效帮助我们提高编辑文本、程序的效率。vim编辑器的上手使用门槛比较高,很多人怯于要记很多命令,往往在学习的初期阶段就望而却步。

       2. vim的学习需要不断的练习、使用,只有强迫自己不断的使用,才能在使用的过程中记住那些看似复杂的命令,但是如果一旦习惯了vim的编辑模式,就会觉得vim真的会帮助我们提高文本编辑效率。

       3. 关于vim学习资料,其本自带的vim帮助文档,就足够丰富,可以在学习的过程不断查阅。另外,也有一个简化的入手文档即vimtutor,在命令行输入vimtutor,便可以开始学习,大概不到一个小时就可以学习并练习完。

    二、配置

       1. vim的配置文件有全局配置(一般在目录/etc/vim/vimrc)和个人配置(/home/username/.vimrc)下,全局配置文件对系统所有的用户都生效,个人配置文件只对用户自的使用环境生效

       2. vim的配置文件一般网上都会有别人已经设置好的配置,可以复制到自己的个人配置文件里直接使用,也可以根据需要自己定制自己的使用环境

    三、配置脚本

      1.在之前的使用过程中,本人参考资料根据个人需要配置了一份自己的配置脚本,其中大部分都有注释说明,可以根据需要自己配置。注:"开始的在vimrc中表示注释

            set termencoding=utf8

    set hlsearch
    "行号
    set nu
    "语法高亮
    syntax on
    "启用鼠标
    set mouse=v
    "自动缩进
    "突出显示列
    "set cursorcolumn
    "突出显示当前行
    set cursorline
    "高亮显示当前行
    "hi CursorLine cterm=NONE ctermbg=magenta ctermfg=white guibg=darked guifg=white
    set autoindent
    "set guifont=Monaco:h80 " 字体 && 字号
    "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
    set nocompatible
    "依据上面的对齐格式,智能的选择对起方式,对于类似C语言编写上很有用
    set smartindent
    "设置缩进
    set tabstop=4
    set softtabstop=4
    set shiftwidth=4
    "在状态栏显示正在输入的命令
    set showcmd
    "左下角显示当前vim模式
    set showmode
    " 代码折叠
    set foldenable
    set foldmethod=indent
    set foldlevel=99
    "显示标尺
    set ruler
    "打开文件类型自动检测功能
    filetype on
    set completeopt=longest,menu
    "启动自动补全
    "filetype plugin indent on
    "在分割的窗口间移动
    :nnoremap <C-h> <C-w>h
    :nnoremap <C-j> <C-w>j
    :nnoremap <C-k> <C-w>k
    :nnoremap <C-l> <C-w>l

    "当新建 .h .c .hpp .cpp 等文件时自动调用SetTitle 函数
    autocmd BufNewFile *.[ch],*.php,*.cpp exec "call SetTitle()"
    function SetComment()
    call setline(1,"/*========================================================")
    call append(line("."), "* Copyright (C) ".strftime("%Y")." All rights reserved.")
    call append(line(".")+1, "* ")
    call append(line(".")+2, "* 文件名称:".expand("%:t"))
    call append(line(".")+3, "* 创 建 者:mj")
    call append(line(".")+4, "* 创建日期:".strftime("%Y年%m月%d日"))
    call append(line(".")+5, "* 描 述:")
    call append(line(".")+6, "*")
    call append(line(".")+7, "================================================================*/")
    endfunction
    "定义函数SetTitle,自动插入文件头
    function SetTitle()
    call SetComment()
    if expand("%:e") == 'php'
    call append(line(".")+8, "#ifndef _".toupper(expand("%:t:r"))."_H")
    call append(line(".")+9, "#define _".toupper(expand("%:t:r"))."_H")
    call append(line(".")+10, "#ifdef __cplusplus")
    call append(line(".")+11, "extern "C"")
    call append(line(".")+12, "{")
    call append(line(".")+13, "#endif")
    call append(line(".")+14, "")
    call append(line(".")+15, "#ifdef __cplusplus")
    call append(line(".")+16, "}")
    call append(line(".")+17, "#endif")
    call append(line(".")+18, "#endif //".toupper(expand("%:t:r"))."_H")
    elseif expand("%:e") == 'h'
    "call append(line(".")+8, "#pragma once")
    elseif &filetype == 'c'
    call append(line(".")+8,"#include <stdio.h>")
    call append(line(".")+9,"#include <stdlib.h>")
    call append(line(".")+10," ")
    call append(line(".")+11," ")
    call append(line(".")+12,"int main() ")
    call append(line(".")+13,"{")
    call append(line(".")+14," return EXIT_SUCCESS;")
    call append(line(".")+15,"}")
    elseif &filetype == 'cpp'
    "call append(line(".")+8, "#include "".expand("%:t:r").".h"")
    call append(line(".")+8, "#include <iostream>")
    call append(line(".")+9, "#include <string>")
    call append(line(".")+10,"#include <cstdlib>")
    call append(line(".")+11," ")
    call append(line(".")+12,"using namespace std;")
    call append(line(".")+13," ")

    call append(line(".")+13," ")
    call append(line(".")+14,"int main() ")
    call append(line(".")+15,"{")
    call append(line(".")+16," return EXIT_SUCCESS;")
    call append(line(".")+17,"}")
    endif
    endfunction
    autocmd BufNewFile *.sh exec "call SetBashTitle()"
    function SetBashTitle()
    call setline(1,"#!/bin/bash")
    endfunction
    "自动补全
    ":inoremap ( ()<ESC>i
    ":inoremap ) <c-r>=ClosePair(')')<CR>
    ":inoremap { { }<ESC>
    :inoremap } <c-r>=ClosePair('}')<CR>
    :inoremap [ []<ESC>i
    :inoremap ] <c-r>=ClosePair(']')<CR>
    :inoremap ' ''<ESC>i
    function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
    return "<Right>"
    else
    return a:char
    endif
    endfunction

    "设置退格键
    set backspace=indent,eol,start

    2. vim主题配置

      vim自带了很多主题设置,一般可以在/usr/share/vim/vim72/colors目录中查看当前版本的vim的颜色方案,可以在.vimrc中用colorscheme  darkblue或者其主题进行vim的主题配置。

      也可以按照脚本配置其不同或稍复杂的颜色方案,下面一段脚本就是根据每天的不同时间段配置vim的颜色方案

      

         "根据时间段不同,设置vim的不同配色方案

    function SetTimeOfDayColors()
    let currentHour = strftime("%H")
    let colorScheme=""
    if currentHour < 1 + 0
    let colorScheme = "blue"
    echo "setting colorscheme to blue"
    elseif currentHour < 2 + 0
    let colorScheme="darkblue"
    echo "setting colorscheme to darkblue"
    elseif currentHour < 3 + 0
    let colorScheme="default"
    echo "setting colorscheme to default"
    elseif currentHour < 4 + 0
    let colorScheme="delek"
    echo "setting colorscheme to delek"
    elseif currentHour < 5 + 0
    let colorScheme="desert"
    echo "setting colorscheme to desert"
    elseif currentHour < 6 + 0
    let colorScheme="elflord"
    echo "setting colorscheme to elflord"
    elseif currentHour < 7 + 0
    let colorScheme="evening"
    echo "setting colorscheme to evening"
    elseif currentHour < 8 + 0
    let colorScheme="koehler"
    echo "setting colorscheme to koehler"
    elseif currentHour < 9 + 0
    let colorScheme="morning"
    echo "setting colorscheme to morning"
    elseif currentHour < 10 + 0
    let colorScheme="murphy"
    echo "setting colorscheme to murphy"
    elseif currentHour < 11 + 0
    let colorScheme="pablo"
    echo "setting colorscheme to pablo"
    elseif currentHour < 12 + 0

    let colorScheme="peachpuff"
    echo "setting colorscheme to peachpuff"
    elseif currentHour < 13 + 0
    let colorScheme="ron"
    echo "setting colorscheme to ron"
    elseif currentHour < 14 + 0
    let colorScheme="shine"
    echo "setting colorscheme to shine"
    elseif currentHour < 15 + 0
    let colorScheme="desert"
    echo "setting colorscheme to desert"
    elseif currentHour < 16 + 0
    let colorScheme = "torte"
    echo "setting colorscheme to torte"
    elseif currentHour < 17 + 0
    let colorScheme="zellner"
    echo "setting colorscheme to zellner"
    else
    let colorScheme="desert"
    endif
    execute "colorscheme " . colorScheme
    endfunction
    call SetTimeOfDayColors()

  • 相关阅读:
    UVA
    UVA
    模板——扩展欧几里得算法(求ax+by=gcd的解)
    UVA
    模板——2.2 素数筛选和合数分解
    模板——素数筛选
    Educational Codeforces Round 46 (Rated for Div. 2)
    Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
    Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
    Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count
  • 原文地址:https://www.cnblogs.com/maowuyu-xb/p/9084128.html
Copyright © 2011-2022 走看看