1. 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++语言的自动补全功能,将另行撰文介绍。多说一句,其实在大多数情况下,利用这些基本的自动补全功能也够用了。特别是针对历史遗留代码居多的大规模项目,这些最基本的功能反而是最有效率的。
2. vim 设置搜索高亮
在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc在终端 输入以下命令来编辑vimrc配置文件:sudo vim /etc/vim/vimrc或者sudo gedit /etc/vim/vimrc1、显示行号在文件末端添加一新行,输入 set nu2、语法高亮在文件中找到 "syntax on 这一行,去掉前面的双引号",双引号是注释的意思3、自动缩进其中autoindent 是自动缩进;
cindent是特别针对 C语言语法自动缩进 注意:如果设置好以上设置后,VIM没有作出相应的动作,那么请你把你的VIM升级到最新版,一般只要在终端输入以下命令即可:
sudo apt-get install vim
3. vim设置选中高亮显示
gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。它使用GTK+编写而成,它十分的简单易用,有良好的语法高亮,对中文支持很好,支持包括gb2312、gbk在内的多种字符编码。
vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
4. vim 回到上次光标
如果仅仅是移动到行尾就用END键如果是想从命令模式到行尾并进入输入模式:按大写A
5. vim设置光标样式
Ctrl + a 光标移动到行首(Ahead of line),相当于通常的Home键
Ctrl + e 光标移动到行尾(End of line)
Ctrl + c 取消(cancel)当前行输入的命令
Ctrl + l 清屏,相当于执行clear命令
Ctrl + p 调出命令历史中的前一条(Previous)命令,相当于通常的上箭头
Ctrl + n 调出命令历史中的下一条(Next)命令,相当于通常的上箭头
Ctrl + u 删除光标之前到行首的字符
Ctrl + k 删除光标到行尾的字符
Ctrl + w 删除从光标位置前到当前所处单词(Word)的开头
Ctrl + y 粘贴最后一次被删除的单词
Ctrl + r 显示:号提示,根据用户输入查找相关历史命令(reverse-i-search)
Option+← 光标单词间移动(向左)
Option+→ 光标单词向右移动
vim编辑快捷键
删除和删除多行的快捷键,要在默认模式下使用。在编辑模式下可以按esc,退出编辑模式。
然后输入以下指令
光标移动
移动到行尾"$",移动到行首"0"(数字)
移动到段首"{",移动到段尾"}"
移动到下一个词"w",移动到上一个词"b"
移动到文档开始"gg",移动到文档结束"G"
跳到第n行"ngg" 或 "nG" 或 ":n"
移动光标到屏幕顶端"H",移动到屏幕中间"M",移动到底部"L"
移动到上次编辑文件的位置 "`"
批量删除:
D 删除当前光标所在位置到某一行的结尾
d$ 删除当前光标所在位置到某一行的结尾
dd 删除当前所在行
5dd 删除从当前行至其后的5行内容
dL 删除当前位置到屏幕上最后一行的内容
dH 删除当前位置到屏幕上第一行的内容
dG 删除当前位置到工作缓存区结尾的内容
d1G 删除当前位置到工作缓存区开始的内容
分类: shell编程学习
6. vim 高亮光标所在行
光标定位G 移至行行首nG 移至第n行行首n+ 移n行行首n- 移n行行首n$ 移n行(1表示本行)行尾0 所行行首$ 所行行尾^ 所行首字母h,j,k,l 左移移移右移H 前屏幕首行行首M 屏幕显示文件间行行首L 前屏幕底行行首更参考原文移行道两0 ^ (shift+6)行首第字符空白字符点区别移行尾 $ (shift+4)
7. vim语法高亮设置
VS Code中的代码可以直接粘贴。
VS Code里的代码
粘进Onenote后
没有底色,字体缩进正常。要行号可以自己添加。
要注意如果装了Vim插件,用Ctrl+C复制没有颜色效果。