博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vim编辑器的使用--转自MJ学长
阅读量:5855 次
发布时间:2019-06-19

本文共 5956 字,大约阅读时间需要 19 分钟。

一、引言

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

转载于:https://www.cnblogs.com/maowuyu-xb/p/9084128.html

你可能感兴趣的文章
paper 83:前景检测算法_1(codebook和平均背景法)
查看>>
encrypt myself code
查看>>
CentOS 7使用dnf安装Memcached以及启动、停止、开机启动等设置
查看>>
页面上通过地址栏传值时出现乱码的两种解决方法
查看>>
c++下面的一个单例
查看>>
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
查看>>
dev gridControl 自定义绘制列头颜色
查看>>
运行时数据调试
查看>>
京东的交易系统 之 高并发架构分享
查看>>
网站大并发处理解决方案
查看>>
分布式计算
查看>>
cocoapods管理第三方开源库
查看>>
pvp实时对战,同步机制,针对掉线简单分析
查看>>
EBook
查看>>
(用了map) Registration system
查看>>
C/S架构和B/S架构的概念和区别
查看>>
知识的深度跟知识的广度
查看>>
Blue Jeans(包含两个查找字符串的重要函数)
查看>>
嵌入式软件设计第12次实验报告
查看>>
冲刺第二周第七天
查看>>