【1】Vim简介:

所有的​​Linux​​​/UNIX都会默认安装Vi,现在主流的​​linux​​都会给默认安装vim。

Vim是一个功能强大的全屏幕文本编辑器, 是Linux/UNIX上最常用的文本编辑器, 它的作用是建立、编辑、显示文本文件;Vim几乎支持所有的语言。

Vim 没有菜单,只有命令。 

官网:​​www.vim.org​

因此,了解,学好并且达到熟练运用Vim至关重要!

下面给出一些基本常用操作命令。


                

  • 插入命令

命令           作用

a                在光标后附加文本

A                在本行行尾附加文本

i                 在光标前插入

I                 在本行行首插入文本

o                在光标下面插入新的一行

O               在光标上面插入新的一行

 


  • 定位命令

命令 作用

h         左移一个字符

j         下移一行

k         上移一行

l         右移一个字符

$         移动到行尾

0         移动到行首

H         移动到屏幕上端

M         移动到屏幕中央

L         移动到屏幕下端

 


  • 快速定位

命令           作用

:set nu      显示行号

:set nonu     取消行号

 

gg           移动到第一行

G            移动到最后一行

nG           到第n行

:n           到第n行

 


  • 删除命令

命令       作用

x              删除光标所在字符

nx             删除n个字符

dd             删除所在光标所在行,ndd删除n行 

dG             删除从当前行到文件末尾所有的行,包含当前行

D              删除光标所在处到行尾的内容

:n1,n2d       删除n1~n2行

 


  • 复制命令

命令      作用

yy,Y      复制当前行

nyy,nY     复制n行

dd           剪切当前行,ndd剪切当前行及一下的n行

p            粘贴在当前行下

P[大写]     粘贴在当前行上

 


  • 替换或取消命令            作用

r          取代光标所在处字符 

R          从光标所在处开始替换字符,直到Esc结束 

u          取消上一步操作 ,首先你没有保存过,文档还是在内存中,还没有同步到硬盘。

 


  • 替换或搜索命令       作用

/string   向后搜索指定字符串,搜索时忽略大小写 :set ic ,取消:set noic

n     从前往后翻

N     从后往前翻

 

:%s/old/new/g     全文替换指定字符串,old为需要替换的关键词。

:n1,n2s/old/new/g       在一定范围内替换指定字符串

:%s/old/new/c     全文替换指定字符串,但是会询问

 


  • 保存与退出         作用

ZZ                                       :wq的快捷键

:w new_filename                               另存为指定文件

:wq!                               强行保存修改并退出[root/文件所有者]

:q!                                       不保存退出



【2】个人linux-deepin系统里的vim配置文件,用于C/C++编程。

打开Vim  配置文件 ~/.vimrc。

【Linux 环境Vim常用操作与配置文件】_搜索

加入以下代码:

其中F2:启动;F9 :编译。


" Ctags
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
syntax on " 自动语法高亮
set nu " 显示行号
set ru " 打开 VIM 的状态栏标尺
set hls " 搜索时高亮显示被找到的文本
set lbr " 不在单词中间断行
set sm " 显示括号配对情况
set nocp " 不与vi兼容
set cursorline "当前行设置横线
set tabstop=4 "
set shiftwidth=4 "设定tab宽
"colo evening" "设定颜色
set mouse=a "设定鼠标右键能粘贴
set cin " 设定C++风格
set history=10000
set smarttab
set cindent"
set showcmd "
set nobackup
set noswapfile
map <F9> :call CompileRunGcc() <CR> 
func! CompileRunGcc()
exec "w"
exec "!clear"
if &filetype == 'c'
exec "!gcc -Wall % -o %<.cout"
exec "!./%<.cout"
elseif &filetype == 'cpp'
exec "!g++ -Wall % -o %<.cppout"
exec "!./%<.cppout"
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
endif
endfunc

imap <c-]> {<cr>}<c-o>O<left><right>

map <C-A> ggVG"+y


"inoremap ( ()<LEFT>
"inoremap [ []<LEFT>
"inoremap { {}<LEFT>
"inoremap " ""<LEFT>
"inoremap ' ''<LEFT>

map <F2> :call SetTitle()<CR>
func SetTitle()
let l = 0
let l = l + 1 | call setline(l,'/* ***********************************************')
let l = l + 1 | call setline(l,'Author :herongwei')
let l = l + 1 | call setline(l,'Created Time :'.strftime('%c'))
let l = l + 1 | call setline(l,'File Name :'.expand('%'))
let l = l + 1 | call setline(l,'************************************************ */')
let l = l + 1 | call setline(l,'')

let l = l + 1 | call setline(l,'#include <stdio.h>')
let l = l + 1 | call setline(l,'#include <string.h>')
let l = l + 1 | call setline(l,'#include <iostream>')
let l = l + 1 | call setline(l,'#include <algorithm>')
let l = l + 1 | call setline(l,'#include <vector>')
let l = l + 1 | call setline(l,'#include <queue>')
let l = l + 1 | call setline(l,'#include <set>')
let l = l + 1 | call setline(l,'#include <map>')
let l = l + 1 | call setline(l,'#include <string>')
let l = l + 1 | call setline(l,'#include <math.h>')
let l = l + 1 | call setline(l,'#include <stdlib.h>')
let l = l + 1 | call setline(l,'#include <time.h>')
let l = l + 1 | call setline(l,'using namespace std;')
let l = l + 1 | call setline(l,'typedef long long LL;')
let l = l + 1 | call setline(l,'const int maxn = 1e5+233;')
let l = l + 1 | call setline(l,'const int MOD = 1e9+7;')
let l = l + 1 | call setline(l,'const double eps= 1e-6;')
let l = l + 1 | call setline(l,'const double pi = acos(-1.0);')
let l = l + 1 | call setline(l,'int n,m,t,ans,res,tmp; ')
let l = l + 1 | call setline(l,'int main()')
let l = l + 1 | call setline(l,'{')
let l = l + 1 | call setline(l,' //freopen("in.txt","r",stdin);')
let l = l + 1 | call setline(l,' //freopen("out.txt","w",stdout);')
let l = l + 1 | call setline(l,' ')
let l = l + 1 | call setline(l,' return 0;')
let l = l + 1 | call setline(l,'}')
endfunc



效果如下:

【Linux 环境Vim常用操作与配置文件】_linux_02



【3】安装vim中文文档


vim中文帮助文档tar包下载地址:​​http://sourceforge.net/projects/vimcdoc/files/vimcdoc/​​​ 
解压后其中有个doc文件夹, 将其中的内容全部复制到~/.vim/doc, 或者vim安装目录下的doc目录中, 此时vim中的help信息已经是中文的了.

具体操作:

doc文件夹安装目录,会看到已经写好了一个安装脚本:vimcdoc.sh

执行命令:

./vimcdoc.sh -i



该安装程序会自动识别 Vim 的安装路径,将中文的文档拷贝到相应的地方。原有的英文文档不受影响。



【Linux 环境Vim常用操作与配置文件】_文本编辑_03


【Linux 环境Vim常用操作与配置文件】_文本编辑_04


【4】附:VIM常用命令:


【Linux 环境Vim常用操作与配置文件】_#include_05

【Linux 环境Vim常用操作与配置文件】_vim_06