linux vim 怎么实现代码补全的啊?

我看人家输入for 不知道按什么键,for后面代码都补全了
还有,我想删除上一行下一行必须先按ESC然后输入dd么
不能再 插入模式下用快捷键直接删除上一行或者下一行吗?
就像eclipse下用ctrl+d ctrl+alt+↑那样直接用的快捷键,不用切换模式的?

我用习惯eclipse了,之前没用过vim……所以想问问技巧

vim 比较灵活,有自己的习惯的话,可以把它们加到 vim 里。


如果楼主希望在插入模式里,用  ctrl-d 它来实现删除当前行的话,只要将如下语句加到 vimrc 文件即可:

inoremap <C-D> <C-o>dd

<c-o> 用于在插入模式下暂时执行一个普通模式下的命令,执行后返回插入模式。


所以加了上面那个映射之后,ctrl-d 就相当于 eclipse 下的删除当前行了。不过定义这个映射之后,ctrl-d 本来的功能(减少当前行的缩进)就会被覆盖。


我没用过 eclipse,ctrl-alt-up 是什么功能也不知道。不过原理类似,想用 vim 模拟一些其它编辑器的快捷键不会很困难。



至于那个 for 的补全,可能是一些插件。有不少人开发了 vim 的插件以方便书写代码,原理基本上是一些替换。

最简单的比如:

iabbr fori  for (int i = 0; i < 10; i++)

加在 vimrc 里(如果只是想试验一下,只要按冒号再照敲上面的语句就可以了),之后写码的时候只要写 fori 空格回车之类的随你,就会被自己替换成你之前定义好的代码。当然要想让这个自己替换的工作更方便好用,比如补全之后把光标停在第二个分句的 i < 后面等等之类的功能,就需要更复杂的定义。

vim 有很强的扩展能力,可以用来增强它的工作效率。插件楼主可以去官网上搜,不过越是方便的插件可能就越复杂,用起来可能也就越不顺手(因为操作习惯很可能和自己需要的很不一致),学习起来的难度一般也越大。

追问

哇!果然是这么实现的啊。但还想请教一个问题

我习惯eclipse的按键了 基本都是这么设置的,但SHIFT+ENTER却是无效的

我设置的是 imap
但无效,是因为terminal的按键起冲突了么?
怎么实现啊?

追答

alt 键在终端里使用是容易出现问题。原因比较复杂,我以前也遇到过,不过后来没仔细研究。

你可以试试这个脚本:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-08
在vim编辑文件的时候是不可以不全的。只有在shell才可以的
发下私信来吧
第2个回答  2014-03-09
我是菜鸟,无法解答
相似回答