文章目录
- vi / vim
- 命令模式
- 插入模式
- 光标定位
- 复制粘贴删除撤销
- 替换
- 删除
- 查找
- 底行模式
- 保存退出
- 行号
- 查找
- 多开
- 其他
- 视图模式
- 注释
- 异常
- vim配置
- vim插件
vi / vim
vim的本质是一个编辑器,是一种多模式的编辑器,只能进行读写操作,不能进行编译
- 编辑器:vim
- 编译器:gcc/g++
- 调试器:gdb
- 维护项目结构/自动化编译:make/makefile
- 模式切换
- 用Vim打开一个文件时,最初为命令行模式,输入
i
进入插入模式; - 插入/底行模式输入esc退出插入/底行模式,进入命令行模式;
- 命令模式下输入
:
进入底行命令行模式。
- 用Vim打开一个文件时,最初为命令行模式,输入
命令模式
命令模式是vim打开时默认的模式,在命令模式下所有的输入,都被当做命令命令来看待。除非你输入了模式切换的命令。
插入模式
光标定位
shift+$
定位到所在行结尾shift+^
定位到所在行的开头shift+g
定位到文本结尾行n+shift+g
定位到文本第N行gg
定位到文本第一行h,j,k,l
上下左右
复制粘贴删除撤销
yy
复制当前行n+yy
复制当前行及以下n-1行,共n行p
粘贴n+p
粘贴n行u
撤销编辑操作ctrl+r
对撤销操作进行撤销dd
删除所在行/剪切所在行(dd之后p进行剪切粘贴)n+dd
删除n行/剪切n行
替换
shift+~
大小写快速切换r+*
将光标所在字符替换为*n+r+*
将光标所在后n个字符替换为*shift+r(R)
进入替换模式(ESC退出替换模式)
删除
x
删除光标所在字符n+x
删除光标所在向后n个字符shift+x
删除光标所在左侧字符n+shift+x
删除光标所在左侧n个字符
查找
shift+#
高亮要查找的函数名/类名/字符串名n
下一个查找到的函数名/类名/字符串名
底行模式
底行模式中,在输入指令时开头需要先输入`:`
保存退出
:w
保存:q
退出:w!
强制保存:q!
强制退出:wq
保存并退出:wq!
强制保存并退出
行号
set + nu
开启行号set + nonu
取消行号
查找
/printf
在当前文件中搜索printf?printf
在当前文件中搜索printf
多开
vs filename
将当前文件与filename文件进行对比ctrl+w+w
在多个窗口中进行切换光标(光标在哪个界面就是在年纪哪个界面的文件)
其他
vim filename n
在打开filename文件时,光标直接定位在第n行shift+z+z
强制保存并退出vim(不建议)
视图模式
在命令模式下使用`CTRL+v`进入视图模式
注释
批量化注释
ctrl+v
hjkl区域选择
shift+i
//
ESC
- 批量化去注释
ctrl+v
hjkl区域选择
d
异常
vim没有正常退出(异常退出),vim会自动将你未保存的文件,保存到一个临时的隐藏文件中,再你下一次使用vim的时候,会每次都进行提示你。
vim配置
原生vim在启动的时候会读取当前用户下的配置文件。
普通用户
vim的配置文件通常存放在当前用户的家目录下的隐藏文件.vimrc
当在这个用户下使用vim时,vim会默认使用这个用户的家目录下的.vimrc
配置文件,来配置启动vim
.vimrc
"====== Basic Configuration ======
set number " 显示行号
set cursorline " 突出显示当前行
hi Cursorline cterm=bold ctermbg=black ctermfg=green guibg=green "粗体显示选中行,用黑色框,字体标绿
set cursorcolumn " 设置列高亮
hi Cursorcolumn cterm=bold ctermbg=black ctermfg=green guibg=green "粗体显示选中列,用黑色框,字体标绿
set autoindent " 自动缩进
set cindent
set tabstop=4 " Tab键的宽度
set softtabstop=4 " 统一缩进为4
set shiftwidth=4
set noexpandtab " 不要用空格代替制表符 或者使用expandtab将tab保存为space
set smarttab " 在行和段开始处使用制表符
set ignorecase "搜索忽略大小写
set hlsearch "搜索逐字符高亮
set incsearch "增强搜索
set smartindent " 提供自动缩进
syntax on " 语法高亮" 突出显示81列
set textwidth=80
set colorcolumn=+1nnoremap <c-n> :tabnext<cr> "切换下一个使用:tabe打开的tag页 映射为 ctrl+n
nnoremap <c-p> :tabprev<cr> "切换上一个使用:tabe打开的tag页 映射为 ctrl+p
root用户
root用户的vim配置文件在/etc/vimrc
中
vim插件
VimForCpp: 快速将vim打造成c++ IDE (gitee.com)
ps:本项目主要目标是帮助对vim配置方法不熟悉的新手封装的一键式vim环境安装包. 主要针对终端vim用户, 适合远程ssh连接Linux服务器进行开发的场景(例如使用阿里云服务器或者腾讯云服务器等).目前只支持 Centos7 x86_64。