澳门新葡亰信誉平台游戏开发社区分裂为编辑器党和IDE党

by admin on 2020年1月15日

现在比分IDE党占上风,得分远远甩开编辑器党。这要得益于一个神奇的公司:JetBrains,开发了一系列神奇的IDE。教人爱不释手。从此开发社区不再流传VIM、EMACS的传说。

1.写在前面

Linux下的编程,业界多数人士并不喜欢,尤其是习惯了在Windows下编程的程序员,认为Windows的IDE各种好,而linux下没有一个好的IDE
,估计很多人就是卡在这个门槛上了(PS:听说Microsoft和google这种级别的公司的顶级程序员也都不用IDE的,用的是VIM和EMACS)。虽说那些linux牛人也都不用IDE的并且我也很想装成一个牛人,但经过几番折腾,本人还是比较习惯IDE,因为本人也是在windows的IDE下开始的程序生涯。“工欲善其事,必先利其器”,我想如果有个好用的IDE,那些linux牛人应该也不排斥吧。

在Linux编程,首先要选择开发工具,自然目光就投向了网上都说的两大神器——VIM和EMACS,虽说他们只是编辑器,但由于超强的可定制度,已成为广大linux工作者的首选。所以今天我就写点本人使用Emacs和将Emacs配置成一个简易IDE的过程和心得。不过说起配置IDE,前辈吴垠有篇将VIM配置成IDE的文章,本人刚在linux编程时曾深深学习过,甚为折服。顺便提一句,我曾经也是用VIM写程序的,所以我的VIM看起来也是一个简单的IDE,不过后面转向使用Emacs了(声明:本人无意加入VIM和Emacs之争,选择哪一个纯属个人习惯和喜好而已)。

网上很对人都说Emacs门槛比较高,入门难。其实也没有说的那么夸张,可能是比VIM难一点,但是也是很容易上手的,只是好用不好用的问题。好了,闲话少说,下面进入今天的主题:打造Emacs。

推荐阅读:

为Emacs配置newLISP开发环境

手把手教你学会 Emacs 主题配置

手把手教你学会 Emacs 定制

如何在GNU Emacs环境下编译并运行C/C++程序?

本文对Emacs的说明有:

  1. Emacs的基本操作和组合键
  2. 启动时的边框和大小及在屏幕中的位置
  3. Emacs的基本常规设定
  4. Emacs的一些开发环境的设定(C/C++、script等等)
  5. Emacs的一些扩展配置(如改变光标的形状等)

附:本文不会解释lisp编程。

 

我的工作环境是Ubuntu11.04,emacs是直接用sudo apt-get install
emacs安装的,版本是GNU Emacs 23.3.1。下面的例子基本都是在C语言做的演示。

 

下面对一些文中可能用到的名称说明一下:

文中的路径都是 ~/
目录,文中的一些路径如,~/_emacs,~/work,之类的如果没有就自己建一个,.emacs文件在澳门新葡亰信誉平台游戏 ,~/.emacs。

 

先来两张图,我的emacs界面,o(∩_∩)o

图一:

 

澳门新葡亰信誉平台游戏 1

 

对照上图的编号:

1:简洁明了的buffer浏览和操作,以及一些文件浏览器,tag浏览

2:高亮代码编辑区

3:自动补全

4:更好的文件浏览器

 

图2:(debug的截图)

 

澳门新葡亰信誉平台游戏 2

对照上图:

1:图形化调试选项

2:变量查看区

3:源码查看区

4:栈查看区

5:断点查看区

 

为什么不用IDE?因为在服务器上直接写程序,不可能用IDE,虽然现在的IDE有远程同步代码的功能和远程调试功能,可惜,在很多大牛的手中,用IDE反而更慢,而且对IDE一旦形成依赖,对以后的编程能力也会有影响,想真正地学习编码和称为大牛,有些弯路必须要走的,除非是写IDE的程序(安卓app等等,那些就没办法了)。

IDE党的兴起,带动了静态语言的回光返照,大量开发者从动态语言叛逃到静态语言,面对用户的流失,动态语言不得不改变立场,在新版本中增加静态类型特性,诸如PHP、Python都加入了类型标注,越来越像静态语言。TypeScript也跃跃欲试挑战JavaScript的霸主地位,意图取而代之。这一切的转变,都源于一家神奇的公司:JetBrains,如果没有它,现在VIM党,EMACS党仍旧逼格满满受人崇拜。仍然为谁是宇宙第一争个不停,现在好了,都被打入冷宫了。

2.Emacs的基本操作和组合键

那么VIM跟EMACS两者为什么选择EMACS呢?公司的人全都是用VIM的,我一开始也是用VIM,用VIM写程序也的确很快,EMACS的快捷键很多,经常记不住。对于EMCAS的着迷是LISP语言,学完可以自己写脚本同是也能提高自己水平,并不是为了在公司的人面前装逼(才刚刚入门emacs也装不了逼,公司大牛们的vim玩得超级6的)而且发现浏览器里面的一些操作跟EMACS很相似,换行什么的,现在在浏览器上写东西也不需要鼠标了。EMACS的学习曲线真的就想网上看到的那个图片一样,学习EMACS有时候给你糖吃,也有时候给你挖坑,路漫漫兮。

十年河东转河西,谁知道以后动态类型语言会不会东山再起卷土重来呢,师母已呆。

1.Emacs的模式键定义

四个模式键:C——àctrl;M——àalt;s——àsuper(win);S—-àshift

比如:C-x:表示ctrl+x(表示先按下ctrl键,然后按下x键

C-x c C-c:表示按下ctrl,然后按下x键松开后再按下c键

C-x k:表示按下ctrl,同时按下x和k键

一些关于在emacs tutorial里面讲到的操作,简易版。

2.Emacs的基本组合键

C-x C-c:退出Emacs

C-x C-s:保存当前buffer

C-x C-f:打开和新建文件

C-n:光标移到下一行

C-p:光标移到上一行

C-k:删除一行

M-x:执行命令

 

其他的很多组合键我都进行了重新绑定,在下文中将有描述。

  • 1
  • 2
  • 3
  • 4
  • 下一页

Linux下的编程,业界多数人士并不喜欢,尤其是习惯了在Windows下编程的程序员,认为Windows的IDE各种好,而linux下没有一个好的…

  • 移动
    C+n next line
    C+p previous line
    C+f foward a character
    M+f foward a word
    C+b back a character
    M+b back a word
    C+v next page
    C+M+V 滚动副屏
    C+l 光标在中间/底部 / 顶部
    M+v previous page
    M+< 到文本头
    M+> 到文本尾
    C+x u 或者 ctrl + /撤销
    C+g 取消命令

  • 添加
    C+o 在光标后面添加一个空行,光标保留在原来的位置
    C+j 在光标后面添加一个空行,光标在新的一行的位置
    C+x i 把某个文件的所有内容插入到光标之后
    C+u <number> <command>/<word>
    重复number次的命令或者单词

  • 删除
    C+d delete光标后面的一个字母
    C+k kill 光标后面到句末的所有字符
    M+d delete光标后面的一个单词
    M+k kill光标后面的一个句子(到句号为一句话)
    C+y 从kill的缓冲区的栈顶粘贴
    M+y 切换kill缓冲区的栈顶的内容(一个循环)

  • 文件
    C+c ctrl+f打开新文件
    C+c b 打开在buffer的文件
    C+c C+b 查看buffer
    C+x C+f <filename> 新建一个文件
    C+x 4 C+f 在新的窗口打开文件

  • 缓冲区
    C+x b 在当前的窗口打开一个在buffer的文件
    C+x C+b 在新的窗口查看buffer的内容,在buffer列表里面,可以直接用n p
    来做换行而不需要用C+n 和
    C+p,在buffer列表里面,按o在上面的窗口打开文件,按<return>在当前的buffer列表窗口打开文件
    C+x k 关闭当前文件,从buffer区删去

  • 查找
    C+s 向下查找
    C+r 向上查找
    M+c 切换对大小写是否敏感
    M+e 重新编辑要查找的内容
    M+x occur 使用正则表达式搜索,并新建一个窗口(buffer)显示
    M-x rgrep 快速的递归文本检索(recursive grep search)
    M+x grep 在当前目录中查找制定的regrep

  • 窗口
按键 命令 作用
C-x 2 split-window-vertically 垂直拆分窗口
C-x 3 split-window-horizontally 水平拆分窗口
C-x o other-window 选择下一个窗口
C-M-v scroll-other-window 滚动下一个窗口
C-x 4 b switch-to-buffer-other-window 在另一个窗口打开缓冲
C-x 4 C-o display-buffer 在另一个窗口打开缓冲,但不选中
C-x 4 f find-file-other-window 在另一个窗口打开文件
C-x 4 d dired-other-window 在另一个窗口打开文件夹
C-x 4 m mail-other-window 在另一个窗口写邮件
C-x 4 r find-file-read-only-other-window 在另一个窗口以只读方式打开文件
C-x 0 delete-window 关闭当前窗口
C-x 1 delete-other-windows 关闭其它窗口
C-x 4 0 kill-buffer-and-window 关闭当前窗口和缓冲
C-x ^ enlarge-window 增高当前窗口
C-x { shrink-window-horizontally 将当前窗口变窄
C-x } enlarge-window-horizontally 将当前窗口变宽
C-x – shrink-window-if-larger-than-buffer 如果窗口比缓冲大就缩小
C-x + balance-windows 所有窗口一样高
  • 帮助
    C+h t 打开emacs simple tutorial
    C+h ? 提示C-h为前缀的所有指令的发用(可以用M-x help
    <Return>来获取帮助)
    C+<character> ?提示C-<character>指令为前缀的所有用法
    C+h c <command> 查找你需要的快捷键的帮助
    C+h k <command> 打开某个命令的帮助文件
    C+h f 返回关于某个指令的信息

  • 折叠
    M-1 C-x $ 折叠所有
    C-x $ 展开所有

  • 文本块操作
    C+w删除并复制文本块
    M+w复制文本块
    C+x SPACE 进入set-mark模式,可以选择区域块
    C+x SPACE 切换set-mark模式,不同的是选择的区域块是矩形的
    C+x r t 用字符串替换选中的区域
    C+x r d 删除区域(不留空格)
    C+x r C 删除区域(在原来的位置保留为空)
    C+x r k 复制并删除区域(可以用C+w / M+w)
    C+x r y 粘贴用C+x r k 删除的区域块
    C+x r o
    在这块区域插入空白的方格(选择的区域有多大就在前面补多少个空格)
    C+x r r
    将选定的矩形区域复制到某个寄存器,在输入这组键后命令栏会等待你输入寄存器号,这时随便输入一个数字即可,不过的记得它,因为待会儿粘贴的时候还得用到这个寄存器号(相当于放在一个缓存里面,可以随时用来复制粘贴而已)
    C-x r i
    插入寄存器的内容,输入此键后再输入寄存器号可将寄存器中的内容插入到当前区域。

  • 一些比较常用的指令
    M+x rgrep
    递归搜索,搜索包含某个字符串文件,非常常用,找不到相应文件的时候就能用到

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图