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 ~