1. vim快捷键操作

vim键和emacs都好,vim的模式,是的vim可以有多种编辑状态,普通状态下,所有键盘的按键都是你可以使用的快捷键,这时候,你在用的似乎不是一个编辑器了,更确切的说是,处理文本,键盘不再是输入字符,而是vim的各种命令。这样,使得vim非常快速。写代码过程中,其实我们花更多的时间在调试,修改代码,而不是输入

2. vim命令快捷键

VIM的自动补全功能让你有效的避免输入错误,快速的完成变量名、类名、方法名的输入,善用之可以极大的提高软件开发的工作效率。需要提前说明的是,下面介绍的所有快捷键必须让VIM位于插入模式(即"i"Insert And Replace"模式)。VIM的自动补全方式一共有三种

已知单词

这是VIM中最基本的功能,当你键入某个单词的前几个字母,然后按<C-p>,VIM会自动搜索所有当前打开的缓冲区中的单词完成自动补全。<C-p>表示VIM从当前光标位置向前搜索,你也可以按<C-n>,表示从当前光标位置向前搜索。通常我们可以忽略<C-n>和<C-p>的区别。为了方便记忆,我选择按<C-p>,因为p代表previous,<C-p>表示补全之前(previous)已经键入的单词. 下面两个图分别是<C-n>和<C-p>的效果图,区别在于在自动补全菜单弹出时默认高亮的单词

另外,如果你打开的文件太多,那么自动补全可能会列出一大串来自其他缓冲区中的单词,这时可以使用<C-x><C-p>或者<C-x><C-n>让VIM仅仅列出当前缓冲区的单词。

关键词字典

前面讲到,通过<C-x><C-p>可以使VIM仅仅根据当前缓冲区的内容补全单词,其中,<C-x>表示让VIM进入插入模式的一个子模式,通过EX命令"help ins-complete"可以查阅所有以<C-x>开头的快捷键说明,但这不是本文的重点,不再累述。基于关键字字典补全的快捷键为<C-x><C-k>, ‘k’表示"keyword",即关键字。当<C-x><C-k>按下时,VIM会从"dictionary"全局变量中搜索字典文件,进行自动补全的工作。词典的另一个作用是可以做拼写检查,快捷键是<C-x><C-S>。关于如何利用VIM做拼写检查,将另行撰文介绍。

执行 ":set dictionary+=[字典文件]" 设置字典文件的路径,执行<C-x><C-k>进行自动补全。

Omnicompletefunc

自版本7.0开始,VIM开始提供自动补全的回调函数,通过下面的快捷键触发:

<C-x><C-o>: 调用omnifunc定义的函数

<C-x><C-u>: 调用completefunc定义的函数

omnifunc和completefunc两个回调函数没有本质上的区别,但是在惯例上,omnifunc定义的函数的与特定的文件类型绑定的,不同的文件类型会定义不同的omnifunc。<C-x><C-o>中的’o',即’omnifunc’。而completefunc通常是给第三方插件或者说用户自定义使用的,<C-x><C-u>中的’u',即"User Defined"的意思。

如何编写omnifunc或者completefunc的方法,可通过"help complete-functions"查阅,本文重点在于介绍两个重要的插件,就使用了这两个函数实现C/C++语言的自动补全功能:

supertab

VIM的哲学就是尽量的减少用户需要键入的次数,因此<C-x>开头的快捷键也显得过于麻烦,"help ins-completion"参考手册中有一个例子函数,CleverTab(),在用户按下<Tab>键时,自动判断是否需要调用补全功能还是插入一个<Tab>字符,但是这还不能满足我们日常软件开发的需要,因此supertab插件是对VIM的自动补全功能的重要补充。在缺省情况下supertab就能很好的工作,不需要特别的设置。需要特别说明的是,这个插件是对下面介绍的插件OmniCppComplete的一个有效的补充。主要是因为如果不安装supertab,那么在进行自动补全的时候,需要按<C-x><C-o>进行触发。

OmniCppComplete

如前所述,当你在编写C/C++代码时,如果需要VIM为你自动补全函数名、类名等,需要依赖正确的omnifunc(或者completefunc)的实现,而OmniCppComplete正是应这个需求而出现的。安装好这个插件后,也不需要做任何设置,只需要生成相应的tag文件即可正常工作。需要注意的是,在生成tag文件时,需要使用下面的参数达到最好的效果:

ctags --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q

下面是使用OmniCppComplete的效果图:

本文重点在于介绍VIM的自动补全功能,因此对于C、C++语言中自动补全功能并未作深入的探讨。众所周知,VIM中对C++语言的自动补全有一些缺陷,目前有一些插件如clang_complete、gccsense能够更好的完成C/C++语言的自动补全功能,将另行撰文介绍。多说一句,其实在大多数情况下,利用这些基本的自动补全功能也够用了。特别是针对历史遗留代码居多的大规模项目,这些最基本的功能反而是最有效率的。

3. vim 设置快捷键

首先在界面中,按下快捷键“ctrl+alt+s”是可以打开keymap快捷键设置的,如果按下这个快捷键没有反应的话,可能是因为键盘原因造成,那么除了按下这三个键之外,还可以按住Fn键。

如以上方法无效,可以用下面方法:

1、进入到pycharm中,点击顶部菜单中的“file”选项,在下拉的菜单中找到“settings”,进入到设置对话框中。

2、点击左侧的“Tools”选项选择子菜单中的“Vim Emulation”,点击之后看到右侧的界面,可以发现这个时候会出现很多的快捷键,有些快捷键的“handler”对应的是“Undefinded”,我们要将自己需要的快捷键的Handler改为IDE,这样就又可以使用快捷键了。

4. vim快捷键大全

先按ESC键,然后敲:,这是才可以敲命令,比如强行退出可以敲q! enter(回车),如果需要保存退出就敲 ":x enter(回车)"或者"wq enter(回车)"

5. vim快捷方式

“在括号中输入完某些数据后,想输入下一行代码时候,需要把手移到(上、下、左、右)的箭头去移动光标位置再回车”也就是说,以上操作是在 insert 模式完成的对吧?然而在 vim 中 normal 模式才是常态(不然为什么叫 "normal")。

要换行的话,最好的方法是按下 esc 或 ctrl + [ 回到 normal 模式,再用 o/O 在下方/上方插入新行。至于你在另一个回答下提到行尾插入冒号的问题,在 normal 模式下用 A 也可以轻松定位。

再说一点,频繁用 esc 返回 normal 模式确实比较麻烦。最好交换左 ctrl 和 capslock 的键位,然后用 ctrl + [ 。一般 linux 桌面环境都可以直接设置。如果你用的桌面环境不支持,也可以用 xmodmap 命令

6. vim切换中文快捷键

vim

vim是vi发展而来的文本编辑器,代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器,vim功能强大,插件种类众多,具有高度的定制化。

优点

1. 编码效率提高

列选择,宏,多功能的移动,以及一些自动提示,和功能性的拓展,让vim比IDE还要高效。

2.可以变成多面手

C++,python,html,script都可以解决,否则一个环境要一个IDE,这样学习的成本反而比vim要高。

3.按键组合比较少

4.大多数操作系统自带,不需要安装

vim的缺点:

双模式的切换目前达不到流畅使用,觉得双模式阻碍了编辑速度。

7. vi/vim的快捷操作

vi编辑器搜索关键字的方法

使用Vim/vi搜索和查询当前单词:

在正常模式下,您可以向前或向后搜索。

你可以在vim/vi中按下/然后输入你的搜索语法/关键字来进行查询。

在vi/vim中按下?然后输入你的语法/关键字。

在vim中查询到单词后,您可以按n键直接向后转到单词的下一个出现位置。按N键可以直接到相反的方向,即向前。

以上就是vi编辑器怎么搜索关键字的全部内容

8. vim编辑器快捷键总结

Vi和Vim的区别为:搜索不同、脚本语言不同、共享不同。Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 一、搜索不同 1、Vi:Vi不支持正则表达式的搜索。

2、Vim:Vim支持正则表达式的搜索。

二、脚本语言不同 1、Vi:Vi没有自己的脚本语言,只是在Unix及Linux系统下进行编辑的工具。

2、Vim:Vim有自己的脚本语言,称为Vim脚本(也称为vimscript或VimL),用户可以通过多种方式使用它来增强Vim。

三、共享不同 1、Vi:Vi不具有高度可配置性,无法和各个Vi安装之间共享文件。

2、Vim:Vim具有高度可配置性,包含Vim核心全局设置(称为vimrc)的文件可以在各个Vim安装之间共享。 来源: ——Vi ——VIM

9. vim 快捷键设置

c.vim插件应该是个文件类型插件,编辑c文件时载入, 一般文件类型插件是带修饰的,你在.vimrc中的定义都会被这种类似的局部映射覆盖掉(就像局部变量覆盖全局变量), 如果没有编辑C文件,ctry+j就永远不会启动,也不会覆盖.vimrc中的定义。 .vimrc文件启动是很靠前的,所以冲突时一般会被覆盖掉,你到c.vim文件里, 找到有..map...的一行,把j改成其他的快捷键就可以了,比如就是ctrl+K, 比如nnoremap j这一行,把改掉。