Vim模式
普通模式(Normal Mode)
vim filename 即可启动vim, Vim启动后默认位于普通模式,此时不能向文本中输入内容,相当于只读文件,可以通过一些特殊的按键组合执行对应的操作,下面是常用的命令。
按键组合 | 操作 |
---|---|
ctrl + f | 向后移动一页 |
ctrl + b | 向后移动一页 |
gg | 移动到文件开头 |
G | 移动到文件结尾 |
/word | 向游标下方查找 word 这个字符串 |
?word | 向游标上方查找 word 这个字符串 |
n | 重复上一个/word或者?word例如上一个命令是/word,按n相当于继续执行/word |
N | 反向重复查找,例如上一个命令是/word,按N则相当于继续执行?word |
dd | 剪切游标所在的一整行 |
dG | 删除游标所在一行到文件末尾的所有内容 |
u | 撤销 |
ctrl + r | 重做 |
p | 将缓冲区的数据粘贴至光标所在行的下一行 |
P | 将缓冲区的数据粘贴至光标所在行的上一行 |
输入模式(Insert Mode)
在普通模式中输入以下按键即可进入插入模式,该模式下可以通过键盘输入内容,按ESC键即退出回普通模式。
按键组合 | 操作 |
---|---|
i | 在游标所在的字符之前插入需要录入的文本 |
I(大写i) | 在游标所在行的行首插入需要录入的文本 |
a | 在游标所在的字符之后插入需要录入的文本 |
A | 在游标所在行的行尾插入需要录入的文本 |
o | 在游标所在行的下一行行首插入需要录入的文本 |
O | 在游标所在行的上一行行首插入需要录入的文本 |
s | 删除游标所在处的字符然后插入需要录入的文本 |
S | 删除游标所在行,在当前行的行首开始插入需要录入的文本 |
ctrl + n | 代码补全 |
命令模式(Command Mode)
普通模式或者输入模式中按下:(英文冒号)或者/(斜杠)即可进入命令模式也叫底线命令模式(因为输入命令都在文件底部),在命令模式中可以输入并执行一些vim或插件提供的指令。下面是一些常用的命令。
命令 | 功能 |
---|---|
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:n | 跳转到第n行 |
/{目标字符串} | 查找目标字符串 |
:set hls | 高亮显示查找文本 |
:w | 保存 |
:w! | 强制保存 |
:q | 退出 |
:q! | 强制退出 |
:wq | 保存退出 |
:wq! | 强制保存退出 |
:e | 重新加载文件 |
:e! | 强制重新加载文件 |
:1, 100d | 删除1-100行 |
:%s/word1/word2/gc | 从第1行寻找至最后一行,将word1替换为word2,替换前提示是否替换 |
:n1, n2s/word1/word2/gc | 从第n1行寻找至n2行,将word1替换为word2 |
:redo | 重做 |
:help | vim参考文档 |
可视模式(Visual Mode)
普通模式下按v/V即可进入可视行(Visual Line)模式;按ctrl + v可以进入可视块(Visual Block)模式。可视模式可以选择任意长度的数据,进行复制、粘贴、替换等操作。下面是一些常用的命令。
命令 | 功能 |
---|---|
y | 复制选中内容 |
d | 剪切选中内容 |
shift + i | 需要先进入可视块模式,可视块插入模式,可以批量添加/删除注释 |
= | 配合/etc/vimrc中的设置进行代码自动缩进 |
Vim环境设置文件/etc/vimrc
vimrc文件是vim的环境设置文件,vim启动时会加载vimrc中的配置,我们可以修改vimrc文件达到我们想要的配置。下面是一个示例。
set backspace=indent,eol,start " allow backspacing over autoindent, line breaks, start of the insert
set ruler " display current row and column position
set viminfo='20,\"50 " read/write a .viminfo file, don't store more than 50 lines of registers
set history=50 " store 50 lines of command line history
set hls " 高亮显示查找结果
set nu " 显示行号
set ts=4 " " 按一个tab等于4个空格
set expandtab " 把制表符转换为多个空格
set autoindent " 开启自动缩进
set softtabstop=4 " 把连续空格视作一个tab,一次删除一个tab的空格量
set encoding=utf-8 " vim内部编码
set fileencodings=usc-bom,utf-8,gb18030,gbk,gb2312,cp936 "设置vim能识别的编码
set shiftwidth=4 " 自动缩进的空格长度
set cc=80 " 每行80个字符(非强制
set cursorline "突出显示当前行
set mouse=a "开启鼠标
set showmatch "高亮显示匹配的括号
" 突出显示行尾的空格
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
"语法高亮
syntax enable
syntax on
Vim与系统剪切板的交互
很多情况下我们并不仅仅在vim上操作,有可能需要把vim文件外的内容复制到vim文件中或者把vim文件里的内容拷贝到vim文件外,这时上面的一些命令就不太好用啦,下面是多种复制粘贴方式的一种,仅供参考。
/* 在系统剪切板中 */
ctrl + c; // 复制
ctrl + v; // 粘贴
/* 在vim中 */
"*y; // 复制,进入可视模式后选中内容接着敲下这三个键,前两个键需配合着shift使用
"+y; // 和楼上相同效果
shift + insert; // 粘贴
shift + ctrl + v; // 和楼上相同效果
随时会补充…