Sublime text 2 Configuration

Source: Internet
Author: User
Tags gtk

Gedit has been used for a long time and finally changed the editor t_t.

Sublime text Baidu Google.

First, I downloaded the compressed package on the official website and configured it myself. After a long time, I deleted it... Use the automatic installation of the source. T_t

Well. The following command

sudo add-apt-repository ppa: webupd8team / sublime-text-2
sudo apt-get update
sudo apt-get install sublime-text-2
 Then the installation is our st.

But what did you find? . Cannot enter Chinese. Oops

 

1. Solve the problem of Sublime Text 2 Chinese input
Solution: (https://www.sinosky.org/linux-sublime-text-fcitx.html) Most of the following are copied from here

 

1. Save the following code as sublime-imfix.c file

/ *
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. Install the C / C ++ compilation environment and gtk libgtk2.0-dev

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

3. Compile the shared library

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

4. Move the compiled library file to the st directory

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

5. Modify /usr/share/applications/sublime-text-2.desktop to

[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. Modify / usr / bin / subl to

#! / bin / sh
export LD_PRELOAD = / opt / sublime_text_2 / libsublime-imfix.so
exec / opt / sublime_text_2 / sublime_text "[email protected]"
 

7. Get it done and close the job.

So that you can use Chinese from the command line or desktop shortcuts ~

 

2. Configure Sublime Text 2 to compile and run C ++
Open the menu-> Tools-> Build System-> New Build System ...

Edit as follows (my own configuration, others imitate yourself):

{
"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! ==== ======== '"]
}
]
}
 

Then those two files cpp-
run.sh and runbyfile.sh are as follows

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!"
 

Then, configure shortcut keys:

Open the menu-> Preferences-> Key Bindings-User

Edited as:

[
{"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"}}
]
 

Close work ~

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.