zoukankan      html  css  js  c++  java
  • Sublime Text 2配置

    gedit用了很久,终于换编辑器了T_T

    Sublime Text 自行百度谷歌。

    一开始我在官网下载的压缩包,然后自己配置。搞了半天后果断删掉。。。还是用源的自动安装吧。T_T

    恩。下面的命令

    sudo add-apt-repository ppa:webupd8team/sublime-text-2
    sudo apt-get update
    sudo apt-get install sublime-text-2
    

     然后安装好就是咱们的st了。

    可是你发现了啥没。。不能输入中文。囧

    1、解决Sublime Text 2中文输入问题

    解决:(https://www.sinosky.org/linux-sublime-text-fcitx.html)以下大部分抄自这里

    1. 保存下述代码为 sublime-imfix.c 文件

    /*
    sublime-imfix.c
    Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
    By Cjacker Huang
    
    gcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
    LD_PRELOAD=./libsublime-imfix.so subl
    */
    #include <gtk/gtk.h>
    #include <gdk/gdkx.h>
    typedef GdkSegment GdkRegionBox;
    
    struct _GdkRegion
    {
      long size;
      long numRects;
      GdkRegionBox *rects;
      GdkRegionBox extents;
    };
    
    GtkIMContext *local_context;
    
    void
    gdk_region_get_clipbox (const GdkRegion *region,
                GdkRectangle    *rectangle)
    {
      g_return_if_fail (region != NULL);
      g_return_if_fail (rectangle != NULL);
    
      rectangle->x = region->extents.x1;
      rectangle->y = region->extents.y1;
      rectangle->width = region->extents.x2 - region->extents.x1;
      rectangle->height = region->extents.y2 - region->extents.y1;
      GdkRectangle rect;
      rect.x = rectangle->x;
      rect.y = rectangle->y;
      rect.width = 0;
      rect.height = rectangle->height;
      //The caret width is 2;
      //Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.
      if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
            gtk_im_context_set_cursor_location(local_context, rectangle);
      }
    }
    
    //this is needed, for example, if you input something in file dialog and return back the edit area
    //context will lost, so here we set it again.
    
    static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)
    {
        XEvent *xev = (XEvent *)xevent;
        if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {
           GdkWindow * win = g_object_get_data(G_OBJECT(im_context),"window");
           if(GDK_IS_WINDOW(win))
             gtk_im_context_set_client_window(im_context, win);
        }
        return GDK_FILTER_CONTINUE;
    }
    
    void gtk_im_context_set_client_window (GtkIMContext *context,
              GdkWindow    *window)
    {
      GtkIMContextClass *klass;
      g_return_if_fail (GTK_IS_IM_CONTEXT (context));
      klass = GTK_IM_CONTEXT_GET_CLASS (context);
      if (klass->set_client_window)
        klass->set_client_window (context, window);
    
      if(!GDK_IS_WINDOW (window))
        return;
      g_object_set_data(G_OBJECT(context),"window",window);
      int width = gdk_window_get_width(window);
      int height = gdk_window_get_height(window);
      if(width != 0 && height !=0) {
        gtk_im_context_focus_in(context);
        local_context = context;
      }
      gdk_window_add_filter (window, event_filter, context);
    }
    

    2. 安装 C/C++ 的编译环境和 gtk libgtk2.0-dev

    sudo apt-get install build-essential
    sudo apt-get install libgtk2.0-dev
    

    3. 编译共享内库

    gcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
    

    4.移动编译后的库文件到st目录

    sudo cp ./libsublime-imfix.so /opt/sublime_text_2/
    

    5.修改 /usr/share/applications/sublime-text-2.desktop 为

    [Desktop Entry]
    [...]
    Exec=env LD_PRELOAD=/opt/sublime_text_2/libsublime-imfix.so /opt/sublime_text_2/sublime_text %F
    [...]
    
    [Desktop Action Window]
    [...]
    Exec=env LD_PRELOAD=/opt/sublime_text_2/libsublime-imfix.so /opt/sublime_text_2/sublime_text -n
    [...]
    
    [Desktop Action Document]
    [...]
    Exec=env LD_PRELOAD=/opt/sublime_text_2/libsublime-imfix.so /opt/sublime_text_2/sublime_text --command new_file
    [...]
    

    6. 修改 /usr/bin/subl 为

    #!/bin/sh
    export LD_PRELOAD=/opt/sublime_text_2/libsublime-imfix.so
    exec /opt/sublime_text_2/sublime_text "$@"
    

    7.搞定,收工。

    这样无论从命令行还是桌面快捷键都能够使用中文了~

    2、配置Sublime Text 2使得能够编译c++及运行

    打开菜单 -> Tools -> Build System -> New Build System...

    编辑如下(我自己的配置,其它的大家自己模仿):

    {
    	"cmd": ["bash", "-c", "echo '============building============' && g++ '${file}' -o '${file_path}/${file_base_name}' -Wall && echo && echo '============successful!============'"],
    	//"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "-Wall"],
    	"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    	"working_dir": "${file_path}",
    	"selector": "source.c, source.c++",
    
    	"variants":
    	[
    		{
    			"name": "Run",
    		//	"cmd": ["bash", "-c", "echo '============running============' && '${file_path}/${file_base_name}'"]
    			"cmd": ["bash", "-c", "echo 'running...' && '/home/iwtwiioi/sublime/runbyfile.sh' '${file_path}' '${file_base_name}'"]
    		},
    		{
    			"name": "Runbyter",
    		//	"cmd": ["bash", "-c", "echo '============running============' && '${file_path}/${file_base_name}'"]
    			"cmd": ["bash", "-c", "echo 'running...' && '/home/iwtwiioi/sublime/cpp-run.sh' '${file_path}' '${file_base_name}'"]
    		},
    		{
    			"name": "buildby",
    			//g++ '${file}' -o '${file_path}/${file_base_name}' -Wall
    			"cmd": ["bash", "-c", "echo '============c++11 building============' && g++ '${file}' -o '${file_path}/${file_base_name}' -Wall -std=c++11 && echo && echo '============successful!============'"]
    		}
    	]
    }
    

    然后那两个文件 cpp-run.sh 和 runbyfile.sh 如下

    cpp-run.sh:

    #!/bin/bash
    # $1 is the execute program
    echo "============output============"
    dr=$1
    nm=$2
    pro="$dr/$nm"
    dat="$dr/in"
    "$pro" < "$dat"
    echo
    echo
    

    runbyfile.sh:

    #!/bin/bash
    dr=$1
    nm=$2
    pro="$dr/$nm"
    rin="$dr/in"
    rout="$dr/out"
    "$pro" < "$rin" > "$rout"
    echo
    echo "successful!"
    

    然后是配置快捷键:

    打开菜单 -> Preferences -> Key Bindings - User

    编辑为:

    [
    	{ "keys": ["f5"], "command": "build"},
    	{ "keys": ["f4"], "command": "build", "args": {"variant": "Run"} },
    	{ "keys": ["f3"], "command": "build", "args": {"variant": "Runbyter"} },
    	{ "keys": ["alt+f5"], "command": "build", "args": {"variant": "buildby"} }
    ]
    

    3、解决GBK中文乱码

    安装Package Control:用ctrl+~打开控制台,在其输入以下代码就可以自动安装packge control

    import urllib2,os; pf='Package Control.sublime-package'; 
    ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')
    

    重启sublime,如果在Preferences菜单栏下有Package Control这项就成功了

    安装GBK Encoding Support插件

    用ctrl+shift+p打开命令行模式,输入Install Package选择Package Control:Install Package,搜索GBK Encoding Support就行了。

    但是可能会发现这样仍然乱码。那么继续上边的步骤,安装Codecs26即可

    收工~

  • 相关阅读:
    oracle级联删除
    sqlserver 中批量删除 换行符
    SpringBoot与jackson.databind兼容报错问题
    mvn 本地jar包 加入自己的maven仓库
    sql server 表2字段更新到表1,mysql
    sql server 修改表字段
    Spring Boot文件上传
    java如何实现多继承(实现:子类中二个方法,分别继承不同父类)
    SQL SERVER 数据库如何限制一列不能重复(已经有主键)
    SQL server 字段合并CAST(org_no AS VARCHAR(20))+CAST(page_no AS VARCHAR(20))+CAST(djlb_no AS VARCHAR(20)))
  • 原文地址:https://www.cnblogs.com/iwtwiioi/p/3927294.html
Copyright © 2011-2022 走看看