安装
sudo apt-get install vim
状态模式
vim通常的两种模式:命令模式(左)、插入模式(右)
常用命令
命令 | 详情 |
---|---|
i/a/o | 从命令模式切换到插入模式 |
Esc | 从插入模式切换到命令模式 |
dd | 删除当前行 |
yy | 复制当前行 |
3dd/yy | 从当前行开始删除/复制3行 |
p | 粘贴剪贴板中内容 |
u | 撤销上一次操作 |
gg | 去到首行 |
:w | 保存 |
:wq | 保存并退出 |
:q | 退出(未编辑时) |
:q! | 不保存编辑并退出 |
h/j/k/l | 左/下/上/右(vi不支持方向键) |
自定义配置文件
vim ~/.vimrc
"==============================================================
" vim 自定义配置文件
"==============================================================
set nocompatible " 关闭 vi 兼容模式
set mouse=a " 支持使用鼠标
" 显示设置-----------------------------------------------------
syntax on " 开启语法高亮显示
set t_Co=256 " 打开256色
set number " 显示行号
set cursorline " 突出显示当前行
set ruler " 打开状态栏标尺
set linespace=2 " 字符间插入的像素行数目
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
set scrolloff=3 " 光标移动到顶或底部时保持3行距离
" 文件设置-----------------------------------------------------
set autowrite " 自动保存
set autoread " 设置当文件被改动时自动载入
set confirm " 在处理未保存或只读文件的时候,弹出确认
set nobackup " 从不备份
set noswapfile " 禁止生成临时文件
" 文本格式和排版------------------------------------------------
set formatoptions=tcrqn
set autoindent " 继承前一行的缩进方式,特别适用于多行注释
set smartindent " 为C程序提供自动缩进"
set smartindent " 开启新行时使用智能自动缩进
set iskeyword+=_,$,@,%,#,- " 带有如下符号的单词不要被换行分割
" 按键设置------------------------------------------------------
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set tabstop=8 " 设定 tab 长度为 4
set expandtab " 不要用空格替代制表符
set backspace=indent,eol,start " 非插入模式无法用退格和 Delete 键
" 状态栏-命令行-窗口--------------------------------------------
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
set laststatus=2 " 默显示2
set cmdheight=1 " 设定命令行的行数为 2
set showcmd " 显示输入的命令
set wildmenu " 增强模式中的命令行自动完成操作
" 窗口分割时,<c-w-w>,切换窗口重映射为<c-k>-----------------------
nnoremap <C-h> <C-w>h
nnoremap <C-k> <C-w>k
nnoremap <C-j> <C-w>j
nnoremap <C-l> <C-w>l
" 符号自动补全--------------------------------------------------
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
" 中文编码-----------------------------------------------------
"let &termencoding=&encoding
"set fileencodings=utf-8,gbk