OI

gedit使用心得

Posted by wyj on October 20, 2018

众所周知,gedit开启括号补全只需要一行

sudo apt install gedit-plugins

即可,但是显然NOIP中你没有sudo权限(就算有也连不了网)。

我为这个问题思索了很久,最后想到了一个绝妙的解决方案:

使用gedit自带的snippets插件。

设置四个全局的片段,分别叫做 ( , [ , { , “ ,片段内容举个例子就行了:[ 片段是[$0]。

可惜还是不太方便,每输入一个括号都要打个tab。于是我又想到了一招:把 ( 的快捷键设成Ctrl+9,其余同理,就会稍微自然一些。

接下来打算尝试用全部NOI Linux环境写一道题。(没有plugins,没有c++11)


现在准备把外部工具中的编译运行从GCC迁移到Clang。有三点理由:

  1. Clang编译出的程序更快,pi_faster快3秒
  2. Clang出错信息更加人性化
  3. Clang编译出可执行文件而不是共享库文件,点击即可运行

并且上次在知乎上搜了一下GCC和Clang的评价,几乎一边倒的兹词Clang,据说clang编译更快,可惜对于OI所用的小型程序没有任何差别。

UPD:现在我会了免root安装插件、头文件自动跳转、模式行等等一堆功能,然而地方太小写不下了。

还是写一下我的头文件自动跳转的脚本吧。首先是删除空格(这个只在别人的代码里面存在),然后用locate命令定位(这个是用的哈希所以贼快)。

#!/bin/bash
line=$GEDIT_CURRENT_LINE
if grep -q \< <<< $line ; then
	hd=`echo $line | sed -r "s/\#include\ *<//g;s/>$//g"`
else
	hd=`echo $line | sed -r "s/\#include\ *\"//g;s/\"$//g"`
fi
if [ "$hd" == '' ]; then exit; fi
str=`locate -r /$hd$ | head -n1`
if((!${#str})); then exit; fi
gedit "$str"