Vim(Vi Improved)是一款功能强大的文本编辑器,在Linux系统中广泛使用。它是 Vi 文本编辑器的改进版本,我们可以通过vim来正式地编辑一个文件,下面我将介绍vim的相关操作。
vim + 文件名 就可以进入文件
目录
[<1> 模式的转换](#<1> 模式的转换)
[<5>visual block模式](#<5>visual block模式)
[二、vim 的配置问题](#二、vim 的配置问题)
一、vim的主要三个模式
<1> 模式的转换
vim 这个编辑器有许多的模式,但是比较重要的就是命令模式,底行模式,插入模式。 我们刚进入vim 这个编辑器时,所处的模式就是命令模式,此时我们敲击键盘上的任何字符都会被认为是命令。但是我们需要的是编辑文件,所以我们必需转换到插入模式,具体操作就是按 o 、i、a中任意一个键就可以进入插入模式,进入后我们会看到底下会有标识。
如果我们想退出插入模式,并回到命令模式,我们可以按左上角的 esc 键。那命令模式该如何转换成底行模式呢? 按shift 键 + ;键即可。此时我们就进入了底行模式,如果我们想回退到命令模式,直接按esc 即可。但是插入模式和底行模式是不能相互转换的。
退出vim 时,要先转成底行模式,再按W + Q键,如果vim 异常退出,比如直接关闭linux 系统,或其他一些不规范的操作,会导致下一次编辑文件时无法进入(如下图)
因为vim的异常退出,导致了形成了一个".lesson7 .swp" 的隐藏文件保存了之前的数据(参见上图的第二行:"Found a swap .....".lesson7.swap""),这里我们呢只需要在命令行输入shift + R键, 如果没有作用,那也可以尝试shift + D键,删除这个文件,如果还是没用,我们可以直接实现ls -al 命令,然后在当前目录文件下查找该隐藏,直接删除。不过要注意的是,原来文件里的数据可能会丢失一部分,所以我们还是要按正常的操作进行退出。
<2>具体命令
1.插入模式:由于插入模式就相当于编译器写代码一样,区别就是没有鼠标,所以插入模式就不具体介绍了。
2.命令模式
下面介绍命令模式的一些具体的命令
|-------------------|---------------------------|
| shift + $ | 将光标定位到当前行的最右侧 |
| shift + ^ | 将光标定位到当前行的最左侧 |
| shift + g | 将光标定位到最后的一行 |
| gg | 将光标定位到最开始的一行 |
| n+ shift + g | 将光标定位到第n行 |
| h | 向左移光标 |
| l | 向右移光标 |
| j | 向下移光标 |
| k | 向上移光标 |
| n + yy | 复制当前行/n行 |
| n + p | 在下一行粘贴一次或n次 |
| u | 撤销编辑操作(undo) |
| ctrl + r | 对撤销进行撤销 |
| n + dd | 删除当前 n 行 / 剪切当前的n行(配合p使用) |
| shift + ~ | 从当前行的开头位置开始按住,表示大小写的快速切换 |
| n + r | 替换当前光标的字符 |
| shift + r | 替换模式(将原有的内容进行替换) |
| esc | 可以将任何模式回退到命令模式 |
| n + x | 从当前光标开始,向后删除n个字符 |
| n+ shift + x | 从当前光标开始,向前删除n个字符 |
| w | 以一个单词为单位,向后移动 |
| b | 以一个单词为单位,向前移动 |
| shift + # , r然后按n | 快速查找函数 |
| | |
| | |
因为在vim诞生的时候,鼠标并没有广泛使用,所以才会有上下左右的光标移动键,老式键盘里hjkl就是表示上下左右,现在才演化出来方向键。注意撤销在退出vim后,再次登录就没用了。光标的起始位置是在上一次退出时光标的位置,如果要修改进入时光标所在的位置,在文件名后跟 + n(行号)
<3>插入模式
|------------|-------------------------------|
| w | 保存 |
| q | 退出 |
| q! | 强制退出 |
| wq | 保存并退出 |
| wq! | 保存并强制退出 |
| !command | 跳出vim执行该命令 |
| vs filname | 另一个文件,并分屏(如果文件不存在,会自动创建一个新文件) |
| ctrl + ww | 移动光标到另一个终端(屏幕) |
| set nu | 标出行号 |
| set nonu | 取消行号 |
| | |
vs + filename 命令会导致分屏操作,这里我们的光标是只有一个的,所以我们关注光标所在位置即可
<4>其他模式
我们可以在底行模式中输入help vim-modes命令,查看vim的模式,
总共12种模式,这里就不赘述了,如有需要可自行查看。
<5>visual block模式
我们可以使用这个模式进行对文件中代码的批量化的注释,我们可以使用ctrl + v 键进入该模式,下面介绍批量化注释的过程。
|----|-------------|
| 1. | ctrl+v |
| 2. | hjkl 进行区域选择 |
| 3. | shift + i |
| 4. | 输入// |
| 5. | Esc |
[批量化注释过程]
结果如图所示。
|----|----------|
| 1. | ctrl + v |
| 2. | hjkl区域选择 |
| 3. | d 键 |
[批量化去注释过程]
经过以上三个步骤就可以去注释。
二、vim 的配置问题
上图的vim 都是经过配置的,vim的很多功能是需要配置的,比如高亮、显示自动退格,换行......
初始的vim界面如下图
下面我将介绍vim的配置问题,
在配置vim之前,我们需要进入自己用户的家目录下,创建一个.vimrc 的隐藏文件(有就不用了),我们在启动vim ,vim 会根据这个文件配置文件配置启动vim。每一个用户都可以个性化配置自己的vim ,(root 有自己的.vimrc 文件)。
我们可以打开.vimrc 文件,然后进行配置,配置命令有很多,大家可以根据自己喜欢进行配置
" 显示行号
set number
" 启用语法高亮
syntax on
" 设置缩进为4个空格
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
" 搜索时高亮显示匹配项
set hlsearch
" 搜索时忽略大小写
set ignorecase
" 智能大小写搜索(如果有大写字母则区分大小写)
set smartcase
" 当文件被外部更改时自动加载
set autoread
" 使用鼠标
set mouse=a
" 禁止备份文件
set nobackup
set noswapfile
" 禁止闪烁
set novisualbell
" 命令行高度为2
set cmdheight=2
" 显示括号匹配
set showmatch
" 匹配括号高亮的时间(毫秒)
set matchtime=2
" 历史记录数
set history=1000
" 搜索时实时显示当前匹配的位置
set incsearch
" 文件编码
set encoding=utf-8
" 文件格式
set fileformat=unix
" 自动缩进
set autoindent
" 共享剪贴板
set clipboard=unnamedplus
" 自动切换粘贴模式
set paste
" 允许使用退格键
set backspace=indent,eol,start
" 括号自动完成
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap { {}<Esc>i
inoremap " ""<Esc>i
inoremap ' ''<Esc>i
" 快速保存退出
nmap <leader>w :wq<CR>
" 全选
map ggVG gg0VG$
" 重新打开上一次关闭的文件
nmap <leader>f :e#<CR>
" 打开.vimrc文件
nmap <leader>v :e ~/.vimrc<CR>
" 显示/隐藏行号
nmap <leader>n :set nu!<CR>
" 切换粘贴模式
nmap <leader>p :set paste!<CR>
下面演示一两个,
通过set nu表示自动设行号,第一个表示语法高亮(其实这个大部分vim都默认有这功能)
上面列举得只是一些配置,如果需要更多得配置,大家可以通过Al 来进行搜索。
如果大家不想配置,下面输入下面得指令(该网址有配置好的vim 文件),注意不要在root 账号下运行该命令。
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh(本命令仅支持centos 7 的linux 系统)
然后按照提示输入root密码,然后我们等待安装完毕,最后手动执行source ~/.bashrc即可,大家也可以在gitee 或 github 上寻找文件。
配置好后,vim 的界面是这样的。
以上就是vim 的全部内容,希望对你有些许帮助,感谢各位读者的阅读,文中如有不对之处,还望各位大佬指正,谢谢!!!!