命令操作
.
: 重复上次的修改
u
: 撤销上次的修改
ctrl+r
: 撤销刚才的撤销
移动操作
h j k l
: 左; 下; 上; 右
ctrl+f ctrl+b ctrl+d ctrl+u
: 向下一页; 向上一页; 向下半页; 向上半页
0 $
:行首 行尾
G gg nG n<space> n[enter]
: 文件最后一行;文件第一行;n代表数字
查找
/word ?word
*
:查找当前光标下的单词
shift + * :# 向下查找并高亮显示
shift + # :# 向上查找并高亮显示
g + d :# 高亮显示光标所属单词, “n”查找
`n`: 重复前一个查找的操作。`N`:反向进行前一个查找操作
f{char}
命令让Vim查找下一处指定字符出现的位置,如果找到了,就直接把光标移到那里。
;
命令会重复查找上次f
命令所查找的字符。
编辑操作
a
: 在当前光标之后添加内容
A
: 在当前行的结尾添加内容
ctrl+p, ctrl+n
: 自动补全
>G
: 增加当前行到文档末尾处的缩进层级。
替换
:n1,n2s/word1/word2/g # 在n1行到n2行之间替换word1为word2
:1,$s/word1/word2/g # 从1到最后一行
:1,$s/word1/word2/gc # 从1到最后,并在替换之前要求用户确认(confirm)
删除,复制与粘贴
x,X # 删除一个字符
nx
dw
dd # 删除一行
ndd
d1G # 删除到第一行
dG
d$ #删除到行尾
d0
yy # 复制
nyy
y1G
yG
y0
y$
p,P # 粘贴
vim的保存文件、恢复与打开时的警告信息:.fliename.swap
vim的功能
块选择(Visual Block)
v: 字符选择
V: 行选择
ctrl+v:块选择
y:将反白的地方复制
d:将反白的地方删除
多文件编辑
vim后面可以同时接好几个文件打开
:n # 编辑下一个文件
:N # 编辑上一个文件
:files # 列出目前这个vim打开的所有文件
多窗口功能
:sp [ctrl]-w + s #切换
:vsp newfile [ctrl]-w + w #切换
_vimrc
" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC
set nobackup
set noswapfile
" 禁止声音
set novisualbell
set noerrorbells
set t_vb=
" 定义快捷键的前缀,即<Leader>
let mapleader=";"
" 开启文件类型侦测
filetype on
" 根据侦测到的不同类型加载对应的插件
filetype plugin on
" 设置快捷键将选中文本块复制至系统剪贴板
vnoremap <Leader>y "+y
" 设置快捷键将系统剪贴板内容粘贴至 vim
nmap <Leader>p "+p
" 开启实时搜索功能
set incsearch
" 搜索时大小写不敏感
set ignorecase
" 关闭兼容模式
set nocompatible
" vim 自身命令行模式智能补全
set wildmenu
" 配色方案
set background=dark
colorscheme desert
"colorscheme molokai
"colorscheme phd
" 禁止光标闪烁
set gcr=a:block-blinkon0
" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R
" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T
" 总是显示状态栏
set laststatus=2
" 显示光标当前位置
set ruler
" 开启行号显示
set number
" 高亮显示当前行/列
set cursorline
set cursorcolumn
" 高亮显示搜索结果
set hlsearch
" 设置 gvim 显示字体
set guifont=YaHei\ Consolas\ Hybrid\ 11.5
set guifont=Consolas:h14
" 禁止折行
set nowrap
" 开启语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on
" 自适应不同语言的智能缩进
filetype indent on
" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让 vim 把连续数量的空格视为一个制表符
set softtabstop=4
" 基于缩进或语法进行代码折叠
"set foldmethod=indent
set foldmethod=syntax
" 启动 vim 时关闭折叠代码
set nofoldenable
set backspace=2
set mouse=a
set autoindent
set showmode
set showcmd
set showmatch
" set cmdheight=2