vim设置快捷键 | vim 快捷键设置

vim设置快捷键 | vim 快捷键设置

vim 快捷键设置

尝试在terminal里输入vimtutor或vim tutor。这是一个vim自带的互动教程,大约会花费半个小时的时间。他可以让你对vim有一个初步的印象。vim是一款非常强大的文本编辑器,程序员一般使用它来编辑源码,当然也有人使用它对纯文本进行处理(比如你要对一份有上千行数据且格式固定的日志文件进行同意修改却又不愿意写程序时)。

由于vim本身丰富的快捷键和其独特的「多模式功能可以让你在工作时完全摆脱鼠标,双手几乎不需要做长距离移动。从而成倍提高你的工作效率。

当然还有一款与之齐名的编辑器叫emacs(虽然我觉得他是一个操作系统^_^)。如果想深入学习vim的强大功能推荐一本叫做vim-book的书。

vi/vim的快捷操作

vi(vim)键盘图及其基本命令

进入vi

vi filename 打开或新建文件,并将光标置于第一行首。

vi +n filename 打开文件,并将光标置于第 n行首。

vi + filename 打开文件,并将光标置于最后一行首。

vi -r filename 在上次正用 vi编辑时发生系统崩溃,恢复文件

vi file1....filen 打开多个文件,依次编辑。

vi的工作模式

命令行模式 (command mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

插入模式(Insert mode):只有在 Insert mode 下,才可以做文字输入,按「ESC」键可回到命令行模式。

底行模式(last line mode):将文件保存退出 vi,也可以设置编辑环境,如寻找字符串、列出行号等。

命令行模式

移动光标

k、j、h、l 功能分别等同于上、下、左、右箭头键。

Ctrl+b 在文件中向上移动一页(相当于 PageUp 键)

Ctrl+f 在文件中向下移动一页(相当于 PageDown 键)。

ctrl+u 屏幕往后移动半页。

ctrl+d 屏幕往前移动半页。

H 将光标移到屏幕的最上行(Highest)。

nH 将光标移到屏幕的第 n 行(如 2H: 将光标移到屏幕的第 2 行)。

M 将光标移到屏幕的中间(Middle)。

L 将光标移到屏幕的最下行(Lowest)

nL 将光标移到屏幕的倒数第 n 行(如 3L:将光标移到屏幕的倒数第 3 行)

w 在指定行内右移光标,到下一个字的开头

e 在指定行内右移光标,到一个字的末尾

b 在指定行内左移光标,到前一个字的开头

0 数字0,左移光标,到本行的开头

G 光标移动到文章的最后

nG 光标移动到文章的第 n行(如8G:移动到文章的第 8行)

$ 右移光标,到本行的末尾

^ 移动光标,到本行的第一个非空字符

替换和删除

rc 用 c 替换光标所指向的当前字符

nrc 用 c 替换光标所指向的前 n 个字符(如 5rc: 用 c 替换光标所指向的前 5 个字符)

x 删除光标所在位置后面的一个字符

nx 删除光标所在位置后面的 n 个字符(如 3x:删除光标所在位置后面的 3 个字符)

X 大写的 X,删除光标所在位置前面的一个字符

nX 删除光标所在位置前面的 n 个字符(如 3X : 删除光标所在位置前面的 3 个字符)

dd 删除光标所在行,并去除空隙

ndd 从光标所在行开始删除 n 行内容,并去除空隙(如 3dd: 删除 3 行内容,并去除空隙)

复制和粘贴

从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。用户可将其粘贴到正文中的指定位置。

p 小写字母 p,将缓冲区的内容粘贴到光标的后面

P 大写字母 P,将缓冲区的内容粘贴到光标的前面

如果缓冲区的内容是字符或字,直接粘贴在光标的前面或后面;如果缓冲区的内容为整行正文则粘贴在当前光标所在行的上一行或下一行。

有时需要复制一段正文到新位置,同时保留原有位置的内容。这种情况下,首先应当把指定内容复制(而不是剪切)到内存缓冲区。完成这一操作的命令是:

yy 复制当前行到内存缓冲区

nyy 复制 n 行内容到内存缓冲区(如 5yy: 复制 5 行内容到内存缓冲区)

搜索字符串/str1 正向搜索字符串 str1

n 继续搜索,找出 str1 字符串下次出现的位置

?str2 反向搜索字符串 str2

撤销和重复

u 撤消前一条命令的结果

. 重复最后一条修改正文的命令

文本选中

v 字符选中命令

V 行选中命令

插入模式

进入插入模式

i 在光标左侧输入正文

a 在光标右侧输入正文

o 在光标所在行的下一行增添新行

O 在光标所在行的上一行增添新行

I 在光标所在行的开头输入正文

A 在光标所在行的末尾输入正文

退出插入模式

ESC 键或组合键Ctrl+[

底行模式

在vi 的底行模式下,可以使用复杂的命令。

退出命令

在命令模式下可以用 ZZ 命令退出 vi 编辑程序,该命令保存对正文所作的修改,覆盖原始文件。如果只需要退出编辑程序,而不打算保存编辑的内容,可用下面的命令:

: q 在未作修改的情况下退出

: q! 放弃所有修改,退出编辑程序

行号和文件保存

: n 将光标移到第 n 行

:set nu 显示行号

:set nonu 取消行号显示

底行模式下,可以规定命令操作的行号范围。数值用来指定绝对行号;字符“.”表示光标所在行的行号;字符“$”表示正文最后一行的行号;简单的表达式,例如“.+5”表示当前行往下的第 5 行。例如:

: .+5 将光标移到当前行之后的第5行

: $ 将光标移到正文最后一行

在底行模式下,允许从文件中读取正文,或将正文写入文件。例如:

:w 将编辑的内容写入原始文件,用来保存编辑的中间结果

:wq 将编辑的内容写入原始文件并退出编辑程序(相当于 ZZ 命令)

:w file 将编辑的内容写入 file 文件,保持原有文件的内容不变

:a,bw file 将第 a 行至第 b 行的内容写入 file 文件 (如:1,.w file 将第 1 行至当前行写入 file 文件)

:r file 读取 file 文件的内容,插入当前光标所在行的后面

:f file 将当前文件重命名为 file

字符串搜索

:/str/ 正向搜索,将光标移到下一个包含字符串 str 的行

:?str? 反向搜索,将光标移到上一个包含字符串 str 的行

正文替换

:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1

:g/str1/s//str2/g 功能同上

从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

删除正文

:d 删除光标所在行

:3d 删除第 3 行

:.,$d 删除当前行至正文的末尾

:/str1/,/str2/d 删除从字符串 str1 到 str2 的所有行

恢复文件

vi 在编辑某个文件时,会另外生成一个临时文件,这个文件的名称通常以 . 开头,并以 .swp 结尾。vi 在正常退出时,该文件被删除,若意外退出,而没有保存文件的最新修改内容,则可以使用恢复命令,也可以在启动 vi 时利用 -r 选项

:recover 恢复文件

选项设置

为控制不同的编辑功能,vi 提供了很多内部选项。利用 :set 命令可以设置选项。基本语法为:

:set option 设置选项 option

常见的功能选项包括:

autoindent 设置该选项,则正文自动缩进

ignorecase 设置该选项,则忽略规则表达式中大小写字母的区别

number 设置该选项,则显示正文行号

ruler 设置该选项,则在屏幕底部显示光标所在行、列的位置

tabstop 设置按 Tab 键跳过的空格数。例如 :set tabstop=n,n 默认值为 8

mk 将选项保存在当前目录的 .exrc 文件中

shell切换

在编辑正文时,利用 vi 底行模式下提供的shell 切换命令,无须退出 vi 即可执行Linux 命令

:! command 执行完shell 命令 command 后回到vi

另外,在命令模式下,键入K ,可命令 vi 查找光标所在单词的手册页,相当于运行man命令。

vimdiff快捷键

一、移动光标頭條萊垍

h,j,k,l 上,下,左,右ctrl-e 移动页面ctrl-f 上翻一页ctrl-b 下翻一页ctrl-u 上翻半页ctrl-d 下翻半页w 跳到下一个字首,按标点或单词分割W 跳到下一个字首,长跳,如end-of-line被认为是一个字e 跳到下一个字尾E 跳到下一个字尾,长跳b 跳到上一个字B 跳到上一个字,长跳0 跳至行首,不管有无缩进,就是跳到第0个字符^ 跳至行首的第一个字符$ 跳至行尾gg 跳至文首G 调至文尾5gg/5G 调至第5行gd 跳至当前光标所在的变量的声明处fx 在当前行中找x字符,找到了就跳转至; 重复上一个f命令,而不用重复的输入fx* 查找光标所在处的单词,向下查找# 查找光标所在处的单词,向上查找

二、删除复制萊垍頭條

dd 删除光标所在行dw 删除一个字(word)d/D删除到行末x删除当前字符X删除前一个字符yy复制一行yw复制一个字y/D删除到行末x删除当前字符X删除前一个字符yy复制一行yw复制一个字y/Y 复制到行末p 粘贴粘贴板的内容到当前行的下面P 粘贴粘贴板的内容到当前行的上面

三、插入模式萊垍頭條

i 从当前光标处进入插入模式I 进入插入模式,并置光标于行首a 追加模式,置光标于当前光标之后A 追加模式,置光标于行末o 在当前行之下新加一行,并进入插入模式O 在当前行之上新加一行,并进入插入模式Esc 退出插入模式

四、编辑萊垍頭條

J 将下一行和当前行连接为一行cc 删除当前行并进入编辑模式cw 删除当前字,并进入编辑模式c$ 擦除从当前位置至行末的内容,并进入编辑模式s 删除当前字符并进入编辑模式S 删除光标所在行并进入编辑模式xp 交换当前字符和下一个字符u 撤销ctrl+r 重做~ 切换大小写,当前字符>> 将当前行右移一个单位<< 将当前行左移一个单位(一个tab符)== 自动缩进当前行

五、查找替换萊垍頭條/pattern 向后搜索字符串pattern?pattern 向前搜索字符串pattern"\c" 忽略大小写"\C" 大小写敏感

n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)N 上一个匹配(同上):%s/old/new/g 搜索整个文件,将所有的old替换为new:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换

六、退出编辑器萊垍頭條

:w 将缓冲区写入文件,即保存修改:wq 保存修改并退出:x 保存修改并退出:q 退出,如果对缓冲区进行过修改,则会提示:q! 强制退出,放弃修改

七、多文件编辑條萊垍頭

vim file1.. 同时打开多个文件:args 显示当前编辑文件:next 切换到下个文件:prev 切换到前个文件:next! 不保存当前编辑文件并切换到下个文件:prev! 不保存当前编辑文件并切换到上个文件:wnext 保存当前编辑文件并切换到下个文件:wprev 保存当前编辑文件并切换到上个文件:first 定位首文件:last 定位尾文件ctrl+^ 快速在最近打开的两个文件间切换:split[sp] 把当前文件水平分割:split file 把当前窗口水平分割, file:vsplit[vsp] file 把当前窗口垂直分割, file:new file 同split file:close 关闭当前窗口:only 只显示当前窗口, 关闭所有其他的窗口:all 打开所有的窗口:vertical all 打开所有的窗口, 垂直打开:qall 对所有窗口执行:q操作:qall! 对所有窗口执行:q!操作:wall 对所有窗口执行:w操作:wqall 对所有窗口执行:wq操作ctrl-w h 跳转到左边的窗口ctrl-w j 跳转到下面的窗口ctrl-w k 跳转到上面的窗口ctrl-w l 跳转到右边的窗口ctrl-w t 跳转到最顶上的窗口ctrl-w b 跳转到最底下的窗口

八、多标签编辑萊垍頭條

:tabedit file 在新标签中打开文件file:tab split file 在新标签中打开文件file:tabp 切换到前一个标签:tabn 切换到后一个标签:tabc 关闭当前标签:tabo 关闭其他标签gt 到下一个tabgT 到上一个tab0gt 跳到第一个tab5gt 跳到第五个tab

九、执行shell命令萊垍頭條

1、在命令模式下输入":sh",可以运行相当于在字符模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器2、可以"!command",运行结束后自动回到VIM编辑器中3、用“Ctrl+Z“回到shell,用fg返回编辑4、:!make -> 直接在当前目录下运行make指令

十、VIM启动项條萊垍頭

-o[n] 以水平分屏的方式打开多个文件-O[n] 以垂直分屏的方式打开多个文件

十一、自动排版頭條萊垍

在粘贴了一些代码之后,vim变得比较乱,只要执行gg=G就能搞定萊垍頭條

十二、如何在vim中编译程序條萊垍頭

在vim中可以完成make,而且可以将编译的结果也显示在vim里,先执行 :copen 命令,将结果输出的窗口打开,然后执行 :make编译后的结果就显示在了copen打开的小窗口里了,而且用鼠标双击错误信息,就会跳转到发生错误的行。

十三、buffer操作條萊垍頭

1、buffer状态- (非活动的缓冲区)a (当前被激活缓冲区)h (隐藏的缓冲区)% (当前的缓冲区)# (交换缓冲区)= (只读缓冲区)+ (已经更改的缓冲区)

十四、 VIM 操作目录萊垍頭條

1.打开目录vim .vim a-path/

2.以下操作在操作目录时生效p,P,t,u,U,x,v,o,r,s

c 使当前打开的目录成为当前目录d 创建目录% 创建文件D 删除文件/目录- 转到上层目录gb 转到上一个 bookmarked directoryi 改变目录文件列表方式^l 刷新当前打开的目录

mf - 标记文件mu - unmark all marked filesmz - Compress/decompress marked filesgh 显示/不显示隐藏文件( dot-files)^h 编辑隐藏文件列表a 转换显示模式, all - hide - unhideqf diplay infomation about fileqb list the bookmarked directories and directory traversal historygi Display information on file

mbmcmd - 将标记的文件(mf标记文件)使用 diff 模式me - 编辑标记的文件,只显示一个,其余放入 buffer 中mhmm - move marked files to marked-file target directorymc - copympmrmt

vim 中复制,移动文件1, mt - 移动到的目录2, mf - 标记要移动的文件3, mc - 移动/复制

R 移动文件萊垍頭條

打开当前编辑文件的目录:Explore:Hexplore:Nexplore:Pexplore:Sexplore:Texplore:Vexplore垍頭條萊

vim自定义快捷键

根据你的要求没有直接的快捷键。可以通过以下2个快捷键完成你的操作dgg 删除到文件首d0 删除到本行行首的位置希望能是你需要的。

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编程学习

vim切换中文快捷键

一、vim 有两种工作模式:

1.命令模式:接受、执行 vim操作命令的模式,打开文件后的默认模式;

2.编辑模式:对打开的文件内容进行 增、删、改 操作的模式;

3.在编辑模式下按下ESC键,回退到命令模式;在命令模式下按i,进入编辑模式

二、创建、打开文件:

1.输入 touch 文件名 ,可创建文件。

2.使用 vim 加文件路径(或文件名)的模式打开文件,如果文件存在则打开现有文件,如果文件不存在则新建文件。

3.键盘输入字母i进入插入编辑模式。

三、保存文件:

1.在编辑模式下编辑文件

2.按下ESC键,退出编辑模式,切换到命令模式。

3.在命令模式下键入"ZZ"或者":wq"保存修改并且退出 vim。

4.如果只想保存文件,则键入":w",回车后底行会提示写入操作结果,并保持停留在命令模式。

四、放弃所有文件修改:

1.放弃所有文件修改:按下ESC键进入命令模式,键入":q!"回车后放弃修改并退出vim。

2.放弃所有文件修改,但不退出 vi,即回退到文件打开后最后一次保存操作的状态,继续进行文件操作:按下ESC键进入命令模式,键入":e!",回车后回到命令模式。

vim快捷键大全

Linux 基本操作命令

文件和目录管理

创建和删除

创建:mkdir

删除:rm

删除非空目录:rm -rf file 目录

删除日志 rm log (等价: $find ./-name “log” -exec rm {} ; )

移动:mv

复制:cp (复制目录:cp -r)

创建文件 touch

查看

显示当前目录下的文件 ls

按时间排序,以列表的方式显示目录项 ls -lrt

ls -l

查看文件内容 cat 可以加 more 、less 控制输出的内容的大小

cat a.text

cat a.text | more

cat a.text| less

权限

改变文件的拥有者 chown

改变文件读、写、执行等属性 chmod

递归子目录修改: chown -R tuxapp source/

增加脚本可执行权限: chmod a+x myscript

管道和重定向

把前一个命令的执行结果当做后一个命令的输入 |

串联:使用分号 ;

前面成功,则执行后面一条,否则,不执行: &&

前面失败,则后一条执行: ||

ls /proc && echo suss! || echo failed.

文本处理

文件查找 find

find 参数很多,本文只介绍几个常用的

-name 按名字查找

-type 按类型

-atime 访问时间

find . -atime 7 -type f -print

find . -type d -print //只列出所有目录

find / -name "hello.c" 查找hello.c文件

文本查找 grep

grep match_patten file // 默认访问匹配行

常用参数

-o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行

-c 统计文件中包含文本的次数

grep -c “text” filename

-n 打印匹配的行号

-i 搜索时忽略大小写

-l 只打印文件名

grep "class" . -R -n # 在多级目录中对文本递归搜索(程序员搜代码的最爱)

cat LOG.* | tr a-z A-Z | grep "FROM " | grep "WHERE" > b #将日志中的所有带where条件的sql查找查找出来

文本替换 sed

sed [options] 'command' file(s)

首处替换

sed 's/text/replace_text/' file //替换每一行的第一处匹配的text

全局替换

sed 's/text/replace_text/g' file

默认替换后,输出替换后的内容,如果需要直接替换原文件,使用 -i:

sed -i 's/text/repalce_text/g' file

移除空白行

sed '/^$/d' file

sed 's/book/books/' file #替换文本中的字符串:

sed 's/book/books/g' file

sed '/^$/d' file #删除空白行

数据流处理 awk

详细教程可以查看 http://awk.readthedocs.io/en/latest/chapte...

awk ' BEGIN{ statements } statements2 END{ statements } '

工作流程

1. 执行 begin 中语句块;

2. 从文件或 stdin 中读入一行,然后执行 statements2,重复这个过程,直到文件全部被读取完毕;

3. 执行 end 语句块;

特殊变量

NR: 表示记录数量,在执行过程中对应当前行号;

NF: 表示字段数量,在执行过程总对应当前行的字段数;

$0: 这个变量包含执行过程中当前行的文本内容;

$1: 第一个字段的文本内容;

$2: 第二个字段的文本内容;

awk '{print $2, $3}' file

# 日志格式:'$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'

#统计日志中访问最多的10个IP

awk '{a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

排序 sort

-n 按数字进行排序 VS -d 按字典序进行排序

-r 逆序排序

-k N 指定按第 N 列排序

sort -nrk 1 data.txt

sort -bd data // 忽略像空格之类的前导空白字符

去重 uniq

消除重复行

sort unsort.txt | uniq

统计 wc

wc -l file // 统计行数

wc -w file // 统计单词数

wc -c file // 统计字符数

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++语言的自动补全功能,将另行撰文介绍。多说一句,其实在大多数情况下,利用这些基本的自动补全功能也够用了。特别是针对历史遗留代码居多的大规模项目,这些最基本的功能反而是最有效率的。

vim编辑器快捷键总结

vi是一款所有类Unix系统都内建的一款文本编辑器。随着Linux系统的发展,vi也被进一步开发变成了vim。vim 具有程序编辑的能力,字体是有颜色的,可以方便程序设计。如果你的Linux发行版只有vi,想使用vim,则需要安装。Ubuntu可以使用下面命令来安装vim编辑器。

sudo apt-get install vim

vi编辑器有三种模式,分别是命令模式,编辑模式,末行模式。当我们一开始打开vi的时候,它就处于命令模式。例如使用vi pipe.c这样就打开了pipe.c。打开以后,只能看,不能编辑,因为处于命令模式。在编辑模式的时候,我们才能够编辑文本。从文本模式无法直接切换到末行模式。需要按下ESC进入命令模式,然后按下:(英文冒号),就进入末行模式了。在末行模式下连按2次Esc就切换到了命令模式。或者是在末行模式下输入除了q以为的命令按下回车,也可切换到命令模式。在命令模式下进入编辑模式可以使用i,s,o,a按键。这就是三种模式之间的切换

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部