摘要: vim基本功
基本功
前面我们学会了插件管理器和如何实现语法高亮,相信大家已经从中体会到了vim插件的强大功能。现在,是时候回来补一补基本功了。
Vi有三种主要模式,正常模式,插入模式和可视化模式。正常我们推荐的方式是所有的移动命令只在正常模式下进行,只有在修改的时候再进入插入模式。
这个切换是如此频繁,所以Vi提供了很多快速切换模式的命令。Vim的难学之处之一就是命令太多。
模式切换的好处
如《Practical Vim》中第8条所说,正常模式和插入模式的切换,可以为撤销编辑带来方便。在没有模式切换的文本编辑器中,编辑器是很难确实您撤销一次是打算撤销一个字符,或者是一个单词还是更大的粒度。而在Vi中,这不是问题,在输入时进入插入状态,输入结束了就Esc退回正常模式。这一过程就构成了一次可撤销的动作。
基本移动命令
行内移动
- h: 向左一个字符
- l: 向右一个字符
- 0: 移动到行首
- ^: 移动到行首第一个非空的字符
- $: 移动到行尾
- g_: 移动到行尾第一个非空的字符
- 列号|: 精确移动到列号
跨行移动
- j: 向下一行
- k: 向上一行 也可以用emacs的C-n和C-p来上下翻。
- G: 跳到第n行,默认跳到行尾。
- gg: 跳到第1行
- +: 到下一行的第一个字符
- -: 到上一行的第一个字符
- ``:G跳转之后,跳回原来的行
- '': 功能同``,但是停在行首
vi还支持跳转的书签功能,使用m[a-z]命令,可以定义26个书签。
- m{书签名}: 定义书签
- `{书签名}:跳转到书签定义时的光标位置
- '{书签名}: 跳转到书签定义位置的行首
按单词移动
- w: 按单词移动,标点符号也算一个单词
- W: 按单词移动,标点符号算在单词内
- e/E: 移动到单词结尾(大写忽略标点符号)
- b/B: 按单词向前移动(大写忽略标点符号)
滚动一整屏
- C-f 向前一屏
- C-b 向后一屏
- C-d : 向前半屏
- C-u: 向后半屏
- C-e: 屏幕上滚一行
- C-y: 屏幕下滚一行
重新调整屏幕位置
- z: 光标移至屏幕顶
- z.: 光标移至屏幕中心并滚屏
- z-: 光标移至屏幕底并滚屏
重绘屏幕
- C-l: 重绘屏幕
在当前屏幕中移动
- H: 移至屏幕第一行
- M: 移至屏幕中间
- L: 移至屏幕底部
切换进插入模式的命令
- i: 在光标前插入字符
- a:在光标后插入字符
- A: 在一行的结尾处插入字符,相当于$a组合。
- I: 在一行的开头插入字符,相当于^i组合。
- o: 在光标的下一行新开一行进行插入,相当于A
- O: 在光标的上一行新开一行进行插入,相当于ko
- s: 删除光标处的字符再进行插入
- S: 删除光标所在行再进行插入
- r: 替换当前字符
- R: 替换当前行的字符,可以提前Esc退出,相当于^c
- c: 更新文本,就是先删除部分文本再插入
- cw: 更新当前单词
- c2b: 更新光标之前的两个单词
- c$: 更新光标处到行尾
- C: c$的简写
- c0: 更新光标处到行首
- cc: 更新行,跟S效果一样
Vi命令的一般形式
在继续学习更多命令之前,我们先看一下vi命令之所以强大的原因,因为vi的命令并不仅仅是简单的单独命令,而是可以进行组合。
vi命令的一般格式是:{命令}{次数}{文本移动命令} 或者 {次数}{命令}{文本移动命令}
上面学习的c命令就是很好的例子,比如c2b,c是命令,2是两次,b是后退
同样,对于用于删除的d命令,删除当前单词,就把cw换成dw就可以了。d$是删除从光标到行尾。与C是c$的别名一样,D是d$的别名。
复制命令y,也是同样的用法。
在vim中,文本移动命令被扩展成文本对象。
最常用的文本对象命令有:
- aw: a word,单词不计空格
- iw: inner word, 单词,计空格
- as: a sentence,一句
- is: inner sentence
- ap: a paragraph,一段
- ip: inner paragraph
- a" a' a`: 一个字符串
粘贴
- p/P: 命令用于粘贴用d命令或y命令剪切或复切的文本
切换大小写
- ~: 切换大小写
重复和撤销
- . : 重复上一条命令
- u: 撤销上一条命令
- U: 将一整行恢复到原来的状态
不退出插入模式进行编辑
Vi推荐主要工作时间都停留在正常模式,但是如果您非习惯于在编辑模式进行编辑,Vim也是提供在这个模式下工作的命令的。
比如,我们最经常发生的事情就是输错了字符要修改。
这时候我们有三大利器可以使用:
- C-h: 退格删除前一个字符
- C-w: 删除前一个单词
- C-u: 删除到行首
另外,我们还可以通过C-o + 正常模式的命令这种方式来节省切换的动作。
搜索
全文搜索
"/"用来进行向下搜索,"?"则是向上搜索。搜索下一个用n,上一个用N.
vi的强大之处在于,搜索的结果仍然可以跟其他命令结合,比如跟d结合删除。
行内搜索
除了全文搜索,行内搜索也是快速编辑的有效手段。以vi的风格,也是为我们提供了多种行内搜索的方法:
- f{字符}:向后搜索字符
- F{字符}:向前搜索字符
- t{字符}:向后搜索字符,不过定位在该字符之前的字符上
- T{字符}:向前搜索字符,定位在该字符之前的字符上
- ;:重复上一次的搜索,方向相同
- , : 重复上一次的搜索,方向相反
搜索仍然是可以跟操作命令结合,比如df{字符},删除到某字符为止的内容。
缓冲区
当我们使用d命令删除一段文本时,它们会被依次存入0-9号这10个缓冲区中。除了这10个自动缓冲区之外,vi还支持a-z一共26个命名的缓冲区。
我们使用双引号"用来指示对缓冲区的访问。比如:"2p,将2号缓冲区的内容粘贴到当前光标处。
不过,记住自动放到哪个缓冲区位置还是一件反人类的事情,更好的办法是,使用命名的缓冲区。vi提供了26个命令缓冲区,分别用a-z 26个字母表示。
从此我们的剪切、复制和粘贴的功能就更丰富了。比如"add,将当前行剪切放入a缓冲区。粘贴时使用"ap。再如:"b10yy,将当前开始的10行复制到b缓冲区。
vi作为一个功能过剩的编辑器,当然不只这么简单了。它还支持对于缓冲区的内容进行追加,方法很简单,使用缓冲区的大写字母名移,比如"Byy,将当前行追加到b缓冲区内容的末尾。
黑科技
针对文本中的数字进行运算
这个黑科技太好玩了,如果光标处是一个数字的话,可以通过C-a来对其进行+1操作,C-x进行-1.
如果要多加减几次,就先给个数字就好了。
这还不够黑科技,C-a和C-x还有搜索功能,如果当前光标不是一个数字,vim会先搜索到下一个数字,再对其进行操作。对于大量数字文本要操作的情况,实在是太方便了。
相关推荐
VMware-VIM-all-6.7.0-15976714 原版镜像 .................................................................................................................
vmware vcenter6.5 for windows版本。 VMware-VIM-all-6.5.0-14020092
vim-tmux-focus-events, 使终端vim和tmux更好地协同工作 tmux-focus-events.vimFocusGained 和 FocusLost 自动命令事件在终端vim中不工作。 这个插件在使用vim内部Tmux时恢复它们。以下是相关内容:vim fugitive插件...
VMware vSphere 6.7 百度网盘链接及提取 码
根据提供的文件信息,我们可以推断出这份资料与VMware vCenter Infrastructure Manager (VIM) Setup 5.5.0版本有关。尽管描述部分没有提供太多技术细节,但从标题和其他信息中,我们可以提炼出一系列与VMware ...
vim-8.0.zip gpm-libs-1.20.7-6.el7.i686.rpm ncurses-5.9-14.20130511.el7_4.x86_64.rpm ncurses-base-5.9-14.20130511.el7_4.noarch.rpm ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm ncurses-libs-5.9-14....
amoscykl博主的Vim的终极配置方案,完美的写代码界面! ——.vimrc这篇帖子 ,还有我自己的修改和...YouCompleteMe没有成功,需要的还是要自己摸索,乱码问题 自己搜索vim-airline安装字体 有现成的帖子 我就不重复了
7.2版推出了,但是,不论是软件还是这份文档本身,7.2之于7.1,正如7.1之于7.0,基本上是一个bugfix版,改动很小。7.2新增的功能主要是浮点数据类型的支持,请参考|关于7.1版| 目录 *user-manual* 概览 起步...
vim键盘图 . 键盘布局彩图(打出来参考,很方便) vi-vim-cheat-sheet.gif vi-vim-tutorial-1.gif vi-vim-tutorial-2.gif...vi-vim-tutorial-4.gif vi-vim-tutorial-5.gif vi-vim-tutorial-6.gif vi-vim-tutorial-7.gif
- **使用Vim教程**: 提供了一个简单的教程来帮助用户快速入门。 - **版权**: 明确了手册的版权信息。 ##### jusr 02.txtj Vim第一步 - **首次运行Vim**: 如何启动Vim并了解其初始界面。 - **插入文本**: 如何在Vim...
《vim-handbook-cn-71》是一份详细的Vim中文手册,专为想要深入理解和高效使用Vim编辑器的用户而设计。这份手册涵盖了Vim的基础操作、高级特性以及一些实用技巧,对于在Linux环境中工作的开发者尤其有帮助。Vim,...
在使用 **vim-powerline-develop** 之前,你需要确保已经安装了 Vim 并且了解基本的 Vim 操作。Vim 是一个高度可定制和高效的文本编辑器,尤其适合程序员和系统管理员使用。它支持多种编程语言,并且可以通过安装...
Ubuntu 64位免安装版VIM-IDE。 压缩包为直接打包/etc/vim配置及插件包。 root@ubuntu:/etc/vim# tree -L 2 . bundle ale auto-pairs echofunc gdbmgr indentLine LeaderF nerdcommenter nerdtree nerdtree...
【标题】"vim-material-monokai-master.rar" 指的是一款基于Vim编辑器的主题配置,名为Material Monokai。这个主题结合了Material Design的风格和Monokai的配色方案,为开发者提供了一个美观且舒适的编程环境。Vim是...
"Atom-atom-vim-mode-plus-move-selected-text"是一个特定的Atom插件,它扩展了Vim模式,增加了对选定文本对象的移动功能。Vim模式是许多程序员喜欢的一种编辑模式,它提供了快速、高效的编辑操作,模仿了经典的Vim...
### VIM配置:vim-airline插件安装 #### 一、引言 Vim是一款非常强大的文本编辑器,因其高效性和可定制性受到广大程序员的喜爱。为了进一步提升Vim的功能和用户体验,用户经常会选择安装一些插件来扩展其功能。其中...
`Vim-Fugitive`与Git集成,让用户可以直接在Vim内进行版本控制操作;`CtrlP`是一个文件查找和缓冲区浏览工具,能快速打开项目中的文件;`Syntastic`则是一个语法检查插件,实时显示代码错误。 除此之外,配置可能还...
Atom-atom-vim-mode-plus是针对Atom文本编辑器的一个扩展插件,主要目的是增强其内置的VIM编辑模式。VIM(Vi Improved)是一种高度可配置的文本编辑器,以其高效的操作方式和丰富的命令集而闻名。在Atom中,VIM模式...
VMware-VCSA-all-6.7.0-15132721...VMware-VIM-all-6.7.0-15132721.iso/2.08GB VMware-VirtualSAN-Witness-201912001-15160138.ova/475.94MB VMware-VMvisor-Installer-201912001-15160138.x86_64.iso/335.02MB 等等
vim-builder-2018-10-22.tar