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()

  • 相关阅读:
    全面解析Vue.nextTick实现原理
    js 宏任务和微任务
    模拟实现ES6的set类
    git客户端出现libpng warning: iCCP: known incorrect sRGB profile
    js封装、继承
    js单例模式
    并行运行多个python虚拟机
    关于场景服务的一些想法
    关于不能对闭包函数进行热更新的问题
    Python string interning原理
  • 原文地址:https://www.cnblogs.com/maowuyu-xb/p/9084128.html
Copyright © 2011-2022 走看看