Vim 编辑器能做什么

  图形化的编辑器用得好好的,为什么要学习使用 Vim?

  原因是:一、无图形界面可用。因为 Linux 服务器为了节省内存,提高效率等原因,基本上不安装图形界面,在服务器上编辑脚本,Vim 是最好的选择。二、Vim 能让我们专注于工作上,尽量排除与编辑无关的事。三、Vim 是一个高效的编辑器,高效包含两层意思:Vim 打开或关闭非常快(秒开);编辑者本人能高效操作,让我们双手不离开键盘的情形下,完成与编辑文档或写代码所有的相关操作(忘记你的鼠标吧,一只手在键盘与鼠标之间移动是一种浪费,某些情况下会打断思维)。

  本文假设读者完全没有 Vim 操作的经验,但是有其他编辑器使用的经验,“其他编辑器”包括但不限于:Windows 记事本, Notepad++, 微软的 Visual Studio 系列等等。本文不会涉及 Vim 的安装,实际上 Vim 在 Windows、Linux、Unix、Mac 上都是可用的。Vim 的官网:https://www.vim.org/。


首先看看编辑一份文档或写代码有哪些需求:

1.    定位:能自由的定位光标到当前文档任何位置,包括文档开头、结尾或任意位置(无论是否在屏幕上可见);定位到屏幕上可见的第一行、最后一行、中间行;定位到单词的开头、结尾、单词中任意字母的位置;定位到句子或段落的开头、结尾、函数或引用的开头、结尾等等(无论是否在屏幕上可见)。

另一种定位是:如果你当前光标的单词是一个文件名,例如 #include <string> ,光标位于 string 单词上,按下 gf 可以直接打开 string 文件!

2.    编辑:复制、剪切、删除、粘贴、替换等基本操作,这些操作除了针对单独的字母,还可以针对文本对象。文本对象可以是单词、句子、段落、[]{}()<> 这些括号括起来的文本、单引号或双引号中的文本、被选中的文本、被标记的文本等等。还有无限制的撤消或重做(上一次的)操作。

3.    查找替换:极其方便的查找替换操作,可以使用正则表达式。同时针对多份文档进行查找替换。

4.    同时编辑多份文档:在纯文本模式下的多窗口、多个缓冲区、多标签等等。

5.    选择:可以按行、列等方式选择文本,同时编辑多行文本等等。选择操作可以与编辑和定位操作接合起来使用。定位、编辑、查找、选择等等操作都可以串起来,让你随心所欲的控制自己的文档。这些所有的操作都是在无鼠标的情况下,只按一个字母键或少数几个组合字母键完成的!

6.    表格编辑:在虚拟空间中方便的编辑二维表格。

7.    宏:把以上所有的操作录制成一个宏,全自动化的操作,或自动重复任意次数。

8.    其他操作:增加或减少缩进、合并行、字母大小写转换、全自动重新排版、自动补齐等等。

9.    自定义:在 .vimrc 文件中自定义各种操作环境,按自己的方式控制屏幕或键盘等等操作环境。

10.    插件:Vim 有非常多的插件让我们高效的操作,但是不建议把大量时间浪费在插件的选择上,毕竟我们最重要的是工作本身,而不是插件的测试。

Vim 能完美的做到上面的所有。所以,广大程序猿朋友建议抽点时间出来学学 Vim。


下面分享一下在 .vimrc 中几个与括号相关的自动补齐快捷键设置:

1.    () 小括号:在输入有参数的函数时,我们希望右边的小括号能自动补齐,同时在输入无参数的函数时,不希望自动补齐。加上下面两行即可:

当我们想输入 int main(int argc, char **argv) 时,输入到左边第一个括号,后面的字母 i 输入时,第二个括号会自动补上,无需输入。当我们输入 auto size = vec.size(); 时,会很自然的输入两个括号接着输入后面的其他字符(例如分号)。后面的第二个半边括号不要自动输入,避免自动补齐再去删除后面多余的半边括号,这样就不会打断思维。

2.    [] 中括号:中括号也按照上面的方式设置:

3.    <>尖括号:在 C++ 中,尖括号有四种含义,其一是模板,例如 vector<int>;其二是小于号,输入时会习惯性的在后面加一个空格,例如 if ( i < 10 );其三是左移位或向 cout 输出,例如 std::cout << i << "\n";其四是模板特例化,例如 template <> int comp( ... )。针对前面四种输入情形,分别设置如下:

快捷键设置有一个原则,就是不要打断自己的正常思维。所以上面的四种设置是一个整体,缺一不可,因为第一个输入的字符是 < 号,四种定义是相互影响的。设置这种成对的括号,无论如何,最后一种是必不可少的,因为我们经常很自然的输入 <>,后面不能再自动补一个 > 来干扰自己的思维。

4.    {} 大括号:在 C++ 中,大括号有三种含义,其一是作用域,例如函数;其二是列表初始化,一般在输入左边的括号后会跟一个空格;其三就是单独的 {} 了。设置如下,这三行设置是一个整体,缺一不可:

一般我们输入作用域的时候,大括号会单独占一行(左边的大括号可能不会单独占一行),接下来的代码会有一个缩进,然后开始输入后面的字符,类似如下图的格式。所以在输入第一个 { 的时候,光标要求自然的到达下一行缩进的位置,然后开始输入后面的代码,并且大括号要求成对自动补齐。在这里,我们只要输入 { 然后自然的输入字母 i ,后面的格式和 } 全部自动补齐了。

5.    双引号和单引号:双引号和单引号比较特殊,虽然有的地方要求成对出现,但是大多数时候也有单独的输入,因此各设置一个快捷输入就可以了,如下:


下面是我其中一个非常简单的 .vimrc 设置文件,其中 execute pathogen#infect() 和 let NERDTreeQuitOnOpen=1 两行与插件相关,如果你没有相关的插件,就删除这两行吧:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354