• Sublime Text 3 史上最性感的编辑器



    ↑ ↑ ↑ ↑ ↑ 请看文件夹 ↑ ↑ ↑ ↑ ↑


    下载 / 安装


    windows / MAC OS

    官网下载,双击安装,这个都会吧~

    linux

    linux下安装,一种办法是从官网下载 tar.bz ,手动安装。

    这里介绍用 apt-get 自己主动安装方法:

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

    命令结束后,一切搞定!

    看看应用列表里是不是出来个亲切的图表?(尽管这个图标一点也不亲切。。)


    改动siderbar颜色


    Windows

    改动 主题文件: /Pristine Packages/Theme - Default.sublime-package/Default.sublime-theme

    背景色
    {
            "class": "sidebar_tree",
            "row_padding": [8, 3],
            "indent": 12,
            "indent_offset": 17,
            "indent_top_level": false,
            "layer0.tint": [30, 30, 30],
            "layer0.opacity": 1.0,
            "dark_content": false
    },
    文字
    {
            "class": "sidebar_label",
            "color": [150, 150, 150],
            "font.bold": false
            // , "shadow_color": [250, 250, 250], "shadow_offset": [0, 0]
    },
    切割线
    {
            "class": "sidebar_container",
            "layer0.tint": [10, 10, 10],
            "layer0.opacity": 1.0,
            "layer0.draw_center": false,
            "layer0.inner_margin": [0, 0, 1, 0],
            "content_margin": [0, 0, 1, 0]
    },

    事实上RGB颜色大家都明确,能够改成自己喜欢的样子。

    PS:备份原来的东西的时候一定要把类型名改了,由于sublime会去载入全部的包。

    另:感谢亦翔百科给予非常大帮助


    Linux

    注意一下Sublime存放的位置就能够:/usr/lib/sublime-text-2
    假设是安装包安装,通常是 /opt 下。


    MAC OS X

    OS下有些麻烦,不能直接改动,须要点工具读写文件,我是在win下改好后再覆盖过来的。


    安装插件


    同vim一样,sublime本身只是仅仅是一个编辑器,要想把它改装成IDE,须要安装各种插件;当然,即便你不须要插件它本身的强大也能够给你带来意想不到的惊喜!


    首先搞定 插件管理器

    顾名思义是用来管理插件的工具,先安上它再搞别的插件就方便了。
    安装方法:
    选择菜单 view->show console ,这时候你就能够看到下边出现了 控制台窗体。(显示框+输入框)这里能够运行python代码
    输入下面代码,就能够安装好 插件管理器(package control)了
    插一句:非常多地方的代码为 import urllib2,os; 这个是python2.x的代码,在python3.x里已经换成了 import urllib.request,os; 假设你是Sublime2.0及下面的版本号,请自行改动代码。
    import urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
    接下来一定记住先重新启动软件!
    按住ctrl+shift+p 


    能够去装自己喜欢的插件了

    装完插件管理器,你就能够去找自己须要的插件然后安装。

    有一些站点会总结一些不错的插件,你能够去试试。

    当然我更希望你先看已看我写的。。

    高速编码类

    Emmet :跟Zen Coding一样,可是ST3已不再支持 Zen,这个也是一样的,可是要注意先禁掉 sublime 本身的自己主动补全功能,在Preferens -> Setting-User 里加入

    代码格式化

    代码格式化包含各种语言的,这里列举几个:(全部的插件都能够在 Package control 里直接搜索得到)

    C / C++:SublimeAStyleFormat
    HTML:Tag

    List:

    看起来是一份不错的总结

    一些不可缺少的 ST 插件

    20个强大的插件


    配置编译环境



    控制台输入(以C++为例)

    原理非常easy,就是在外部建立一个用来运行文件的 bat,然后调用它。注意的就是,须要用start 来打开一个新窗体,同一时候须要 pause 一下来看结果,当中非常蛋疼的就是Sublime默认后台运行你的start,假设你的pause和start放在一个文件了pause对start %1 的文件是无效的,因此事实上须要建立两个文件。注意环境变量。。。(关于什么是环境变量,三两句解释不清楚,最好自己百度一下。)

    配好之后个人感觉控制台输入意义不是非常大,做题的话都是从文件读入,做开发基本不须要读入。So~ 各位谨慎。

    MyCRun.bat

    @echo off
    %1
    echo.
    echo -------------------
    pause
    exit

    MyCallRun.bat

    @start  MyCRun %1

    配置文件在 Sublime Text 3PackagesC++.sublime-package 。 先备份一下。

    改动里面的 C++.sublime-build 为

    {
    	"shell_cmd": "g++ "${file}" -o "${file_path}/${file_base_name}"",
    	"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    	"working_dir": "${file_path}",
    	"selector": "source.c, source.c++",
    
    	"variants":
    	[
    		{
    			"name": "Run",
    			"shell_cmd": "g++ "${file}" -o "${file_path}/${file_base_name}" && MyCallRun "${file_path}/${file_base_name}.exe""    //  事实上就是这里加了个MyCallRun
    		}
    	]
    }
    


    C/C++

    Sublime Text 3 默认配置好了 c++ 。可是须要你自己把 gcc 文件夹加入进环境变量

    Java

    Sublime Text 3 默认仅仅执行了 javac,须要自己加入执行。
    苦逼看不懂 Sublime 的命令格式,于是把 javac 改成一个自己的bat。(感觉也能够像C++那样用 && 连起来)
    在命令行可直接訪问的地方建立 myJRun.bat (我直接放在 jdk/bin 下了)
    @ECHO OFF  
    cd %~dp1  
    ECHO Compiling %~nx1...  
    IF EXIST %~n1.class (  
    DEL %~n1.class  
    )  
    javac %~nx1  
    IF EXIST %~n1.class (  
    ECHO Running...
    ECHO ----------------------OUTPUT----------------------
    java %~n1  
    )
    注意不能使用 cls 。

    改动java的编译选项(备份好原来的)。
    文件夹:Packages/Java.sublime-package/JavaC.sublime-build
    {
    	"shell_cmd": "myJRun.bat "$file"",
    	"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    	"selector": "source.java"
    }
    这样以后写的Java代码点 Build 就会自己主动执行了。
    这样的办法不能跨平台,再研究研究Sublime自己的方式。


    Go

    用 Sublime 开发 golang 的环境非常easy,仅仅须要安装一个 GoSublime 就差点儿相同了。



    Ubuntu下输入中文

    參考整理 这里

    须要自己编译一个文件载入执行。所以须要用到一些编译环境

    步骤1:安装gtk环境

    sudo apt-get install libgtk2.0-dev pkg-config

    另外貌似不支持ibus,我用的 fcitx+sogou

    步骤2:保存以下这个文件到 sublime_imfix.c

    /*
    sublime-imfix.c
    Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
    By Cjacker Huang <jianzhong.huang at i-soft.com.cn>
    
    gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC
    LD_PRELOAD=./libsublime-imfix.so sublime_text
    */
    #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); 
    }

    步骤3:编译之

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

    步骤4:执行

    事实上到这里就能够执行了。试试
    LD_PRELOAD=./libsublime-imfix.so sublime_text

    应该就成功了吧,可是不能每次都这么输命令,我是这么处理的

    - 把 sublime_imfix.so  放在sublime安装文件夹 (我的在 /opt/sublime_text/)

    - 在 /usr/local/bin 或者其它PATH下 新建一个文件Subl写入:

    LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text
    - 新建一个Launcher命令为 /usr/local/bin/Subl (大写仅仅是用来差别于一般命令)

    大功告成!


    关于破解的那点事儿


    网上关于sublime的破解方法,一搜一大堆。可是我至今都没有去破解,原因非常easy,假设一个能够无限期试用的软件你都忍心破解的话。。大家同为开发者,假设自己都去无良的搞破解,还指望谁来为软件付费?(我一个学机械的朋友如是说)




    未完待续。


     

  • 相关阅读:
    20161101学习笔记
    20161031学习笔记
    20161028学习笔记
    20161027学习笔记
    ReentrantLock Condition
    ReentrantLock 重入锁
    CountDownLatch用法与原理
    场景化解释 AQS原理
    Atomic
    多线程工具类
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4046202.html
Copyright © 2020-2023  润新知