一、vi 与 vim 的不同

vi 类似于 windows 的记事本,比较适合编辑普通文本,但是用于编写脚本代码就不太合适了,缺少高亮显示代码、自动缩进等重要功能;而 vim 类似于 windows 下的高级编辑器,为了提高开发效率,需要使用 vim 而不是 vi。
因此,首先做如下调整,以便只使用 vim 作为开发脚本的功能工具:

[root@dabiaoge ~]# echo ‘alias vi=vim’ >> /etc/profile
[root@dabiaoge ~]# tail -1 /etc/profile
alias vi=vim
[root@dabiaoge ~]# source /etc/profile
经过上述调整后,当用 vi 命令时,会自动被 vim 替代。

二、配置 vim 的配置文件及其重要参数介绍

全局路径:/etc/vimrc
用户个人路径:$HOME/.vimrc
建议:放在用户个人路径 $HOME/.vimrc 下。

三、.vimrc 文件的配置(几乎涵盖了所有)

  1. "~/.vimrc
  2. "vim config file
  3. "date 2018-12-26
  4. "Created by bert
  5. "blog:https://blog.51cto.com/zpf666
  6. """""""""""""""""""""""""""""""""""
  7. """=>全局配置<="""
  8. """""""""""""""""""""""""""""""""""
  9. "关闭vi兼容模式"
  10. set nocompatible
  11. "设置历史记录步数"
  12. set history=1000
  13. "开启相关插件"
  14. "侦测文件类型"
  15. filetype on
  16. "载入文件类型插件"
  17. filetype plugin on
  18. "为特定文件类型载入相关缩进文件"
  19. filetype indent on
  20. "当文件在外部被修改时,自动更新该文件"
  21. set autoread
  22. "激活鼠标的使用"
  23. set mouse=a
  24. set selection=exclusive
  25. set selectmode=mouse,key
  26. "保存全局变量"
  27. set viminfo+=!
  28. "带有如下符号的单词不要被换行分割"
  29. set iskeyword+=_,$,@,%,#,-
  30. "通过使用: commands命令,告诉我们文件的哪一行被改变过"
  31. set report=0
  32. "被分割的窗口间显示空白,便于阅读"
  33. set fillchars=vert:\ ,stl:\ ,stlnc:\
  34. """""""""""""""""""""""""""""""""
  35. """=>字体和颜色<="""
  36. """""""""""""""""""""""""""""""""
  37. "自动开启语法高亮"
  38. syntax enable
  39. "设置字体"
  40. "set guifont=dejaVu\ Sans\ MONO\ 10
  41. set guifont=Courier_New:h10:cANSI
  42. "设置颜色"
  43. "colorscheme desert
  44. "高亮显示当前行"
  45. set cursorline
  46. hi cursorline guibg=#00ff00
  47. hi CursorColumn guibg=#00ff00
  48. "高亮显示普通txt文件(需要txt.vim脚本)"
  49. au BufRead,BufNewFile * setfiletype txt
  50. """""""""""""""""""""""""""""""
  51. """=>代码折叠功能<="""
  52. """""""""""""""""""""""""""""""
  53. "激活折叠功能"
  54. set foldenable
  55. "set nofen(这个是关闭折叠功能)"
  56. "设置按照语法方式折叠(可简写set fdm=XX)"
  57. "有6种折叠方法:
  58. "manual 手工定义折叠"
  59. "indent 更多的缩进表示更高级别的折叠"
  60. "expr 用表达式来定义折叠"
  61. "syntax 用语法高亮来定义折叠"
  62. "diff 对没有更改的文本进行折叠"
  63. "marker 对文中的标志进行折叠"
  64. set foldmethod=manual
  65. "set fdl=0(这个是不选用任何折叠方法)"
  66. "设置折叠区域的宽度"
  67. "如果不为0,则在屏幕左侧显示一个折叠标识列
  68. "分别用“-”和“+”来表示打开和关闭的折叠
  69. set foldcolumn=0
  70. "设置折叠层数为3"
  71. setlocal foldlevel=3
  72. "设置为自动关闭折叠"
  73. set foldclose=all
  74. "用空格键来代替zo和zc快捷键实现开关折叠"
  75. "zo O-pen a fold (打开折叠)
  76. "zc C-lose a fold (关闭折叠)
  77. "zf F-old creation (创建折叠)
  78. "nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
  79. """""""""""""""""""""""""""""""""""
  80. """=>文字处理<="""
  81. """""""""""""""""""""""""""""""""""
  82. "使用空格来替换Tab"
  83. set expandtab
  84. "设置所有的Tab和缩进为4个空格"
  85. set tabstop=4
  86. "设定<<和>>命令移动时的宽度为4"
  87. set shiftwidth=4
  88. "使得按退格键时可以一次删除4个空格"
  89. set softtabstop=4
  90. set smarttab
  91. "缩进,自动缩进(继承前一行的缩进)"
  92. "set autoindent 命令打开自动缩进,是下面配置的缩写
  93. "可使用autoindent命令的简写,即“:set ai”和“:set noai
  94. "还可以使用“:set ai sw=4”在一个命令中打开缩进并设置缩进级别
  95. set ai
  96. set cindent
  97. "智能缩进"
  98. set si
  99. "自动换行”
  100. set wrap
  101. "设置软宽度"
  102. set sw=4
  103. "行内替换"
  104. set gdefault
  105. """"""""""""""""""""""""""""""""""
  106. """=>Vim 界面<="""
  107. """"""""""""""""""""""""""""""""""
  108. "增强模式中的命令行自动完成操作"
  109. set wildmenu
  110. "显示标尺"
  111. set ruler
  112. "设置命令行的高度"
  113. set cmdheight=1
  114. "显示行数"
  115. set nu
  116. "不要图形按钮"
  117. set go=
  118. "在执行宏命令时,不进行显示重绘;在宏命令执行完成后,一次性重绘,以便提高性能"
  119. set lz
  120. "使回格键(backspace)正常处理indent, eol, start等"
  121. set backspace=eol,start,indent
  122. "允许空格键和光标键跨越行边界"
  123. set whichwrap+=<,>,h,l
  124. "设置魔术"
  125. set magic
  126. "关闭遇到错误时的声音提示"
  127. "关闭错误信息响铃"
  128. set noerrorbells
  129. "关闭使用可视响铃代替呼叫"
  130. set novisualbell
  131. "高亮显示匹配的括号([{和}])"
  132. set showmatch
  133. "匹配括号高亮的时间(单位是十分之一秒)"
  134. set mat=2
  135. "光标移动到buffer的顶部和底部时保持3行距离"
  136. set scrolloff=3
  137. "搜索逐字符高亮"
  138. set hlsearch
  139. set incsearch
  140. "搜索时不区分大小写"
  141. "还可以使用简写(“:set ic”和“:set noic”)"
  142. set ignorecase
  143. "用浅色高亮显示当前行"
  144. autocmd InsertLeave * se nocul
  145. autocmd InsertEnter * se cul
  146. "输入的命令显示出来,看的清楚"
  147. set showcmd
  148. """"""""""""""""""""""""""""""""""""
  149. """=>编码设置<="""
  150. """"""""""""""""""""""""""""""""""""
  151. "设置编码"
  152. set encoding=utf-8
  153. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
  154. "设置文件编码"
  155. set fileencodings=utf-8
  156. "设置终端编码"
  157. set termencoding=utf-8
  158. "设置语言编码"
  159. set langmenu=zh_CN.UTF-8
  160. set helplang=cn
  161. """""""""""""""""""""""""""""
  162. """=>其他设置<="""
  163. """""""""""""""""""""""""""""
  164. "开启新行时使用智能自动缩进"
  165. set smartindent
  166. set cin
  167. set showmatch
  168. "在处理未保存或只读文件的时候,弹出确认"
  169. set confirm
  170. "隐藏工具栏"
  171. set guioptions-=T
  172. "隐藏菜单栏"
  173. set guioptions-=m
  174. "置空错误铃声的终端代码"
  175. set vb t_vb=
  176. "显示状态栏(默认值为1,表示无法显示状态栏)"
  177. set laststatus=2
  178. "状态行显示的内容"
  179. set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
  180. "粘贴不换行问题的解决方法"
  181. set pastetoggle=<F9>
  182. "设置背景颜色"
  183. set background=dark
  184. "文件类型自动检测,代码智能补全"
  185. set completeopt=longest,preview,menu
  186. "共享剪切板"
  187. set clipboard+=unnamed
  188. "从不备份"
  189. set nobackup
  190. set noswapfile
  191. "自动保存"
  192. set autowrite
  193. "显示中文帮助"
  194. if version >= 603
  195. set helplang=cn
  196. set encoding=utf-8
  197. endif
  198. "设置高亮相关项"
  199. highlight Search ctermbg=black ctermfg=white guifg=white guibg=black
  200. """"""""""""""""""""""""""""""""
  201. """=>在shell脚本开头自动增加解释器以及作者等版权信息<="""
  202. """"""""""""""""""""""""""""""""
  203. "新建.py,.cc,.sh,.java文件,自动插入文件头"
  204. autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"
  205. "定义函数SetTitle,自动插入文件头"
  206. func SetTitle()
  207. if expand ("%:e") == 'sh'
  208. call setline(1, "
  209. call setline(2, "#Author:bert")
  210. call setline(3, "#Blog:https://blog.51cto.com/zpf666")
  211. call setline(4, "#Time:".strftime("%F %T"))
  212. call setline(5, "#Name:".expand("%"))
  213. call setline(6, "#Version:V1.0")
  214. call setline(7, "#Description:This is a production script.")
  215. endif
  216. endfunc

```

四、说明

读者朋友可以直接完全复制粘贴拿去使用,只需要修改代码的开头和末尾部分的版权信息就可以使用

五、结束语

我是大表哥,我为自己带盐,以后会不定时更新,请支持正版,盗链可耻
我的博客是:https://blog.51cto.com/zpf666
各位朋友有什么不懂以及认为有什么错误之处,请在下方留言,谢谢!
https://blog.51cto.com/zpf666/2335640