我在嵌入式开发工作中主要进行Shell/Python/C
编程,并且由于经常需要在Linux
服务器端构建Yocto
项目,所以SecureCRT
+Vim
可以说是我的最佳开发工具组合之一。Vim 8.0
增加了异步I/O
和通道的支持,所以适当的配置和插件便可以把Vim 8.0
改造成一个远程服务器端的IDE
,大大提高开发效率。
安装Vim 8.0
检查Linux
服务器端的Vim
版本是否已经是8.0
以上:
$ vim --version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Feb 7 2019 13:12:21)
如果还是7.X
版本的话,通过如下命令升级到8.X
:
$ sudo add-apt-repository ppa:jonathonf/vim
$ sudo apt update
$ sudo apt install vim
Vim环境配置
在Linux
服务器端进入主用户目录,可以看到.vimrc
文件和.vim
文件夹,这两个就是Vim
的所有配置信息。
.vimrc
文件通用配置
主用户目录下的.vimrc
就是vim
主配置文件,该文件不是必备的,如果没有就手动创建一个,vim
每次启动都会调用这些配置。
通过.vimrc
可以为vim
进行个性化配置,包括高亮显示,对齐风格,快捷键组合,插件管理等,下面是最基础一组通用配置,适合入门级用户:
注意:.vimrc
里面的双引号"
起注释的作用。
"common conf {{ 通用配置
set ai "自动缩进
set bs=2 "在insert模式下用退格键删除
set showmatch "代码匹配
set laststatus=2 "总是显示状态行
set expandtab "以下三个配置配合使用,设置tab和缩进空格数
set shiftwidth=4
set tabstop=4
set cursorline "为光标所在行加下划线
set number "显示行号
set rnu "显示相对行号
set autoread "文件在Vim之外修改过,自动重新读入
set ignorecase "检索时忽略大小写
set fileencodings=utf-8,gbk "使用utf-8或gbk打开文件
set hls "检索时高亮显示匹配项
set helplang=cn "帮助系统设置为中文
set ruler "设置标尺
set cindent "c语言分格对齐
set history=1000 "命令历史纪录1000行
set showcmd "显示命令
filetype indent on "根据不同文件类型对齐
syntax on "语法支持
colorscheme default "语法高亮主题使用默认
let &termencoding=&encoding "终端编码使用和encoding一样的编码
"}}
"打开文件自动跳到上次查看行
if has("autocmd")
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
\| exe "normal g'\"" | endif
endif
标签页配置
Vim
除了常用的窗口(window
)和缓存区(buffer
)外,还有标签页(tab
)
我们在.vimrc
里面配置标签页相关的快捷方式:空格键+t
创建新的标签页,Ctrl
+h
/l
来切换不同的标签页:
"conf for tabs, 为标签页进行的配置,通过ctrl h/l切换标签等
let mapleader = ' '
nnoremap <C-l> gt
nnoremap <C-h> gT
nnoremap <leader>t :tabe<CR>"
Vim
对Alt
键的支持
考虑到后续有10多个插件要安装,每个插件都会有一些快捷键命令,为了防止Ctrl
为首的快捷键组合与Vim
默认的快捷键冲突,所以我们需要把Alt
键给利用起来,下面是.vimrc
里面把Alt
键映射为终端meta
键的函数:
" vim ALT key
function! Terminal_MetaMode(mode)
set ttimeout
if $TMUX != ''
set ttimeoutlen=30
elseif &ttimeoutlen > 80 || &ttimeoutlen <= 0
set ttimeoutlen=80
endif
if has('nvim') || has('gui_running')
return
endif
function! s:metacode(mode, key)
if a:mode == 0
exec "set <M-".a:key.">=\e".a:key
else
exec "set <M-".a:key.">=\e]{0}".a:key."~"
endif
endfunc
for i in range(10)
call s:metacode(a:mode, nr2char(char2nr('0') + i))
endfor
for i in range(26)
call s:metacode(a:mode, nr2char(char2nr('a') + i))
call s:metacode(a:mode, nr2char(char2nr('A') + i))
endfor
if a:mode != 0
for c in [',', '.', '/', ';', '[', ']', '{', '}']
call s:metacode(a:mode, c)
endfor
for c in ['?', ':', '-', '_']
call s:metacode(a:mode, c)
endfor
else
for c in [',', '.', '/', ';', '{', '}']
call s:metacode(a:mode, c)
endfor
for c in ['?', ':', '-', '_']
call s:metacode(a:mode, c)
endfor
endif
endfunc
call Terminal_MetaMode(0)
这样我们就可以在.vimrc
里面配置Alt
+其他任何键作为快捷键组合:
nnoremap <m-a> :A<CR>
这些配置好了以后,我们接下来就可以进入Vim 8.0
插件管理了。
待续:Vim 8.0
非常好用的插件管理器plug
,模糊查找文件利器LeaderF
,自动化生成tags
文件工具gutentags
等等。