龙之吻—水货
2018-10-02 18:23:33
很早就听说了NOIP要用NOI Linux(有的省早就用了,不过我们省比较菜,18年才用)(Linux是个好东西,但NOI Linux...),所以站好队就变得十分重要,因为在Windows上,大家大部分都在用Dev-C++(其他神仙也有用VS Code的,但考场不提供),所以基本上考试的时候都用辣鸡Dev-C++;但是在Linux上就不一样了,NOI Linux上提供了Guide,Emacs,Vim,Anjuta等比Dev-C++高级到不知道哪里去的编辑器(鬼得Guide不算),于是乎,基房分为了两党Emacs党和Vim党。
然而不幸的是,上一届的学长全部都是Vim党,所也没有人给我讲Emacs,一切只能自己从网上学习,遇到问题也只能自己去找答案......
现在用了Emacs将近1年,虽然不能说自己已经会用Emacs了,但至少把Emacs用于考场和日常码代码已经足够了,写一篇学习笔记总结一下在日常中比较常用的Emacs操作,纪念一下过去Emacs学习的艰辛,也希望有更多的Emacs党。
Emacs,是Editor MACroS(编辑器宏)的缩写,是一款著名的集成开发环境和文本编辑器。
自诞生以来,Emacs演化出了众多分支。当中使用最广泛的两种各自是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs。以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。
更多关于Emacs,详见百度百科:Emacs,这里不作过多叙述。
比如:收发邮件,看视频,上网,管理文件,玩游戏等等
尽管Emacs有许多功能,但是Emacs也不会因此而“样样都会,样样不精”;作为一个文本编辑器,Emacs的能力完全不逊于Vim,基本上Vim能做到的Emacs都可以做到,就像网上的一个段子:
如果非要说是什么Vim能做到而Emacs做不到的,估计也只有“帮助乌干达的可怜儿童”。
换句话说就是Emacs的配置文件由Emacs Lisp完成。
Emacs Lisp是Lisp的一种方言,而Lisp是一种功能及其强大的编程语言,同时,Emacs又是由Lisp编写的,这两点使得再Emacs下实现任何事情成为可能。
了解了Emacs Lisp就可以自己打造自己的Emacs,实现自己所需要的功能,做到“自己动手,丰衣足食”。
至于Emacs的配置功能有多么强大,还可以引用网上一个段子:
如果你想让一个Emacs党放弃Emacs,就只需要把他的配置文件删干净就可以了。
在OI和ACM中,只要使用Linux系统,就都会提供Emacs,因此用好Emacs对OI和ACM都有极大的帮助。
详见 https://emacs-china.org/t/emacs/7817
Emacs有Linux,Windows,MacOS三种版本的,在官网上都可以找到包子,并且有详细的安装说明。
不过在Ubuntu上有更简便的方法(似乎官网上并没有说) :
sudo apt-get install emacs
这样就可以直接安装Emacs了,在Ubuntu 18.04上的25.几的版本。
Ubuntu下直接在命令行内输入emacs
或者点击图标即可。
Windows下启动Emacs需要在Emacs安装目录下的bin
中找到emacs.exe
运行,不过这样子运行的Emacs会带一个命令行窗口,还不能关掉,看起来很不舒服;更好的方法是运行Emacs安装目录下的bin
中的runemacs.exe
,这样子运行的Emacs不会有那个影响视觉的命令行窗口。
macOS我没有用过,这里不作说明。
另外,Emacs不仅有图形界面,还有终端模式,加入-nw
命令即可,如在Windows和Ubuntu下:
emacs -nw
以上分别为Emacs的图形界面与终端模式。
所有Emacs的设置都可以通过配置文件完成,这里只特别说一下字体和theme的设置。
在Options
下的Set Default Fond
即可调整字体,Save Options
即可保存调整。
如果你觉得Emacs自带的界面并不好看,可以试试Emacs自带的一些其他themes,在Options
下的Customize Emacs
的Custom Themes
中有不少可供选择的themes,我比较喜欢其中的wombat,如果需要保存的话只需要点击那个Save Setting Themes
即可。
buffer也就是所谓的缓冲区,也就是Emacs中的个个“窗口”,我们对文件的操作都是在buffer上完成的。
至于Emacs真正的窗口,实际上被称为frame,而buffer是frame的一部分,一个frame中可能有许多buffer,下图显示的就是一整个frame。
其中,Mini Buffer是用来完成各种命令以及显示各种提示的,在Mini Buffer中可以利用Tab进行自动补全,如果有多个选择的话则会Emacs列出一张单子供选择。
C-:Ctrl
M-: Alt (实际上是指Meta键,在大多数电脑上是Alt键模仿,在苹果电脑上可以配置为Option键或Command键模仿)
S-:Shift
RET:Return,也就是回车键。
TAB:Tab
ESC:Esc
SPC:空格键
DEL:退格键
对Emacs的所有操作都是通过命令实现的,我们可以通过:
M-x command-name
来调用这个命令,对于常用的命令,通常会有相应的快捷键(当然也可以自己定义快捷键)。
如果当前这个命令有对应的快捷键,当你通过M-x
的方式调用这个命令之后,Emacs会提示你可以用某个快捷键代替这个命令。
如果要取消命令的话可以使用ESC ESC ESC
。
在Emacs中有许多模式,常见的有c++-mode
,c-mode
,pascal-mode
,Emacs-Lisp-mode
等等
Emacs会根据当前文件的后缀名进入各种模式,当然也可以通过M-x mode-name
直接进入某种模式。
下面,我们就说一说一些常用的命令的快捷键。
C-x
+ C-f
,之后你就会在Emacs最下面的区域(也就是Mini Buffer)看到 :
Find File :
之后在那里输入你要打开的文档的地址即可,比如说 :
Find File : ~/work/1.cpp
就是打开在~/work/
下一个叫1.cpp
的文档,如果之前有这个文档,则会直接打开;
否则,Emacs会提示你打开了一个New File
。
在这两种情况下都可以进行编写,不过在前者保存后会改变原文档,后者则会把这个文档新建出来。
C-x
+ C-s
,当然你也可以直接用图形界面上的保存摁钮,不过那样效率会低不少。
如果你的文档发生改变后保存,会出现 :
否则会出现一下说明,说明文档不用进行保存。
在大部分编辑器上剪切、复制、粘贴分别是C-x
、C-c
、C-v
。
不过Emacs有所不同,剪切、复制、粘贴分别是C-w
、M-w
、C-y
。
在刚用的Emacs的时候可能会有些不适应,但用几天就好了。
有兴趣的话可以去查一查Emacs为什么要这样定义快捷键。
如果实在讨厌这些快捷键的话,Emacs也提供了使用C-x
、C-c
、C-v
的方法,就是Options
下的Use CUA Keys
。
C-x
+ h
C-x
+ 1
只保留当前屏幕,删除其他屏幕。
C-x
+ 2
和C-x
+ 3
分别是横向纵向分屏。
C-/
或C-_
或C-x u
。
附上一张图:
这些就是在我用Emacs时很常用的快捷键,平时也几乎不会用到其他的快捷键,在这里就不多说了,如果想知道Emacs的所有基本快捷键的话可以直接看Emacs自带的教程,花一个小时把那个看一下配合上面所说的练习就可以基本掌握Emacs的操作了。至于其他专用的操作,要用到的时候再说吧。
刚用Emacs并不知道还有配置文件这一说,听完学长讲过Vim的配置文件之后,就去网上找了找Emacs的配置文件,然后经过几天的整理,整理出来了一个用于考场的配置文件。
首先说一下Emacs的配置文件名,.emacs
,你可以在不同的地方建这个文件,不过只有在特定的位置建立这个文件,打开Emacs后才会自动载入位置,其他的只能手动载入,其中一个位置是~/.emacs
。
在Linux和Windows下都可以通过Find File : ~/.emacs
直接在~/下建立.emacs
,至于在Windows下这个~/
的位置是什么,相信大家可以自己找出来。
首先M-x
,之后你就会在Emacs的Mini Buffer看到 :
M-x
输入 load-file
M-x load-file
回车,就会显示
load-file :
在后面写上要载入的配置文件的地址并回车即可。
在你要放配置文件的地方新建一个.emacs
(推荐位置~/.emacs,可以直接暴力Find File : ~/.emacs
,在Linux与Windows下都可以的)之后就可以开始写配置文件了。
附上我的考场用配置文件 :
(global-linum-mode t) ;;line num 显示行号
(setq-default indent-tabs-mode nil) ;;将tab转变为空格
(setq c-basic-offset 4)
(setq default-tab-width 4) ;;tab width 设置缩进以及tab键
(electric-pair-mode t)
(electric-layout-mode t)
(electric-indent-mode t)
;;electric pair 括号补全
(show-paren-mode t) ;;show paren 括号配对
(global-hl-line-mode t) ;;high light line 高亮当前行
(global-set-key [f6] 'gdb) ;;摁F6进入gdb调试
(global-set-key [f7] 'compile) ;;摁F7编译
(global-set-key [f8] 'shell) ;;摁F8进入shell
这是比较老的版本,想要附带一键编译与一键运行的可以在后面找到。
特别说一下。
在打开.pas
后缀的文件后,Emacs会进入Pascal-mode模式。
在打开.c
后缀的文件后,Emacs会进入C-mode模式。
在打开.cpp
后缀的文件后,Emacs会进入C++-mode模式。
Emacs的C++-mode下的缩进似乎是强制性的,所以每写完一行后Emacs都会强制性更改当前行的缩进,Tab键的功能是调整本行的缩进。
尽管Emacs的C++-mode缩进是强制性的,不过到现在我用起来还没有什么不适(对大括号换行的朋友可能不大友好QAQ)。
但是,利用Emacs的这个特点可以全选+tab实现对全文的格式整理。
进行完这个配置后摁下F7,最下面会出现 :
compile command:
只需要输入 :
g++ name.cpp -o name
并回车即可。
只要你不关闭Emacs这句话就会被记下,以后如果编译同一份文件直接F7
+回车即可。
更贴心的是,如果你出现了编译错误,Emacs会为你显示编译错误,点击后就可以直接到错误的行处。
如果成功,则会显示 :
shell可以看作是在Emacs中运行的命令行(而且它和命令行长的一样),你可以直接在shell中用相应的命令(什么系统用什么系统的命令),进入当前文件夹,运行刚刚编译完的程序。
由于这是Windows下Emacs的shell,所以就和Windows的命令行长得一样。
如果在这里程序出现了死循环,C-c C-c
即可停止运行。
使用Emacs的shell和系统自带终端的感觉是截然不同的,使用Emacs的shell可以使用Emacs的快捷键以及插件,操作要远比终端上便捷。
对于编译和运行,我已经实现了附带一键编译和运行的配置文件,不过理解需要一些emacs-lisp的基本知识,这里就暂时不说了,有兴趣的话可以去看看,用一用。
现在终于知道怎么用emacs的gdb调试了,总体的感觉还是不错的,毕竟带着图形化的调试界面感觉还是很好的QwQ。
首先保证你编译的时候有加-g。
然后摁下F6
或者M-x gdb
,然后不用去管前面那些莫名其妙命令(我曾经试着按照网上的说法去改,但是并没有成功QAQ),把最后的那个换成你要调试的程序,摁下回车,就可以开始调试了!
Run gdb (like this): gdb -i=mi 1.exe
但是刚刚进入调试的时候界面可能不会十分友好,我们可以M-x gdb-many-windows
开启多窗口调试,之后图形化的界面十分友好,只要你看得懂英文就能很好的应用了QwQ;特别说明一下,Emacs的多窗口gdb调试有专门的input/output
区域,程序的输入要从那里输入。
附上一张来自Emacs官网的gdb调试的图片: 看起来很好,不是吗?
当然,gdb调试命令中的break
,print
还是要知道一下的,毕竟在gdb调试的时候Emacs的快捷键还需要特殊去记忆,不如直接使用gdb的命令。
有了这些简单的快捷键配置,Emacs的已经被配置成一个简单的IDE了(但其实和正规IDE比起来还是差了很多),基本上可以用Emacs码代码了。
但是正如题目所说,这只是一份未入门学习笔记,Emacs的功能远远不止于此毕竟Emacs是个系统啊,Emacs的配置文件也远远不止于此(就比如说我这个蒟蒻的Emacs配置文件已经达到了
这是由于中文字体的缘故,将一下代码放入.emacs即可
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font)
charset
(font-spec :family "Microsoft Yahei" :size 18)))
Emacs Tutorial (也就是Emacs自带的快速指南)
Emacs Guided Tour (强烈推荐,十分详细的指南)
【程序猿助手】Emacs,最强的编辑器,之间的不
Emacs学习笔记(2): 初识Emacs