什么是vim
- Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
- 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
- 连 vim 的官方网站 自己也说 vim 是一个程序开发工具而不是文字处理软件。
- vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
- Visual Studio是继承开发环境,啥都给弄好了;vim需要自己配置,就可以实现像在Visual Studio写代码时,换行时自动行首缩进,代码高亮,自动补全括号等等。见文章最后:vim配置。
- 上图来源见文末参考
vi/vim 的使用
- 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
- 用户刚刚启动 vi/vim,便进入了命令模式。输入模式,底线命令模式返回至命令模式,按Esc。
- 特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。
- 举例来说,要删除 50 行,则是用 『50dd』 ;
- 举例来说,要删除 50 行,则是用 『50dd』 ;
正常/普通模式(Normal mode)
功能:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段
进入Insert mode下,或者到 last line mode
- 此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
光标移动:左下上右
- 左:「h」
- 下:「j」
- 上:「k」
- 右:「l」
- 默认单行移动:例如向下移动 30 行加上想要进行的次数(数字)后,按下动作即可:「30j」
光标移动:行首、行尾、移动到任意行
- 「^」:移动到光标所在行的“行首”。shift 6…
- 「$」:移动到光标所在行的“行尾”。shift 4…
- 「数字」「shift」「g」:移动到任意一行
光标移动:单词为单位
- 「b」:光标回到上个词的开头
- 「w」:光标跳到下个词的开头
- 「e」:光标跳到下个词的词尾
光标移动:文本开始、文本末端
- 「shift」「g」=「G」:文本末尾。
hhh,以前写的有些文章结束标题就是G,看来是vim正统 - 「gg」:文本开始
文本的:粘贴
- 「p」:将缓冲区内的字符贴到光标所在位置。
- 「数字n」「p」:将缓冲区的内容复制 n 次。
文本的:单词(字)复制
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
- 「数字n」「yw」:复制 n 个字符到缓冲区。
文本的:行复制
- 「yy」:复制光标所在行到缓冲区。
- 「数字n」「yy」:复制光标 n 行到缓冲区。
- 使用:「yy」以后,光标移动到要粘贴的位置,按「p」
- 从一个文件复制到另一个文件:nyy+ p
文本的:字符左删、右删
- 「x」:每按一次,删除光标所在位置的一个字符
- 「数字n」「x」:「6x」表示删除光标所在位置的 “后面(包含自己在内)” 6个字符;
- 「数字n」「shitf」「x」:例如,「20X」表示删除光标所在位置的“前面”20个字符,不加 n 默认1.
文本的:行删除
- 「dd」:删除光标所在行
- 「数字n」「dd」:从光标所在行开始删除 n 行
文本修改:局部替换字符
- 「r」:替换光标所在处的字符。
- 「数字n」「r」:替换光标所在处的 n 个字符。
文本修改:替换模式
- 「shift」「r」:进入替换模式,可以一直输入;
- 直到按下「ESC」键为止。
文本修改:大小写切换
- 「shift」「~」:按一下切换一次,一直按,一直切换到行尾。
撤销操作
- 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
- 「ctrl + r」: 撤销的恢复;撤销「u」的操作。
插入模式(Insert mode)
功能:只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
该模式就是日常使用的文本编辑。
- 按「i」切换进入插入模式「insert mode」,是从 光标当前位置 开始输入文件;
按「a」进入插入模式后,是从 目前光标所在位置的下一个位置 开始输入文字;
按「o」进入插入模式后,是从 插入新的一行,从行首 开始输入文字。
末(底)行模式(last line mode)
功能:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
- 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes
显示行号
- 显示行号,设定之后,会在每一行的前缀显示该行的行号:
set nu
;文本写了几行显示几行,回车显示新行号… - 与 set nu 相反,为取消行号!
set nonu
跳到文件中的某一行
- 「shift」「:」:在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
查找字符
- 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
- 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
执行bash命令,源文件分屏切换
- 输入
!
以后,就可以执行bash命令 - vim同时编辑多个文件…
批量替换:行单词替换
- 语法:
:{作用范围}s/{目标}/{替换}/{替换的标志}
,- g 即是替换标志之一,表示全局 global 替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:
- 把当前光标所在行的 zempty 替换成 handsome
:s/zempty/handsome/g
批量替换:全文某单词的替换
- 把全文中的 zempty 替换成 handsome
:%s/zempty/handsome/g
批量替换:指定行的单词替换
- n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有 zempty 为 handsome.
:n1,n2s/zempty/handsome/g
保存文件离开vim
- 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
Vim配置
- 关于修改配置相关的东西,建议新建一个账号练手试水,没问题再换账号操作。
- 美化高亮,换行自动缩进,补全括号等,提示vim模式信息等等各种操作。
- run command”(运行命令)…"rc”是任何脚本类文件的后缀,这些脚本通常在程序的启动阶段被调用,通常是Linux系统启动时。
配置文件的位置
- root账户目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
- 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:
“.vimrc”
。进入自己的主工作目录 cd ~,通常已经存在一个.vimrc文件,如果不存在,则创建之。 vim .vimrc
,开始编写配置。
[tmpp@VM-12-7-centos ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .config
[tmpp@VM-12-7-centos ~]$ touch .vimrc
[tmpp@VM-12-7-centos ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .config .vimrc
[tmpp@VM-12-7-centos ~]$ vim .vimrc
....
简单配置测试
- 设置语法高亮: syntax on
- 显示行号: set nu
[tmpp@VM-12-7-centos ~]$ vim .vimrc
[tmpp@VM-12-7-centos ~]$ cat .vimrc
syntax on
set nu
set shiftwidth=4
[tmpp@VM-12-7-centos ~]$ vim tt.c
[tmpp@VM-12-7-centos ~]$ cat tt.c
#include<stdio.h>
int main()
{
return 0;
{
//宽度还需要识别代码块内,两个大括号之间,回车换行什么的插件,才可以实现自动缩进..
- 一键式vim环境安装包,可以搜一键化配置vim的方案,vim常见插件等等…
- 帮助对vim配置方法不熟悉的新手封装的一键式vim环境安装包. 主要针对终端vim用户, 适合远程ssh连接Linux服务器进行开发的场景…
VIM的批量注释
- 替换命令:
- 批量注释,使用下面命令在指定的行首添加注释。
- 使用名命令格式: :起始行号,结束行号s#^#注释符#g(注意冒号)。
:10,20s#^#//#g
- 取消注释:
- 使用名命令格式: :起始行号,结束行号s#^注释符##g(注意冒号)。
:10,20s#^//##g