Vim
基础
Vim 的3种工作模式
一般模式(指令模式)、编辑模式、命令行模式
cpp
:set nu //显示行号
:set nonu //不显示行号将vim置于后台
Ctrl + z 可以将vim 置于后台
fg命令可以调回
快速开始
文本选择
在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择。 其它相关命令:
- v:按字符选择。经常使用的模式,所以亲自尝试一下它。
- V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。
复制粘贴
| 一般模式下删除、复制和粘贴 | |
|---|---|
| x,X | x为向后删除一个字符,X为向前删除一个字符 |
| dd | 剪切(删除)光标所在的那一行 |
| ndd (n 是数字) | 剪切(删除)光标所在的向下n行 |
| dG | 剪切(删除)光标所在行到末行的所有数据 |
| yy | 复制光标所在的那一行 |
| nyy (n 是数字) | 复制光标所在行开始的向下n行 |
| yG | 复制光标所在行到末行的所有数据 |
| p,P | p将复制的数据从光标下一行粘贴,P则从光标上一行粘贴 |
| u | 撤销一步操作 |
| Ctrl + r | 重复上一个操作 |
| - | 重复前一个操作 |
删除特定行,需要在命令行模式下
bash
:20, 30d // 删除20-30行bash
y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用
yy 复制整行(nyy或者yny ,复制n行,n为数字);
y^ 复制当前到行头的内容;
y$ 复制当前到行尾的内容;
yw 复制一个word (nyw或者ynw,复制n个word,n为数字);
yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)
d 剪切选定块到缓冲区;
dd 剪切整行
d^ 剪切至行首
d$ 剪切至行尾
dw 剪切一个word
dG 剪切至档尾
x 删除当前光标下的字符
c 功能和d相同,区别在于完成删除操作后进入INSERT MODE
cc 也是删除当前行,然后进入INSERT MODE移动光标
| 一般模式下移动光标 | |
|---|---|
| h 或左方向键 | 向左移动一个字符 |
| j 或下方向键 | 向下移动一个字符 |
| k 或上方向键 | 向上移动一个字符 |
| l 或右方向键 | 向右移动一个字符 |
| PgUp 或 Ctrl + b | 向上翻一页 |
| PgDn 或 Ctrl + f | 向下翻一页 |
| G | 光标移动到文本的最末行 |
| nG (n 是数字) | 光标移动到文本的第n 行 |
| gg | 光标移动到文本的首行 |
查找替换
| 一般模式下的查找与替换 | |
|---|---|
| /keyword | 向光标之后寻找名为keyword的字符串,当找到第一个keyword后,该单词高亮显示,按下“n” 继续查找下一个,按下“N”反方向查找下一个 |
| ?keyword | 向光标之后寻找名为keyword的字符串,当找到第一个keyword后,该单词高亮显示,按下“n” 继续查找下一个,按下“N”反方向查找下一个 |
| :n1,n2s/word1/word2/g | 在n1和n2行之间查找word1字符串并替换为word2 |
| :1,$s/word1/word2/g | 从第一行到最末行,查找word1并替换word2 |
| :1,$s/word1/word2/gc | 从第一行到最末行,查找word1并替换word2,替换之前需要用户确认 |
搜索之后,我们打开文件,发现搜索的字符被高亮了,可以取消
bash
:set nohlsearch| 从一般模式进入编辑模式 | |
|---|---|
| i | 在光标前插入字符 |
| I | 在光标所在行的行首插入字符 |
| a | 在光标后插入字符 |
| A | 在光标所在行的行末插入字符 |
| o | 在光标所在行下插入新的一行 |
| O | 在光标所在行上插入新的一行 |
比较常用就是小i和小o
命令行模式
| 命令行模式 | |
|---|---|
| :w | 保存文本 |
| :w! | 如果文件属性为只读是,强制保存 |
| :q | 退出vim |
| :q! | 前置退出vim, 不管编辑还是未编辑都不保存退出 |
| :wq | 保存之后退出 |
| :e! | 将文档还原成最原始的状态 |
| ZZ | 等价于:wq |
| :w [filename] | 将文档另存为 filename |
| :set nu | 在每行行首设置行号 |
| :set nonu | 取消行号 |
| :n1, n2 w [filename] | 将n1 到 n2 行的内容另存为 filename 文件中 |
| :! command | 暂时离开vim, 执行某个Linux命令,例如:! ls /home暂时列出/home下的文件,然后会提示按回车返回vim |
Linux 下Vim配置
在根目录下新建.vimrc文件,此文件是Vim的配置文件。在里面输入下面内容:
bash
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set nu
set autoindent
set cindent
"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
: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
Tabstop: 表示一个 tab 显示出来是多少个空格的长度默认 8。
Softtabstop: 表示在编辑模式的时候按退格键的时候退回缩进的长度当使用 expandtab 时特别有用。
Shiftwidth: 表示每一级缩进的长度一般设置成跟 softtabstop 一样。 当设置成 expandtab 时缩进用空格来表示,noexpandtab 则是用制表符表示一个缩进。
- Nu: 表示显示行号。
- Autoindent: 表示自动缩进。
- Cindent: 是特别针对C语言自动缩进。
编辑完成后,保存退出,输入下面命令使配置文件生效
bash
source ~/.vimrc
秋叶依剑