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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法引入

算法的概念&#xff1a; 解决问题的思路。 时间复杂度&#xff1a; 定义&#xff1a; 基本运算的执行数量。是算法效率的衡量的量。 计算准则&#xff1a; 基本操作&#xff1a;即只有常数项。复杂度认为1顺序&#xff0c;按照加法计算循环&#xff0c;按照乘法计算条件。按照最…

如何开发Teams Bot

很多朋友问我如何开发一个成功的Teams Bot&#xff0c;他们说Bot Framework SDK看起来简单&#xff0c;但是真要的去开发一款成熟的bot&#xff0c;很多地方还是不知道如何使用。我从最早的bot framework还在beta的时候开始用&#xff0c;后来framework经历了多次大的改动&…

[CF903G]Yet Another Maxflow Problem

[CF903G]Yet Another Maxflow Problem 题目大意&#xff1a; 有\(A\)类点和\(B\)类点各\(n(n\le2\times10^5)\)个&#xff0c;所有\(A_i\)到\(A_{i1}\)有一条权值为\(a_i\)的有向边&#xff0c;所有\(B_i\)到\(B_{i1}\)有一条权值为\(b_i\)的有向边&#xff0c;另有\(m(m\le2\t…

P1579哥德巴赫猜想

写来自己学习用~ 题目内容&#xff1a; 1742年6月7日哥德巴赫写信给当时的大数学家欧拉&#xff0c;正式提出了以下的猜想&#xff1a;任何一个大于9的奇数都可以表示成3个质数之和。质数是指除了1和本身之外没有其他约数的数&#xff0c;如2和11都是质数&#xff0c;而6不是质…

在VSCode Remote环境下开发Teams Bot

我使用VS Code开发已经有蛮长一段时间了&#xff0c;时间长了&#xff0c;越来越喜欢VS Code&#xff0c;虽然有些时候会没有传统的VS方便&#xff0c;比如开发Azure Function时你需要编写一下launch.json&#xff0c;而且你需要手动启动StorageEmulator&#xff0c;但是也正是…

查看安卓APK源码破解

原文:查看安卓APK源码破解工具准备&#xff1a; <1>.android4me的AXMLPrinter2工具 <2>dex2jar <3>jd-gui 工具下载&#xff1a;http://download.csdn.net/detail/catshitone/8491347 开始&#xff1a; 第一步&#xff1a; 首先用解压软件&#xff08;如好…

实验六:类的封装

一、实验代码如下&#xff1a; 1 package 实验6;2 3 import java.util.Scanner;4 5 6 public class Account {7 8 public int id;9 public String name;10 public long number;11 public long time;12 public int money;13 14 //方法Account()…

Teams Bot开发系列:初识Bot

上次我们讲了Teams Bot开发的概述&#xff0c;讲了Azure Bot Service&#xff0c;Bot Framework SDK和我们自己的bot服务的概念&#xff0c;这篇文章就带大家看看Azure Bot Service和我们的bot是如何发生关系的。 我们自己开发的bot服务实际上就是一个api service&#xff0c;…

[环境搭建]SDN网络感知服务与最短路径应用

1.安装python模块networkxpip install networkx2.给Network_Awareness.py加修改权限chmod 777 Network_Awareness.py3.下载安装ryugit clone git://github.com/osrg/ryu.gitcd ryu sudo python ./setup.py install#若已安装ryu,删了再装&#xff0c; pip uninstall ryu4.修改“…

我需要别人承认才快乐吗?

关于生命的感悟两个故事第一个故事&#xff0c;一个尖子生考上了麻省理工学院&#xff0c;在那里所有同学都很优秀&#xff0c;竞争非常强烈&#xff0c;她发现再也不能出类拔萃&#xff0c;在各方面赢过别人&#xff0c;于是觉得生活看不到希望&#xff0c;郁郁寡欢&#xff0…

Teams Bot开发系列:Activity和Turn

这篇文章我们来说一下Activity和Turn这两个bot framework中最重要的两个概念&#xff0c;同时也介绍一下TurnContext和BotAdapter Activity 一个activity是聊天双方的一个信息载体&#xff0c;它可以是一条消息&#xff0c;也可以是一个动作。比如用户给bot发送一条文字消息&…

ubuntu16.04下安装opencv出现libgtk2.0-dev配置失败问题解决方法

第一次在ubuntu下安装opencv&#xff0c;遇到很多问题&#xff0c;特别是libgtk2.0-dev总是配置失败的问题&#xff0c;在网上也看到一些解决方法&#xff0c;自己也遇到一些比较奇葩的问题&#xff0c;故整理于此。 网上大部分的解决方案就是更改下载源&#xff0c;我看到一些…

03|模型I/O:输入提示、调用模型、解析输出

03&#xff5c;模型I/O&#xff1a;输入提示、调用模型、解析输出 从这节课开始&#xff0c;我们将对 LangChain 中的六大核心组件一一进行详细的剖析。 模型&#xff0c;位于 LangChain 框架的最底层&#xff0c;它是基于语言模型构建的应用的核心元素&#xff0c;因为所谓 …

selenuim自动化爬取汽车在线谷米爱车网车辆GPS数据爬虫

#为了实时获取车辆信息&#xff0c;以及为了后面进行行使轨迹绘图&#xff0c;写了一个基于selelnium的爬虫爬取了车辆gps数据。 #在这里发现selenium可以很好的实现网页解析和处理js处理 #导包 import timefrom selenium import webdriverfrom selenium.webdriver.support.wai…

Teams Bot开发系列:Activity处理流程

上篇文章介绍了什么是Activity&#xff0c;Turn&#xff0c;TurnContext和BotAdapter&#xff0c;这篇文章我们看看这些东西是如何窜起来的&#xff0c;他们是如何处理用户发给bot的消息的。 我们以一个最简单的bot&#xff0c;echo bot为例子&#xff0c;所谓的echo bot就是用…

写单元测试的好处(转)

许多开发者都有个习惯&#xff0c;常常不乐意去写个简单的单元测试程序来验证自己的代码。对自己的程序一直非常有自信&#xff0c;或存在侥幸心理每次运行通过后就直接扔给测试组测试了。然而每次测试组的BUG提交过来后就会发现自己的程序还存在许多没有想到的漏洞。但是每次修…

linux下搭建go环境--问题记录

记录自己在linux上搭建go环境的经历。&#xff08;因为各种版本&#xff0c;linux系统问题挣扎了几天&#xff09; 安装vmware-tools,把我要运行代码拷进来。这个网上方法很多&#xff0c;我的电脑抽风不能安装&#xff0c;后面重装的虚拟机确定Ubuntu版本、位数。很重要&#…

Teams Bot开发系列:Teams的Activity处理

上一篇文章讲了activity处理的流程&#xff0c;我们bot的核心处理逻辑放在ActivityHandler的子类里&#xff0c;通过重载OnMessageActivityAsync()方法来实现。 这篇文章我来讲一下对于Teams的bot来说&#xff0c;整个处理的逻辑会有哪些不同点。 通过之前的文章&#xff0c;…

取球博弈

两个人玩取球的游戏。一共有N个球&#xff0c;每人轮流取球&#xff0c;每次可取集合{n1,n2,n3}中的任何一个数目。 如果无法继续取球&#xff0c;则游戏结束。 此时&#xff0c;持有奇数个球的一方获胜。 如果两人都是奇数&#xff0c;则为平局。 假设双方都采用最聪明的取法…

MySQL修改字符集

MySQL数据库修改字符集,介绍一下修改的方法 1&#xff09;系统工具iconv #file filename #mysqldump --default-character-setutf8 >20180523xxx.sql #file 20180523xxx.sql #iconv -t utf8mb4 -c 20180523xxx.sql>20180523xxxutf8mb4.sql #file 20180523xxxutf8mb4.sql…