Articles tagged with emacs:

  • Getting IBus working with Emacs

    Emacs comes with a lot of Chinese input methods like pinyin, four-corner method, and various forms of Cangjie among others (listed quite handily here). For basic usage, it actually does fairly well. I've been able to use the four corner method to look up characters of which I don't know the pronunciation. However, Emacs's 4corner and Cangjie methods are limited in that they only use traditional characters and can't look up simplified characters. So if I tried to look up 龙 ("dragon"), which looks like 4corner "43040" to me, I wouldn't be able to, since it's a simplified character. I'd only be able to look up the traditional form of dragon: "龍" (which is "01211"). So I looked for other input methods that might support both traditional and simplified, one of which is Wubi. Wubi isn't available for Emacs, but can be installed via IBus.

    I installed IBus and tried it out. It's input is pretty good, and better than Emacs's pinyin in that it has phrase matching. So if I wanted to enter in "lǎoshī" ("teacher", "老师") in Emacs, it would get "lao -> 老" correct, but would guess that "shi" is "是", since shì (是) is more common than shī (师). IBus's pinyin is smart enough to recognize "laoshi" as "老师", among other words and phrases.

    IBus worked out of the box for applications like Chromium and even xterm, but for some reason it seemed to have no effect whatsoever in Emacs. I thought this had something to do with not having ibus-el installed, so I installed it via apt. Even with correct setup I still had problems. Nothing was showing up. When I tried ibus-toggle I got the error 'IBusELInputContext' object has no attribute 'enable'. It turns out that IBus 1.5 no longer works with ibus-el, and that ibus-el pretty much doesn't work anymore (see this discussion). But some seemed to be able to get IBus working without ibus-el. Since Emacs has XIM support, it should be able to support it automatically. But whenever I entered text, only English characters appeared, without the IBus character selection dialog popup. I tried adding

    export GTK_IM_MODULE=ibus
    export XMODIFIERS=@im=ibus
    export QT_IM_MODULE=ibus
    

    to my ~/.zshrc (it turns out you probably don't need to, as GTK_IM_MODULE and XMODIFIERS were already set to these values).

    I found someone mention the workaround of using LC_CTYPE="zh_CN.UTF-8" emacs to start Emacs. It turns out that this somewhat works. I started to see the IBus character selection dialog popup, but I wasn't able to enter any characters. I tracked the problem to Gtk-WARNING **: Locale not supported by C library, which suggested that I didn't actually have "zh_CN.UTF-8" installed. So I installed it via sudo dpkg-reconfigure locales and selected the appropriate option. Now if I start emacs using

    LC_CTYPE="zh_CN.UTF-8" emacs
    

    it can accept input through Wubi, Pinyin, Cangjie5, and others. Cool!

    There's still some ...


  • Emacs is great for sysadmins, too

    I work as a Unix Systems Administrator for UC Berkeley's Rescomp and it occasionally comes up that sysadmins generally prefer vim while programmers prefer Emacs. The reasoning for this is that vim or vi is generally more available on servers and generally has a more consistent interface across servers. That is, if you use Emacs, you generally have a hefty .emacs file, and using an unconfigured Emacs is painful.

    I think it's no longer the case that Emacs isn't installed by default. I've only ever had to use vim a handful of times, and the only thing I really needed to know was how to

    1. Insert text (i)
    2. Save & Exit (Esc : wq ENTER)

    However, I'm a sysadmin that prefers Emacs, and there are a number of reasons why using Emacs is very helpful for sysadminning.

    Dired

    Dired mode is Emacs's visual "directory editor", and it makes navigating and operating on files much easier than just using the command line.

    Using marks

    One task that's very easy in Dired that's really cumbersome to do elsewhere is repeated grepping. Say, for example, that I want to find files with "hello" in them. In Dired I do this by pressing % g and entering the string.

    A number of files displayed in Dired.

    And what I get is a number of marked files (in orange), that I can easily, among other things:

    • copy (C)
    • move/rename (R) (even to another server with Tramp!)
    • change the mode of (M)
    • run a shell command on (!)
    Highlighting files to perform actions on them.

    Now I can filter out files that don't match by pressing t k (which toggles, then kills lines).

    Filtering out a file by "killing" lines.

    Now say I forgot that I also need the files to contain "world" somewhere in them. I just repeat the process by pressing % g again and entering "world" to get a list of marked files that contain both "hello" and "world".

    Searching with dired highlights files.

    And now it's really easy to do any operations on them.

    In bash, however, it feels a little more clumsy for me. It's possible to search by doing:

    grep -l "hello" .
    

    But if I remember later that it also has to contain "world", I have to go edit the last command to be:

    grep -lr hello . | xargs grep -l world
    

    And now I just get a list of files. Say now that I want to copy these files somewhere. I have to again tack on another command, like so:

    grep -lr hello . | xargs grep -l world | xargs -n1 -i cp {} /some/directory
    

    It gets really cumbersome, and it requires you to remember how to use substitute arguments like {} in xargs. And you might also have to hope your file names don't contain whitespace. With Dired, you really don't have to worry about these kinds of things. Dired's marking system makes a bunch of operations super convenient.

    Edit Dired

    "Edit Dired" mode also just makes it so much easier to rename files in bulk. Instead of having to think of a regexp or sed expression to ...


Page 1 / 1

Category
Tagcloud
neuro LaTeX js bad-tagging-scheme pelican R testing vim-is-okay-too emacs statistics wm sysadmin productivity
Latest posts