文章目录
前言
本文主要介绍了VIM编辑器的基本操作。
一、VIM编辑器是什么?
Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
Vim是一款纯命令行操作、功能可扩展、高度可定制的文本编辑工具。对于新手来说,刚接触Vim,对这种纯命令行的操作的文本编辑模式可能很不适应;你可能连保存、退出都不知道怎么操作,此时鼠标也爱莫能助,怎么点也没有什么反应,真可谓叫”天天不灵,叫地地不灵“,最后干脆关掉重启。一但过了适应期,上手用熟之后,Vim定会让你尽享其中、无法自拔:当手指在键盘上健步如飞,各种命令信手拈来,此时的你才会感受到Vim的强大功能和高效便捷。让手指跟上你的思维的脚步。让节奏在你的指尖肆意流淌。再配上键盘中那清脆的敲击声。让你心旷神怡。此刻才会发现鼠标是多么的笨拙和多余,当你拖着鼠标满屏寻找保存、退出按钮时。你才会发现Vim的指随心动时多么的畅快。如果再搭配各种插件的安装和使用、各种快捷命令的按键映射、各种得心应手的配置,我们可以把Vim打造成类似Source Insight的IDE。
二、VIM优点
高效率移动
- 在插入模式之外基本上来说,尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。 VIM 的强大之处在于他的命令模式!
- 使用 h、j、k、l使用 VIM 高效率编辑的第一步,就是放弃使用箭头键。使用 VIM就不用频繁的在箭头键和字母键之间移来移去了,这会节省很多时间。当命令模式时,可以用 h、j、k、l 来分别实现左、下、上、右箭头的功能。
- 在当前行里面有效的移动光标很多编辑器只提供了简单的命令来控制光标的移动(比如左、上、右、下、到行首/尾等)。VIM 则提供了很多强大的命令来满足控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。
- 在整个文件里面有效移动光标VIM 有很多命令,可以用来到达文件里面你想到达的地方。
高效的输入
- 使用关键词自动完成VIM 有一个非常漂亮的关键词自动完成系统。使用关键词自动完成功能,只需要输入开始几个字母(比如 iAmAL),然后按 (按住 Ctrl,再按 N)或者 。如果 VIM 没有给出你想要的词,继续按,直到你满意为止,VIM 会一直循环它找到的匹配的字符串。
- 聪明的进入插入模式VIM 提供了很多进入插入模式的命令。
- 有效的移动大段的文本使用可视选择(visual selections)和合适的选择模式。不像最初的 VI,VIM 允许你高亮(选择)一些文本,并且进行操作。
- 在可视选择模式下剪切和拷贝
- 粘贴粘贴很简单,按 p。
- 使用多重剪贴板很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器(Registers)。你可以列出当前定义的所有寄存器名和它们的内容,命令为“:reg”。最好使用小写字母来作为寄存器的名称,因为大写的有些被 VIM 占用了。
- 避免重复在 VI 里面,输入 . (小数点符号),将会重复输入的上一个命令。
- 使用数字也是 VIM 强大的而且很节省时间的重要特性之一。在很多 VIM 的命令之前都可以使用一个数字。
接下来就是进入Vim的操作学习之旅了
三、安装Vim
在LINUX的环境下,Vim的安装
在Ubuntu环境下安装Vim很简单,如果你的Ubuntu操作系统是联网的,直接在Shell命令行中输入下面的命令即可完成安装
在ROOT模式下:
#apt-get install vim
在普通用户模式下:
$sudo apt-get install vim
不同的Linux/UNIX操作系统,Vim的安装可能不太一样,如在Fedora/centorOS或者macOS 下面我们使用下面的命令安装Vim
在Fedora/centorOS下指令:
#yum install vim
在macOS下指令:
#brew install vim
安装好之后,在Shell命令行中输入: vim。如果安装成功,就会启动Vim并弹出一个Vim界面,显示Vim的版本号。
#vim
在Window的环境下,Vim的安装
省略
四、Vim常用命令
Vim有多种工作模式,不同的工作模式之间都可以通过命令来回切换,这会让我们浏览和编辑代码非常方便和贴心。
Vim常见的工作模式如下:
-
普通模式:打开文件时的默认模式,任何模式都可以通过按下ESC键返回到该模式。
-
插入模式:按下i/o/a键进入插入模式,进行文本编辑操作,不同之处在于插入字符的位置在光标之前还是之后。
-
命令行模式:在普通模式下按下(:)后会进入命令行模式,在该模式下可以输入各个指令。
-
可视化模式:在普通模式下按下(v)会进入可视化模式,在该模式下可以移动光标选中一块文本,然后进行复杂,剪切,删除,粘贴等文本操作。
-
替换模式:在普通模式下通过光标选中一个字符,然后按®键,在输入一个字符,这时候后面输入的字符会覆盖光标原来的字符。
Vim的操作其实就是光标的移动,文本的插入,删除,复制,粘贴,查找,替换,保存和退出等基本操作,就可以熟练使用Vim编辑文本了。
光标移动
1. 单个字符的移动
- k: 在普通模式下, 按下k键,光标向上移动一个字符。
- j: 在普通模式下, 按下j 键,光标向下移动一个字符。
- h: 在普通模式下, 按下h键,光标向左移动一个字符。
- l: 在普通模式下, 按下l 键,光标向右移动一个字符。
2. 单词移动
- w: 在普通模式下, 按下w键,光标移动下一个单词的开头。
- b: 在普通模式下, 按下b键,光标移动上一个单词的开头。
- e: 在普通模式下, 按下e键,光标移动下一个单词的结尾。
- E: 在普通模式下, 按下E键,光标移动下一个单词的结尾(忽略标点符号)。
3. 行移动
- $: 在普通模式下, 将光标移动到当前行的行尾。
- 0: 在普通模式下,将光标移动到当前行的行首。
- 2|: 在普通模式下,将光标移动到当前行的第2列。
- nfx: 在普通模式下,将光标到当前行光标所在处后面的第n个字符x上。
- %:在普通模式下,光标在符号键移动{}、()、[]之间跳跃。
4. 屏幕移动
- nG: 在普通模式下,光标跳转到指定的第n行行首。
- gg/G: 在普通模式下,光标跳转到文件的开头行首/结尾行首。
- L:在普通模式下,光标跳转到屏幕的末尾行首(注意这个是屏幕的末尾行行首,G是文件结尾行行首)。
- ctrl+g: 查看光标当前位置。
- ctrl+u/d: 光标向前/后半屏滚动。
- ctrl+f/b: 光标向前/后全屏滚动。
文本的基本操作
5. 文本的插入删除等操作
- i/a: 在当前光标前/后插入字符。
- I/A:在当前光标的行首/行尾插入字符。
- o: 在当前光标所在的下一行插入一行新行。
- x: 删除当前光标所在的字符。
- X: 删除当前光标前面的一个字符。
- dw: 删除一个单词。
- dd: 删除一整行。
- yw: 复制一个单词。
- yy: 复制一整行。
- p: 粘贴。
6. 文本的查找与替换
- /string: 在Vim的普通模式下输入/string既可正向往下查找字符串string。
- ?string: 在Vim的普通模式下输入?string既可反向往上查找字符串string。
- set hls: 设置显示高亮的单词。
- set nohls: 设置取消显示高亮的单词。
- s/old/new:将当前行的第一个old替换成new。
- s/old/new/g: 将当前行的所有old替换成new。
- %s/old/new/g: 将文本中所有old替换成new。
- %s/^old/new/g: 将文本中所有old开头的字符串替换成new。
7. 文本的保存与退出
- u: 在Vim的普通模式下,撤销上一步的操作。
- :q: 若文件没有修改,直接退出。
- :q!:若文件已经修改,则放弃修改,退出。
- :wq: 若文件已经修改,则保存修改,退出。
- :e!: 若文件已经修改,则放弃修改,恢复文件打开时的状态。
- :w !sudo tee%: 在Shell的普通用户模式下保存root读写权限的文件。%表示当前的文件名,tee命令是把当前缓存区的数据保存到当前文件。
- :set nu: 显示行号。
五、Vim的扩展和定制
用户可以根据自己的实际需求和使用习惯灵活配置Vim。ps.当前用户使用Vim打开一个文本文件时,默认是不显示行号的。如果想显示行号,则可以在命令行模式下输入set nu命令。当然,也可以将这个命令写入Vim的配置文件中。这样做的好处是,当用户使用Vim打开文本文件时,就不用每次都输入显示行号的命令了。
Vim配置文件分为系统级配置文件和用户级配置文件。用户级配置文件只对当前用户有效,一般位于$HOME/.vimrc或者~/.vim/vimrc路径下。系统级配置文件对所有用户都有效,一般位于/etc/vim/vimrc路径下。
使用vim打开,将set nu插入vimrc文件中,这时每次启动都会自动显示行号了。
注:vimrc文件中( ” 为注释行)
六、Vim的按键映射
现在的IDE一般都支持括号的自动补全功能:在我们编写程序的时候,当遇到小括号、中括号或者花括号时,IDE一般都会自动补全,并将光标移动到括号中。在Vim的插入模式下,我们可以通过按键映射,同样可以实现括号的自动补全功能。
在vimrc文件中添加按键映射命令:
inoremap [ []<Esc>i
inoremap ] []<Esc>i
inoremap ( ()<Esc>i
inoremap ) ()<Esc>i
inoremap " ""<Esc>i
inoremap { {<CR>}<Esc>0
inoremap } {<CR>}<Esc>0
以第一个按键映射为例, 当用户在Vim的插入模式下输入左中括号([)时,通过按键映射,Vim会自动补全一对中括号([]),然后通过Esc 键返回到Normal 模式,最后通过i键再次进入插入模式,将光标移动到中括号中, 方便用户继续输入字符。大括号的按键映射也是如此, 当用户输入(定义一个函数或代码块时,大括号会自动补全,回车换行,并将光标移动到下一行行首,方便用户继续输入代码。 保存好.vimrc 配置文件后,我们重新使用Vim 打开一个文件,在插入模式下输入小括号或大括号, 你会发现Vim 可以自动补全了,并将光标自动移动到了括号内,方便用户继续输入。
Vim在Normal 工作模式下,可以通过按键h、j、K、1来移动光标, 但是在插入模式下,这些按键就不能作为方向键使用了,用户需要使用键盘中的方向键来移动光标。 由于方向键的键程较我们的右手需要在字符键和方向键之间来回移动切换,十分不方便。为了提高输入效率,我们可以通过组合键映射,在插入模式下使用组合键Crrl+h、 Ctrl+j、 Curl+k、Cul+l来移动光标。
inoremap <C-H> <Esc>ha
inoremap <C-J> <Esc>ja
inoremap <C-K> <Esc>ka
inoremap <C-L> <Esc>la
除了通过vimrc配置文件来定制功能,Vim 还支持通过插件来扩展功能。在Vim的官方网站上有很多xx.vim格式的插件供用户下载使用。如果想要通过插件来扩展Vim功能,先要在当前用户下创建一个~/.vim/pligin目录,然后将xx.vim格式的插件复制到这个目录,在$HOME/.vimrc配置文件里对这些插件进行配置,就可以直接使用了。
参考文档
https://baike.baidu.com/item/Vim/60410?fr=aladdin 百度百科
https://blog.csdn.net/qq_33893590/article/details/120110346 vim的使用【CSDN】
《嵌入式C语言的自我修养》 1.1节