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.pswp.cn/news/277953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277953.shtml
英文地址,請注明出處:http://en.pswp.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…