1 vim
zi 展开和折叠代码
批量在所有行添加字符 control + v选中所有行,大写I
ctrl+双w:左右界面切换;
/+字符串:在此文件搜索字符串匹配
shift+v:全选行;
shift+v,上下键:选多行
shift+j 合并多行为一行
y:复制
p:粘贴
dd:删除行
2 vim版本
一些操作系统版本比较低,而安装插件需要依赖比较高的vim版本,比如查看目录结构的scrooloose/nerdtree, 需要保证vim版本大于7.3.
可以直接下载最新的vim分支,直接编译出新版本二进制,然后放到环境变量
git clone git@github.com:vim/vim.git
cd vim
//make distclean # if you build Vim before
make -j 10
sudo make install
cp src/vim /usr/bin
3. vim常用插件
‘VundleVim/Vundle.vim’ 插件管理结构,可以完成所有插件的增加、删除以及更新等操作,有点像插件的应用商店
‘vim-scripts/taglist.vim’ "source code browser
‘majutsushi/tagbar’ "tag generation and navigation
‘scrooloose/syntastic’
‘Valloric/YouCompleteMe’ "强大的代码补全工具
‘Chilledheart/YouCompleteMe’
‘Lokaltog/vim-powerline’ "powerline,在vim下面显示一些常用信息,比如当前行,时间等等
‘scrooloose/nerdcommenter’ "添加/删除注释
‘derekwyatt/vim-fswitch’ "switch between *.h and *.cpp
‘ntpeters/vim-better-whitespace’ "detect the whitespace and delete
omnicppcomplete 下载网址
omnicppcomplete: 基于ctag的代码不全工具,比YouCompleteMe效果查,但是很轻量。注意:omnicppcomplete显示"pattern not found",这是因为ctags生成需要参数,按照如下命令:
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ./
主题相关:
‘tomasr/molokai’
‘altercation/solarized’
插件安装多了,可能导致一些快捷键冲突,可以用如下命令检测
// 查看谁绑定了tab键
:verbose imap <tab>
4. vim支持python
默认vim是不支持python,
vim --version | grep python
如果看到python前面有—标记,需要下载源码重新安装vim
(1) python安装
安装命令都比较简单:
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
tar -zxvf Python-3.8.0.tgz
cd Python-3.8.0
./configure --prefix=/usr/lib/python3.8 --enable-shared
sudo make && sudo make install
Note:
- 一些版本默认只生成静态库,–enable-shared生成动态库
- 过程中可能提示一些依赖缺失,比如压缩zlib, yum -y install zlib*,按需安装即可
(2) vim安装
Github下载源代码:
./configure \
--enable-multibyte \
--enable-python3interp=dynamic \
--enable-cscope \
--enable-gui=auto \
--with-features=huge \
--with-x \
--enable-fontset \
--enable-largefile \
--disable-netbeans \
--with-compiledby=sh1r0 \
--enable-fail-if-missing
sudo make && sudo make install
// 清理命令
sudo make distclean
sudo make uninstall
Note:
- –enable-python3interp=dynamic表示动态依赖python3, 也可以–enable-pythoninterp=yes
- 加入python, --enable-pythoninterp=dynamic
验证安装成功:
vim --version | grep python
可以看到+python
同时打开vim:
// 可以打印版本
:python import sys; print(sys.version)
:python3 import sys; print(sys.version)
--with-features=huge: //支持最大特性
--enable-rubyinterp: //打开对ruby编写的插件的支持
--enable-luainterp: //打开对lua编写的插件的支持
--enable-perlinterp: //打开对perl编写的插件的支持
--enable-multibyte: //打开多字节支持,可以在Vim中输入中文
--enable-cscope: //打开对cscope的支持
--enable-pythoninterp: //打开对python编写的插件的支持
--enable-python3interp: //打开对python3编写的插件的支持
--prefix=/usr/local/vim81 //指定安装路径,可自定义。
5. vim代码补全
YouCompleteMe 功能强大,具有代码补全以及IDE常用功能,不过安装繁琐。可以借助于clang/cangd本身做代码补全和基本的语法检测,提升编码效率
(1) clang_complete
clang_complete,需要安装LLVM,安装配置即可
(2) vim-clang
相比clang_complete更轻量,补全速度快
(3) vim创建c++模版
cd ~/.vim/
mkdir templates && cd templates
vim c++tem.cpp // 写入模版
vim c++tem.h // 写入模版
vim ~/.vimrc
// 添加
:autocmd BufNewFile *.cpp 0r ~/.vim/templates/c++tem.h
:autocmd BufNewFile *.cpp 0r ~/.vim/templates/c++tem.cpp
6. vim粘贴模式
vim有一个 Paste 模式,在该模式下,可将文本保持原样粘贴到 Vim 中,以避免一些格式错误,比如行不对齐
在 vim 中输入命令:
# 设置 粘贴模式
:set paste
# 取消 粘贴模式
:set nopaste