週記くらい

  • Profile

Category Archives: emacs

vim使いのslime入門(3)

Posted on 2008/11/17 by smeghead

今回は、slimeのキーバインドを調べてみます。Webで検索してみても良かったんですが、slime.elを見てしまいました。いろんなところにキーバインドらしき定義があるんですが、replで使用できるキーバインドは、下のところで定義されているようでした。

(slime-define-keys slime-repl-mode-map
("\C-m" 'slime-repl-return)
("\C-j" 'slime-repl-newline-and-indent)
("\C-\M-m" 'slime-repl-closing-return)
([(control return)] 'slime-repl-closing-return)
("\C-a" 'slime-repl-bol)
([home] 'slime-repl-bol)
("\C-e" 'slime-repl-eol)
("\M-p" 'slime-repl-previous-input)
((kbd "C-<up>") 'slime-repl-previous-input)
("\M-n" 'slime-repl-next-input)
((kbd "C-<down>") 'slime-repl-next-input)
("\M-r" 'slime-repl-previous-matching-input)
("\M-s" 'slime-repl-next-matching-input)
("\C-c\C-c" 'slime-interrupt)
("\C-c\C-b" 'slime-interrupt)
("\C-c:"    'slime-interactive-eval)
("\C-c\C-e" 'slime-interactive-eval)
("\C-cE"     'slime-edit-value)
("\t"   'slime-complete-symbol)
("\t"   'slime-indent-and-complete-symbol)
(" "    'slime-space)
("\C-c\C-d" slime-doc-map)
("\C-c\C-w" slime-who-map)
("\C-\M-x" 'slime-eval-defun)
("\C-c\C-o" 'slime-repl-clear-output)
("\C-c\C-t" 'slime-repl-clear-buffer)
("\C-c\C-u" 'slime-repl-kill-input)
("\C-c\C-n" 'slime-repl-next-prompt)
("\C-c\C-p" 'slime-repl-previous-prompt)
("\M-\C-a" 'slime-repl-beginning-of-defun)
("\M-\C-e" 'slime-repl-end-of-defun)
("\C-c\C-l" 'slime-load-file)
("\C-c\C-k" 'slime-compile-and-load-file)
("\C-c\C-z" 'slime-nop))

replで、主に使いそうなキーバインドをメモします。

bindaction
C-c C-lファイルをロードする。
M-p履歴の前の入力を復元する。
M-n履歴の後の入力を復元する。
M-r履歴を検索して復元する。シェルのC-rに相当する。
C-c :S式や値を評価する。
\tシンボルの補完を行なう。
(space)関数などの引数のヒントを表示する。
C-c C-lファイルをロードする。

C-c C-d のキーバインドは、HyperSpecを引くコードをするのかと思いましたが、slimeは反応してくれません。というか、slime入れてもHyperSpecは、入らないよな。多分HyperSpecを引くには、別の設定を行なう必要があるのかもしれません。HyperSpecに関してはまた調べてみます。続く

Posted in emacs, lisp, slime | 2 Comments |

Vim使いのslime入門(1)

Posted on 2008/11/12 by smeghead

実践Common Lisp

実践Common Lispを買いました。1,2年前、Common Lispの勉強を初めたころに、Web上で、Practical Common Lispを読んだ思い出があります。といっても、全部ではなくて、前半くらいだけで挫折してますが;;

Practical Common Lisp

Practical Common Lisp

この資料を読む前は、Lispというものに興味はあるものの非常に難しいものだな、と感じていたものですが、このWebの資料を読むことで比較的新しいCommon Lispの思考方法が、それなりに理解できました。Lisp勉強の初期段階に読めて良かったです。


本屋で翻訳された実践Common Lispをパラパラ眺めてみると、最初のところにLisp in a boxのことが紹介されていて、Lispのオールインワンの最高の開発環境とのことでした。

実は、slimeというものを全く知りません。1、2年前Common Lispを勉強しはじめてから、vim + clisp + hyperspec読みツール(id:ytakenakaさん作のツールです)で、こじんまりと作業するのが楽しかったのです。

なんとなく、Lispというプログラミング言語をプリミティブに肌で感じてみたいという思いから、便利な開発環境には触手が伸びませんでした。


ということで、Vim使いがslimeに触れてみるという意味で、いくつかエントリを書いてみようかと思います。

インストール

実は、lisp in a box をgoogleで検索して、Hitするページ(http://common-lisp.net/project/lispbox/)には、Linux用バイナリは置いてないので、ソースをコンパイルしようとすると、嵌るかもしれません。(実は、数時間嵌ってましたorz.)

  • OSは、debian on VMware
  • Common Lispの処理系は、今まで使っていたこともあるので、clispにしました。

実際、実践Common Lispには、http://gigamonkeys.com/lispbox/ というURLが紹介されているので、ここから、GNU/Linux x86 の CLISP 版をダウンロードしました。

$ cd ~/src
$ wget http://common-lisp.net/pcl/linux/lispbox-0.7-clisp-2.36.tar.gz
$ tar zxf lispbox-0.7-clisp-2.36.tar.gz
$ su
# cp -r lispbox-0.7 /usr/local/
# cd /usr/local/bin
# ln -s /usr/local/lispbox-0.7/lispbox.sh lispbox

ダウンロードして展開しただけで、そのまま起動できてしまったのですが、自分のHOME配下に置いとくのもなんなので、/usr/local に置いて、/usr/local/bin/lispbox としてシンボリックリンクを作成しました。

あと、lispbox.shの最初のLISPBOX_HOME設定部分は、は、無理矢理フルパス指定に変えてしまいました。

export LISPBOX_HOME=/usr/local/lispbox-0.7

これで、インストールは完了です。敷居が高いというイメージを覆す程に簡単です。

起動

$ lispbox

で、emacsが立ち上がって、いろいろ画面が流れたり、アニメーション?が表示されて、slimeが立ち上がりました。

ちょっと数字やら文字列やらを評価させたりしてみました。

; SLIME 2005-11-22
CL-USER> 1
1
CL-USER> "helo"
"helo"
CL-USER> (+ 1 2 3)
6
CL-USER> (mapcar #'(lambda (x) (1+ x)) '(1 2 3))
(2 3 4)
CL-USER>

ここで、ひとつ不満が。。。

^H でヘルプ呼び出しなこと。^HはBSとして使いたい。

lispbox.sh を少し編集して、パッケージでインストールされたemacs用の設定ファイル(~/.emacs)を使うようにしてみました。*1

最終的にlispbox.shは、下のように変更しました。

# diff lispbox.sh.org lispbox.sh
2,6c2
< if [ "${0:0:2}" = "./" ]; then
<     export LISPBOX_HOME=`pwd`
< else
<     export LISPBOX_HOME=`dirname $0`
< fi
---
> export LISPBOX_HOME=/usr/local/lispbox-0.7
32c28
< exec ${LISPBOX_HOME}/emacs-21.4/bin/emacs --no-init-file --no-site-file --eval='(progn (load "lispbox") (slime))'
---
> exec ${LISPBOX_HOME}/emacs-21.4/bin/emacs -geometry 150x50 --no-site-file --eval='(progn (load "lispbox") (slime))'
追記2008/11/13 起動時の画面サイズを指定するためgeometryパラメータを追加しました。

これで、lispboxのemacsも、~/.emacsを読んでくれるようになり、背景やフォントや、^Hの動作も希望通りになりました。

続く

*1:emacsは、howmとnavi2chを使うくらいというライトユーザですが、~/.emacsで ^HはBSとする設定をしています。

Posted in emacs, lisp, slime | Leave a comment |

emacs ターミナル経由で操作してる状態でメニューバーにアクセスする

Posted on 2007/11/28 by smeghead

emacsを使ってた同僚が困ってたこと。

ターミナル越しでemacsを使ってるときに、メニューバーが表示されてるけどアクセスできないという話。やり方があったのは覚えてるんですが、思い出せませんでした。

emacsのチュートリアルには、F10とか書いてあるんですが、puttyだとF10が食われてしまうみたいです。(puttyのせいではないかも)

Esc `

↑でメニューにはアクセスできました。(alt + ` ではなく、Escの次に`です)

Posted in emacs | Leave a comment |

クイズ

Posted on 2007/10/09 by smeghead

id:hayamiz:20071009:1191931961 さんのところで出ていたクイズ。プログラム書くときはvimだし、howm@meadowしか使ってませんが、訳もわからず参加します。

q1. キャレット?
q2. C-x 2
q3.
q4. C-hではだめなのは知ってる。
q5.
q6. M-/
q7.
q8.

参加する価値ないの回答ですが、せっかくなので。

追記

q2の言い訳ですが、vimとemacsのウィンドウ分割の向きって逆のようでした。

vimで言うところの垂直分割(:h :vsplit)は、emacsで言うところの水平分割(split-window-horizontally)なのか。

Posted in emacs | Leave a comment |

emacs(meadow)で、小文字に変換

Posted on 2007/10/05 by smeghead

ほとんど、howmのためにmeadowを使ってるので、超基本のキーバインド以外は知りません。小文字に変換する方法がわからなくて調べました。

操作keybind
カーソルの後の単語を小文字に変換M-l
リージョン内を小文字に変換範囲選択後 C-x C-l

別々に覚えないといけない。なんか直観的じゃないキーバインドと感じてしまう。(宗教戦争するつもりはないですが) この辺が、howm以外の目的では、meadowを使ってない理由かもしれません。でもskkは常に使ってます。


その点、vimのキーバインドは、恐しいまでに直感的で合理的です。

操作keybind
カーソルの後の単語を小文字に変換guw
ヴィジュアル選択範囲を小文字に変換vとかVとか<C-v>で範囲選択後 gu

gu と 多彩な移動コマンドを合わせてコマンドの影響範囲を決定できるので、自然な操作でコマンドの適応範囲をコントロールできます。(:h gu) だから↓のような応用も可能になります。

操作keybind
カーソルの前の単語を小文字に変換gub
カーソルから行頭までを小文字に変換gu0
カーソルから行末までを小文字に変換gu$
カーソルのある行から最初の行までを小文字に変換gugg
カーソルのある行から最後の行までを小文字に変換guG
カーソル位置が、( ) で囲まれている場合に、( )の内側を小文字に変換gui(

ほとんどのコマンドが同じように応用できるようになってます。

Posted in emacs, Meadow, vim | Leave a comment |
« Previous Page

Pages

  • Profile

Archives

  • March 2018
  • May 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • April 2014
  • November 2013
  • October 2013
  • July 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • July 2006

Categories

  • android (35)
  • apache (1)
  • bison (1)
  • BTS (18)
  • c# (23)
  • cgi (1)
  • chrome (9)
  • chromeextention (18)
  • clclcl (9)
  • clojure (13)
  • cloudbug1 (2)
  • css (4)
  • cygwin (7)
  • C言語 (21)
  • dart (1)
  • dotnet (11)
    • vb.net (2)
  • e-hash.jp (1)
  • eclipse (2)
  • emacs (10)
  • excel (1)
  • flex (1)
  • framework (11)
  • free (92)
  • gae (4)
  • gcc (4)
  • gimmehash.in (1)
  • glipper (3)
  • golang (7)
  • howm (1)
  • html (3)
  • ikushipe (1)
  • java (47)
  • JavaScript (28)
  • linux (16)
  • lisp (92)
  • lua (34)
  • luatinycgi (2)
  • mba (1)
  • Meadow (4)
  • memo (1)
  • music (5)
  • mysql (1)
  • neta (5)
  • O/Rマッピングツール (4)
  • obj-c (6)
  • OOP (6)
  • oracle (1)
  • perl (48)
  • php (38)
    • CakePHP2 (2)
  • PostgreSQL (8)
  • PowerShell (1)
  • putty (1)
  • python (14)
  • redmine (2)
  • ruby (7)
  • s3 (1)
  • sakura (5)
  • screen (1)
  • Selenium (1)
  • SF (1)
  • SKK (4)
  • slime (6)
  • sql (8)
  • sqlite3 (4)
  • starbug1 (179)
  • tthttpd (3)
  • twitter (7)
  • ubuntu (14)
  • Uncategorized (4)
  • unix (14)
  • unkode-mania (5)
  • vba (3)
  • vim (24)
  • w3m (1)
  • Windows (16)
  • wordpress (1)
  • zsh (6)
  • 愚痴 (1)

WordPress

  • Log in
  • WordPress

Subscribe

  • Entries (RSS)
  • Comments (RSS)

Pages

  • Profile

Archives

  • March 2018
  • May 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • April 2014
  • November 2013
  • October 2013
  • July 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • July 2006

Categories

  • android (35)
  • apache (1)
  • bison (1)
  • BTS (18)
  • c# (23)
  • cgi (1)
  • chrome (9)
  • chromeextention (18)
  • clclcl (9)
  • clojure (13)
  • cloudbug1 (2)
  • css (4)
  • cygwin (7)
  • C言語 (21)
  • dart (1)
  • dotnet (11)
    • vb.net (2)
  • e-hash.jp (1)
  • eclipse (2)
  • emacs (10)
  • excel (1)
  • flex (1)
  • framework (11)
  • free (92)
  • gae (4)
  • gcc (4)
  • gimmehash.in (1)
  • glipper (3)
  • golang (7)
  • howm (1)
  • html (3)
  • ikushipe (1)
  • java (47)
  • JavaScript (28)
  • linux (16)
  • lisp (92)
  • lua (34)
  • luatinycgi (2)
  • mba (1)
  • Meadow (4)
  • memo (1)
  • music (5)
  • mysql (1)
  • neta (5)
  • O/Rマッピングツール (4)
  • obj-c (6)
  • OOP (6)
  • oracle (1)
  • perl (48)
  • php (38)
    • CakePHP2 (2)
  • PostgreSQL (8)
  • PowerShell (1)
  • putty (1)
  • python (14)
  • redmine (2)
  • ruby (7)
  • s3 (1)
  • sakura (5)
  • screen (1)
  • Selenium (1)
  • SF (1)
  • SKK (4)
  • slime (6)
  • sql (8)
  • sqlite3 (4)
  • starbug1 (179)
  • tthttpd (3)
  • twitter (7)
  • ubuntu (14)
  • Uncategorized (4)
  • unix (14)
  • unkode-mania (5)
  • vba (3)
  • vim (24)
  • w3m (1)
  • Windows (16)
  • wordpress (1)
  • zsh (6)
  • 愚痴 (1)

WordPress

  • Log in
  • WordPress

CyberChimps WordPress Themes

© 週記くらい@やーづ

With Google+ plugin by Geoff Janes