Vi和Vim都是UNIX操作系统中的文本编辑器。Vi是Unix操作系统中最早的文本编辑器之一,它是由Bill Joy在1976年开发的。Vim是Vi的改进版本,由Bram Moolenaar在1991年创建。
以下是Vi和Vim之间的一些不同之处:
用户界面:Vi有一个非常基本的用户界面,只能在命令行中使用。Vim则提供了更丰富的用户界面,包括命令行和GUI版本。
功能:Vim包含了Vi所有的功能,并且还提供了更多的功能,包括多级撤销、语法高亮、多窗口和多标签页等。
易用性:Vim比Vi更加易用,因为它提供了更多的快捷键和更多的命令,使编辑文本更加高效。
定制性:Vim比Vi更容易进行定制,可以通过插件、脚本和配置文件来实现。
总之,Vim是Vi的升级版,它提供了更多的功能和更好的用户体验,但是学习曲线可能会比Vi更陡峭一些。
Vim的配置文件为~/.vimrc,即在用户的home目录下的.vimrc文件,也可通过命令“:echo $MYVIMRC”查看当前Vim的配置文件路径。
在 window 中,路径为:[用户目录]/_vimrc
以下是一些常用的Vim配置参数及其作用:
" Vim with all enhancements
source $VIMRUNTIME/vimrc_example.vim
" Use the internal diff if available.
" Otherwise use the special 'diffexpr' for Windows.
if &diffopt !~# 'internal'
set diffexpr=MyDiff()
endif
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg1 = substitute(arg1, '!', '\!', 'g')
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg2 = substitute(arg2, '!', '\!', 'g')
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let arg3 = substitute(arg3, '!', '\!', 'g')
if $VIMRUNTIME =~ ' '
if &sh =~ '\
if empty(&shellxquote)
let l:shxq_sav = ''
set shellxquote&
endif
let cmd = '"' . $VIMRUNTIME . '\diff"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
let cmd = substitute(cmd, '!', '\!', 'g')
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
if exists('l:shxq_sav')
let &shellxquote=l:shxq_sav
endif
endfunction
" 显示行号
set number
" 语法高亮度显示
syntax on
" 不创建交换文件
set noswapfile
" 保留 撤销 操作历史
set undofile
set nobackup
" 设置操作历史文件的保存位置
set undodir=E:/Users/LY_win/vimfiles/.undo
" vim需要记住多少次历史操作
set history=1000
" 命令模式下,底部操作指令按下 Tab 键自动补全。第一次按下 Tab,会显示所有匹配的操作指令的清单;第二次按下 Tab,会依次选择各个指令
set wildmenu
set wildmode=longest:list,full
" 定义F1快捷键为切换vim窗口
map <F1> <C-w>w
" 设置文件的代码形式 utf8, 中文不乱码
set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030
" 设置gvim的字体
" set guifont=courier_new:h10
" 按下Tab键后,vim显示的空格数
set tabstop=4
" normal模式下,>>增加一级缩进、<<取消一级缩进、==取消全部缩进时,每一级缩进的空格数
set shiftwidth=4
" 自动将Tab转为空格(防止Tab键在不同编辑器缩进不一致导致问题)
set expandtab
" Tab转为多少个空格
set softtabstop=4
" 光标所在行高亮
set cursorline
highlight CursorLine cterm=NONE ctermbg=black guibg=NONE guifg=NONE
" 关闭自动折行
"set nowrap
" 垂直滚动时,光标距离顶部/底部的距离(单位:行)
set scrolloff=5
" 水平滚动时,光标距离行首或行尾的距离(单位:字符)
set sidescrolloff=30
" 设置行宽,即一行显示多少字符: 跟行内的空格有关
set textwidth=10
" 是否显示状态栏:0表示不显示,1表示只在多窗口显示,2表示显示
set laststatus=2
" 设置状态条显示的信息:文件名、光标所在字符的ASCII码、光标所在字符的ASCII码的十六进制、光标所在的位置、光标所在行之上的内容占整个文件的百分比、文件总行数
set statusline=\ %F%m%r%h%w\ \ \ \ ASCII=\%03.3b\ \ \ \ HEX=\%02.2B\ \ \ \ POS=%04l,%04v\ \ \ \ %p%%\ \ \ \ NumOfLine=%L
" 显示行尾的空格
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
" 光标遇到括号时,自动高亮对应的另一半括号
set showmatch
" 命令行模式下,在底部显示当前键入的指令。例如键入dd删除一行时,键入第一个d,底部右侧显示d,完全键入dd时,操作完成,底部显示消失
set showcmd
" 搜索时,高亮显示搜索结果
set hlsearch
" 搜索时,每输入一个字符,自动跳到第一个匹配的结果
set incsearch
" 搜索时忽略大小写
set ignorecase
@misc{BibEntry2023Oct,
title = {{vimrc文件配置的全文收录xn–zg7c史上最全xn–3g7c附带中文解释xn–{ _ \_ _}-hm68a51CTO博客{ _ \_ _}vimrc文件颜色配置}},
year = {2023},
month = oct,
urldate = {2023-10-27},
language = {chinese},
note = {[Online; accessed 27. Oct. 2023]},
url = {https://blog.51cto.com/zpf666/2335640}
}