vim配置,附带中文注释
忘了具体是怎么接触到vim的。隐约的记忆中,大概是想学c语言时,找ide时偶然从网上看到的关于“神之编辑器”emacs和“编辑器之神”vim的信仰之争。才初次了解这两款软件的。
我至今仍然在两个阵营中徘徊。企图用emacs装逼却不得其门而入,倒是vim算是初步掌握了吧!反正日常用是没问题。 vim即使不配置,使用起来也还是很方便的。不过如果是在常用的主机或服务器上使用的话,按自己的习惯进行配置还是相当有必要的。下面就是记录我所知道的配置,并尽量附以注释。随着时间推移,对vim了解加深后可能还会更新,增改一些配置。
2020.11.26 变更点:
- 加入F5一键运行python3和shell脚本
- fcitx输入法在普通模式下自动切换为英文状态[小改进,但极大提升了中文输入法的一个使用体验]
- 去除了一些鸡肋的自定义按键。
" [2020-11-26 09:58:00]
" linux配置文件名为".vimrc",放在用户的home目录下,如:/home/test/.vimrc
" windows配置文件名为"_vimrc",放在用户目录下,如: c:\User\Administrator\_vimrc
""""" 功能 """""
""" 编码
set encoding=utf-8 " 以设定的编码读入文本,不影响保存。
"set fileencoding=utf-8 " Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 " 逐一检测所打开文件的编码是否符号列表的编码。若是,则以该编码打开。
set termencoding=utf-8 " Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。(对gui模式的gvim无效)
""" 缩进
set tabstop=4 " 制表符的宽度
set softtabstop=4 " 一个<tab>或<backspace>的宽度
set shiftwidth=4 " 自动缩进的宽度
" set expandtab " 输入的<tab>键将转化为空格键
" 以下缩进,三选其一,不用的注释掉。
"set cindent " c语言风格缩进
"set autoindent " 自动缩进,当前行缩进和上一行的缩进相同
set smartindent " 智能缩进,当前行缩进和上一行的缩进相同,同时能识别"{"
set bs=indent,eol,start
set nocompatible " 关闭vi兼容
set autoread " 当文件有改动时,自动重载文件
set mouse=a " 鼠标支持
""""" 视觉 """""
colorscheme desert " 主题选择,可根据喜好自行更改
syntax on " 语法高亮
set number " 显示行号
set relativenumber " 显示相对行号
set statusline=%l,%v " 状态行显示格式设置
set laststatus=2 " 0不显示状态行,1仅当多于一个窗口时显示,2总是显示
set foldenable " 允许折叠
set foldmethod=indent " 折叠模式:indent自动,manual手动。
set foldlevelstart=99 " 默认展开所有折叠
set cursorcolumn " 高亮光标列
set cursorline " 高亮光标行
set hlsearch " 高亮匹配
set incsearch " 即时匹配
set ignorecase " 查找忽略大小写
set ru " 状态栏标尺
" set list " 显示空白字符(tab,换行等等之类)
""""" 缩略词 """""
""""" 快捷键 """""
" <c-a>,<a-a>,<s-a>分别表示 Ctrl-a, Alt-a, Shift-a.
" 大小写注意,如<c-a>和<c-A>是不同的组合键,在小写状态下,<c-A>就是Ctrl-Shift-a,大写状态下则是Ctrl-a.
""" 注意: 避免绑定一些全局按键,以下是几个全局按键的例子。
" <c-s>和<c-q>,<c-s>一般是终端停止屏幕输出的全局快捷键,看起来会像卡死了(按<c-q>恢复)。
" <c-c>,强制关闭终端
" <c-z>,挂起程序,切到shell(之后在shell下,输入fg返回)
" 更改<Leader>键(如果有需要的话)
let mapleader = "\<space>"
""" 普通模式
" 在上/下行,添加空行
nnoremap <s-cr> O<esc>
nnoremap <c-cr> o<esc>
""" 插入模式
" 跳到上/下行的末尾
inoremap <s-cr> <esc>kA
inoremap <c-cr> <esc>jA
inoremap jk <esc>
inoremap xtime <c-r>=strftime("[%Y-%m-%d %H:%M:%S]")<cr>
""" 一键执行脚本
" 按F5执行脚本:python,shell
map <F5> :call RunScript()<CR>
func RunScript()
exec "w"
if &filetype == 'python'
exec "!time python3 %"
elseif &filetype == 'sh'
exec "!time bash %"
elseif &filetype == 'markdown'
exec "!/opt/apps/io.typora/files/typora/Typora %"
endif
endfunc
""" fcitx 输入法相关:普通模式下,关闭输入法
let g:input_toggle = 1
" 切换Fcitx到英文
function! Fcitx2en()
let s:input_status = system("fcitx-remote")
if s:input_status == 2
let g:input_toggle = 1
let l:a = system("fcitx-remote -c")
endif
endfunction
" 切换Fcitx到中文
function! Fcitx2zh()
let s:input_status = system("fcitx-remote")
if s:input_status != 2 && g:input_toggle == 1
let l:a = system("fcitx-remote -o")
let g:input_toggle = 0
endif
endfunction
set timeoutlen=150
" 离开插入状态时,关闭fcitx
autocmd InsertLeave * call Fcitx2en()
"autocmd InsertEnter * call Fcitx2zh()
2020.10.10 重新排版,用空格对齐注释
"[2020-10-10 13:25:17]
" 该配置的文件名,及存放位置。
" linux文件名为".vimrc",放在用户的home目录下,如:/home/test/.vimrc
" windows文件名为"_vimrc",放在用户目录下,如: c:\User\Administrator\_vimrc
""""" 功能 """""
""" 编码
set encoding=utf-8 " 以设定的编码读入文本,不影响保存。
"set fileencoding=utf-8 " Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 " 逐一检测所打开文件的编码是否符号列表的编码。若是,则以该编码打开。
set termencoding=utf-8 " Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。(对gui模式的gvim无效)
""" 缩进
set tabstop=4 " 制表符的宽度
set softtabstop=4 " 一个<tab>或<backspace>的宽度
set shiftwidth=4 " 自动缩进的宽度
" set expandtab " 输入的<tab>键将转化为空格键
" 以下缩进,三选其一,不用的注释掉。
"set cindent " c语言风格缩进
"set autoindent " 自动缩进,当前行缩进和上一行的缩进相同
set smartindent " 智能缩进,当前行缩进和上一行的缩进相同,同时能识别"{"
set bs=indent,eol,start
set nocompatible " 关闭vi兼容
set autoread " 当文件有改动时,自动重载文件
set mouse=a " 鼠标支持
""""" 视觉 """""
colorscheme desert " 主题选择,可根据喜好自行更改
syntax on " 语法高亮
set number " 显示行号
set relativenumber " 显示相对行号
set statusline=%l,%v " 状态行显示格式设置
set laststatus=2 " 0不显示状态行,1仅当多于一个窗口时显示,2总是显示
set foldenable " 允许折叠
set foldmethod=inden " 折叠模式:indent自动,manual手动。
set foldlevelstart=99 " 默认打开不折叠
set cursorcolumn " 高亮光标列
set cursorline " 高亮光标行
set hlsearch " 高亮匹配
set incsearch " 即时匹配
set ignorecase " 查找忽略大小写
set ru " 状态栏标尺
" set list " 显示空白字符(tab,换行等等之类)
""""" 缩略词 """""
""""" 快捷键 """""
" 注意避免绑定一些全局按键,以下是几个全局按键的例子。
" <c-s>和<c-q>,<c-s>一般是终端停止屏幕输出的全局快捷键,看起来会像卡死了(按<c-q>恢复)。
" <c-c>,强制关闭终端
" <c-z>,挂起程序,切到shell(之后在shell下,输入fg返回)
""" 普通模式
" 在上/下行,添加空行
nnoremap <c-cr> o<esc>
nnoremap <s-cr> O<esc>
""" 插入模式
" 插入模式位移,分别下列四行依次是:是左下上右
inoremap <c-h> <left>
inoremap <c-j> <down>
inoremap <c-k> <up>
inoremap <c-l> <right>
"inoremap <c-d> <del>
inoremap <a-d> <c-o>ciw
inoremap <c-cr> <esc>jA
inoremap <s-cr> <esc>kA
inoremap jk <esc>
inoremap xtime <c-r>=strftime("[%Y-%m-%d %H:%M:%S]")<cr>
" 设定中文关键字退出到普通模式
" 为熟悉jk退出模式,可将<esc>禁用掉
" inoremap <esc> <nop>
2018.8.24
我已经皈依vim教了,emacs什么的,顾名思义,是神用的编辑器。身为凡人还是老老实实的用vim吧。
2019.4.29
编程过程中,有些语言是要严格区别空白字符的(如:python的tab和空格),一个不注意就可能引发难以查找的错误.
所以,配置中有set expandtab
将tab键转换成空格,而这次又添加了一条set list
语句,可以显示出空白符(tab键好像是^I,行尾符是$,颜色都是区别于正常字符的,所以不用担心认错.
"[2020-04-04 01:08:06]
""""" 功能 """""
""" 编码
set encoding=utf-8 " 以设定的编码读入文本,不影响保存。
set fileencoding=utf-8 " Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 " 逐一检测所打开文件的编码是否符号列表的编码。若是,则以该编码打开。
set termencoding=utf-8 " Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。(对gui模式的gvim无效)
""" 缩进
set tabstop=4 " 制表符的宽度
set softtabstop=4 " 一个<tab>键宽度
set shiftwidth=4 " 换行自动缩进的列数
" 以下缩进,三选其一,不用的注释掉。
"set cindent " c语言风格缩进
"set autoindent " 自动缩进,当前行缩进和上一行的缩进相同
set smartindent " 智能缩进,当前行缩进和上一行的缩进相同,同时能识别"{"
" 以下两行二选一
"set expandtab " 转换制表符
set noexpandtab " 不转换制表符
set bs=indent,eol,start
set nocompatible " 关闭vi兼容
set autoread " 当文件有改动时,自动重载文件
set mouse=a " 鼠标支持
""""" 视觉 """""
colorscheme desert " 主题
syntax on " 语法高亮
set number " 显示行号
set relativenumber " 显示相对行号
set statusline=%l,%v " 状态行显示格式设置
set laststatus=2 " 0不显示状态行,1仅当多于一个窗口时显示,2总是显示
set foldenable " 允许折叠
set foldmethod=indent " 折叠模式:indent自动,manual手动。
set foldlevelstart=99 " 文件打开时,自动折叠的级别
set cursorcolumn " 高亮光标列
set cursorline " 高亮光标行
set hlsearch " 高亮匹配
set incsearch " 即时匹配
set ignorecase " 查找忽略大小写
set ru " 状态栏标尺
set list " 显示空白字符(tab,换行等等之类)