首頁 > 軟體

Vim編輯器使用

2020-06-16 17:33:57

一、引言

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

更多Vim相關教學見以下內容

Vim學習指南 http://www.linuxidc.com/Linux/2013-08/89096.htm

快速學會 Vi編輯器 http://www.linuxidc.com/Linux/2013-08/88586.htm

強大的Vim 編輯器 http://www.linuxidc.com/Linux/2013-07/87544.htm

CentOS 6.2上搭建Vim開發環境 http://www.linuxidc.com/Linux/2013-07/87363.htm

把Vim打造成優秀的C++ IDE  http://www.linuxidc.com/Linux/2016-06/132262.htm

Vim技巧分享:C語言設定 http://www.linuxidc.com/Linux/2012-12/77124.htm

Ubuntu中設定Vim的行號 http://www.linuxidc.com/Linux/2012-12/75485.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-09/135043.htm


IT145.com E-mail:sddin#qq.com