??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品亚洲人成在线麻豆,亚洲国产成人精品久久久国产成人一区二区三区综
,中文字幕亚洲专区 http://www.tkk7.com/ivanwan/archive/2006/04/15/41210.htmlivaneeo ivaneeo Sat, 15 Apr 2006 03:46:00 GMT http://www.tkk7.com/ivanwan/archive/2006/04/15/41210.html http://www.tkk7.com/ivanwan/comments/41210.html http://www.tkk7.com/ivanwan/archive/2006/04/15/41210.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/41210.html http://www.tkk7.com/ivanwan/services/trackbacks/41210.html
]]> 在emacs支持ruby http://www.tkk7.com/ivanwan/archive/2006/04/08/40025.htmlivaneeo ivaneeo Sat, 08 Apr 2006 12:43:00 GMT http://www.tkk7.com/ivanwan/archive/2006/04/08/40025.html http://www.tkk7.com/ivanwan/comments/40025.html http://www.tkk7.com/ivanwan/archive/2006/04/08/40025.html#Feedback 1 http://www.tkk7.com/ivanwan/comments/commentRss/40025.html http://www.tkk7.com/ivanwan/services/trackbacks/40025.html 攑օemacs/site-lisp目录 ?emacs中添? (autoload 'ruby-mode "ruby-mode" "Major mode for editing ruby scripts." t) (setq auto-mode-alist (cons '("\\.rb$" . ruby-mode) auto-mode-alist)) (setq interpreter-mode-alist (append '(("ruby" . ruby-mode)) interpreter-mode-alist)) (setq load-path (append load-path '("X"))) ]]> windows下gnu emacs中文的配|?/title> http://www.tkk7.com/ivanwan/archive/2006/03/24/37231.htmlivaneeo ivaneeo Fri, 24 Mar 2006 08:11:00 GMT http://www.tkk7.com/ivanwan/archive/2006/03/24/37231.html http://www.tkk7.com/ivanwan/comments/37231.html http://www.tkk7.com/ivanwan/archive/2006/03/24/37231.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/37231.html http://www.tkk7.com/ivanwan/services/trackbacks/37231.html ?http://mule-gbk.sourceforge.net/ 下蝲mule-gbkQ然后解压到L目录Q不q不要解压到 $HOME 目录下面Q这里解压羃?D:\mule-gbk-0.1.2004080701 Q然后仿照auctex的安装方法即可,用cygwin安装的步骤如下:
$cd d: (或?cd /cygdrive/d) $cd mule-gbk-0.1.2004080701 $./configure $make $make lispdir=d:/emacs-21.3.50.1/site-lisp install
最后一条命令中Q?lispdir 指定的是el文g安装的目?
现在?.emacs 中加?/li> (set-terminal-coding-system 'chinese-iso-8bit) (set-keyboard-coding-system 'chinese-iso-8bit) (set-language-environment 'Chinese-GB) (setq locale-coding-system 'chinese-iso-8bit) (setq current-language-environment "Chinese-GB") (if (not (member '("-*-tahoma-normal-r-*-*-16-*-*-*-c-*-fontset-chinese" . "fontset-gbk") fontset-alias-alist)) (progn (create-fontset-from-fontset-spec "-*-tahoma-normal-r-*-*-16-*-*-*-c-*-fontset-gbk, ;ascii:-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1, chinese-gb2312:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gb2312*-*, korean-ksc5601:-*-medium-r-normal-*-*-*-ksc5601*-*, chinese-cns11643-5:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gbk*-0, chinese-cns11643-6:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gbk*-0, chinese-cns11643-7:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gbk*-0, chinese-big5-1:-*-Ming(for ISO10646)-*-*-*-*-16-160-*-*-*-*-big5*-*, chinese-big5-2:-*-Ming(for ISO10646)-*-*-*-*-16-*-*-*-*-*-big5*-*" t) ) ) ]]> emacs下利用c-mode~辑javascript文g http://www.tkk7.com/ivanwan/archive/2006/03/24/37222.htmlivaneeo ivaneeo Fri, 24 Mar 2006 06:59:00 GMT http://www.tkk7.com/ivanwan/archive/2006/03/24/37222.html http://www.tkk7.com/ivanwan/comments/37222.html http://www.tkk7.com/ivanwan/archive/2006/03/24/37222.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/37222.html http://www.tkk7.com/ivanwan/services/trackbacks/37222.html (setq auto-mode-alist (append '(("\\.js$" . c-mode)) auto-mode-alist)) (autoload 'javascript-mode "javascript-mode" "JavaScript mode" t) (setq auto-mode-alist (append '(("\\.js$" . javascript-mode)) auto-mode-alist)) ; Indent c code four spaces (setq c-basic-offset 4) ; Associate c-mode with the .js extension (setq auto-mode-alist (append '(("\\.js$" . c-mode)) auto-mode-alist)) 2.在你的site-lisp目录下加入javascript-mode.el文g: ;; javascript-mode.el --- major mode for editing javascript (.js) files ;; ;; Copyright (C) 1997 Peter Kruse ;; Author: Peter Kruse <pete@netzblick.de> ;; Keywords: languages ;; Time-stamp: <Sun Apr 12 20:02:25 1998 pete> ;; This file is *NOT* part of GNU Emacs. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2 of the License, or ;; (at your option) any later version. ;; javascript-mode.el is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this file; if not, write to the Free Software ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Commentary: ;; Get the latest version from ;; <http://www.brigadoon.de/peter/javascript-mode.el> ;; Basically this is c-mode, for indentation, that's where the line ;; (load-library "c-mode") comes from. colorization is done via hilit19.el. ;; Actually did not do much programming myself, just wanted to have ;; colorization, indentation and some functions (hm that's what major modes ;; are about?) hey, this is my first try! ;;; HOW TO INSTALL: ;; Put the following forms in your .emacs to enable autoloading of JavaScript ;; mode, and auto-recognition of ".js" files. ;; ;; (autoload 'javascript-mode "javascript-mode" "JavaScript mode" t) ;; (setq auto-mode-alist (append '(("\\.js$" . javascript-mode)) ;; auto-mode-alist)) ;; ;; This mode requires another lisp file, tempo.el. This can be ;; retrieved from ftp://ftp.lysator.liu.se/pub/emacs/tempo.el ;; ;; You might want to get browse-url.el, for the online help. ;; Get it from ;; http://wombat.doc.ic.ac.uk/emacs/browse-url.el ;;; Change Log: ;; ;; Sun Apr 12 19:48:48 1998 ;; ;; included a menu ;; ;; Mon Sep 22 20:03:12 MET DST 1997 ;; ;; improvement of Syntax-table ;; ;; Sun Sep 7 17:57:50 MET DST 1997 ;; ;; new variable: javascript-interactive ;; ;; Mon Sep 1 14:52:37 MET DST 1997 ;; ;; javascript online help - all it does, is browse-url to ;; javascript-base-help-href ;; ;; Fri Aug 29 21:01:22 MET DST 1997 Peter Kruse ;; <peter.kruse@psychologie.uni-regensburg.de> ;; ;; 1st release ;;; TODO ;; ;; - online help should work like describe-\(function\|variable\), ;; but get the info from the web. Netscape's documention is in progress, ;; there is no final complete docu on JavaScript1.2, so perhaps we wait. ;; ;; - should include an interface to signing scripts, but zigbert is not ;; available for linux ;;; Bugs ;; ;; - strings in single-quotes do not highlight ;;; Code: ;; user-variables (defvar javascript-indentation 4 "The width for further indentation in JavaScript mode.") (defvar javascript-base-help-href "http://developer.netscape.com/library/documentation/communicator/jsguide/" "URL where the javascript guide can be found.") (defvar javascript-browse-url-function 'browse-url-w3 "how to view online help.") (defvar javascript-interactive t "If t user will be prompted for strings in templates.") ;;; (defvar javascript-mode-map (make-sparse-keymap) "Keymap for javascript-mode") (defvar javascript-mode-syntax-table nil "Syntax table for javascript-mode.") (defvar javascript-mode-hook nil "*Hook run when javascript-mode is started.") (if javascript-mode-syntax-table () (setq javascript-mode-syntax-table (make-syntax-table text-mode-syntax-table)) (modify-syntax-entry ?_ "w" javascript-mode-syntax-table) (modify-syntax-entry ?' "\"" javascript-mode-syntax-table) (modify-syntax-entry ?% "_" javascript-mode-syntax-table) (modify-syntax-entry ?\" "\"" javascript-mode-syntax-table) (modify-syntax-entry ?\\ "\\" javascript-mode-syntax-table) (modify-syntax-entry ?. "_" javascript-mode-syntax-table)) (defvar javascript-mode-abbrev-table nil "Abbrev table used while in javascript-mode.") (define-abbrev-table 'javascript-mode-abbrev-table ()) (require 'tempo) (tempo-define-template "javascript-for" (list "for (" '(p "initial: ") "; " '(p "condition: ") "; " '(p "increment: ") ") {" 'n> 'p 'n "}" '>) nil "insert a for loop" nil) (tempo-define-template "javascript-for-in" (list "for (" '(p "variable: ") " in " '(p "object: ") ") {" '> 'n> 'p 'n "}" '>) nil "insert a for loop" nil) (tempo-define-template "javascript-if" (list "if (" '(p "condition: ") ") {" 'n> 'p 'n "}" '>) nil "insert an if statement" nil) (tempo-define-template "javascript-while" (list "while (" '(p "condition: ") ") {" 'n> 'p 'n "}" '>) nil "insert a while statement" nil) (tempo-define-template "javascript-do" (list "do {" '> 'n> 'p 'n "} while(" '(p "condition: ") ");" '>) nil "insert a do-while statement" nil) (tempo-define-template "javascript-with" (list "with (" '(p "with what? ") ") {" 'n> 'p 'n "}" '>) nil "insert a with statement" nil) (tempo-define-template "javascript-defun" (list "function " '(p "function name: ") "(" '(p "arguments: ") ") {" 'n> 'p 'n "}" '>) nil "insert a function definition" nil) (tempo-define-template "javascript-switch" (list "switch (" '(p "variable: ") ") {" '> 'n> "case '" 'p "' :" '> 'n> "break;" '> 'n> "default :" '> 'n> "}" '>) nil "insert a switch statement" nil) (tempo-define-template "javascript-case" (list "case '" 'p "' :" '> 'n> "break;" '>) nil "insert a case" nil) ;;; now for the help facility ;;; from man.el (defun javascript-help (entry) "Opens a browser via browse-url with a help entry on the current word." (interactive (list (let* ((default-entry (current-word)) (input (read-string (format "Help entry%s: " (if (string= default-entry "") "" (format " (default %s)" default-entry)))))) (if (string= input "") (if (string= default-entry "") (error "No entry given") default-entry) input)))) (let ((url (concat javascript-base-help-href "contents.htm" "#" entry)) (browse-url-browser-function javascript-browse-url-function)) (if (boundp 'browse-url-browser-function) (progn (pop-to-buffer " javascript-help") (apply browse-url-browser-function (list url))) (error "browse-url not found")))) (modify-frame-parameters (selected-frame) '((menu-bar-lines . 2))) (define-key javascript-mode-map [menu-bar javascript] (cons "JavaScript" javascript-mode-map)) (define-key javascript-mode-map [menu-bar javascript Help] '("Help" . javascript-help)) (define-key javascript-mode-map [menu-bar javascript for] '("for" . tempo-template-javascript-for)) (define-key javascript-mode-map [menu-bar javascript forin] '("for .. in" . tempo-template-javascript-for-in)) (define-key javascript-mode-map [menu-bar javascript if] '("if" . tempo-template-javascript-if)) (define-key javascript-mode-map [menu-bar javascript while] '("while" . tempo-template-javascript-while)) (define-key javascript-mode-map [menu-bar javascript with] '("with" . tempo-template-javascript-with)) (define-key javascript-mode-map [menu-bar javascript switch] '("switch" . tempo-template-javascript-switch)) (define-key javascript-mode-map [menu-bar javascript case] '("case" . tempo-template-javascript-case)) (define-key javascript-mode-map [menu-bar javascript do] '("do" . tempo-template-javascript-do)) (define-key javascript-mode-map [menu-bar javascript function] '("function" . tempo-template-javascript-defun)) (define-key javascript-mode-map "\C-c\C-h" 'javascript-help) (define-key javascript-mode-map "\C-c\C-f" 'tempo-template-javascript-for) (define-key javascript-mode-map "\C-c\C-n" 'tempo-template-javascript-for-in) (define-key javascript-mode-map "\C-c\C-i" 'tempo-template-javascript-if) (define-key javascript-mode-map "\C-c\C-w" 'tempo-template-javascript-while) (define-key javascript-mode-map "\C-c\C-t" 'tempo-template-javascript-with) (define-key javascript-mode-map "\C-c\C-s" 'tempo-template-javascript-switch) (define-key javascript-mode-map "\C-c\C-c" 'tempo-template-javascript-case) (define-key javascript-mode-map "\C-c\C-d" 'tempo-template-javascript-do) (define-key javascript-mode-map "\C-c(" 'tempo-template-javascript-defun) (define-key javascript-mode-map "{" 'electric-c-brace) (define-key javascript-mode-map "}" 'electric-c-brace) (defun javascript-mode () "Major mode for editing javascript code. Basically this is c-mode, because it does a nice indentation. c-mode gets called via `load-library'. Colorization is done with hilit19. A few commands are defined through `tempo.el'. The online help facility gets done through browse-url.el. \\{javascript-mode-map} You can set the indentation level by setting the variable `javascript-indentation' to an integer-value. Default is 4. The variable javascript-base-help-href sets the URL for the JavaScript guide." (interactive) (kill-all-local-variables) (load-library "c-mode") (require 'browse-url) (use-local-map javascript-mode-map) (setq major-mode 'javascript-mode) (setq mode-name "JavaScript") (set-syntax-table javascript-mode-syntax-table) (make-local-variable 'comment-start) (setq comment-start "http:// ") (make-local-variable 'comment-start-skip) (setq comment-start-skip "/\\*+ *\\|// *") (make-local-variable 'tempo-interactive) (setq tempo-interactive javascript-interactive) (make-local-variable 'indent-line-function) (setq indent-line-function 'c-indent-line) (make-local-variable 'c-indent-level) (setq c-indent-level javascript-indentation) (run-hooks 'javascript-mode-hook)) ;;; (if (featurep 'hilit19) (hilit-set-mode-patterns 'javascript-mode '(("/\\*" "\\*/" comment) ("http://" "$" comment) ("\\<function\\>\\s +[^0-9]\\w+\\s *([^)]*)" nil defun) ("\\<\\(abstract\\|boolean\\|break\\|byte\\|case\\|catch\\|char\\|class\\|const\\|continue\\|default\\|delete\\|do\\|double\\|else\\|extends\\|false\\|final\\|finally\\|float\\|for\\|goto\\|if\\|implements\\|in\\|instanceof\\|int\\|interface\\|long\\|native\\|new\\|null\\|package\\|private\\|protected\\|public\\|return\\|short\\|static\\|super\\|switch\\|synchronized\\|this\\|throw\\|throws\\|transient\\|true\\|try\\|typeof\\|var\\|void\\|while\\)\\>" 1 keyword) ("\\<with\\>\\s *([^)]*)" nil include) ("\\<\\(import\\|export\\)\\>\\s +.*" nil include) ("\"[^\\\"]*\\(\\\\.[^\\\"]*\\)*\"" nil string) ("^\\s *\\w+\\s *:\\s *$" nil label)) nil nil) nil) (provide 'javascript-mode) ;; javascript-mode.el ends here ;; Local Variables: ;; local-write-file-hooks:(time-stamp) ;; End: ]]> emacs 安装c#mode http://www.tkk7.com/ivanwan/archive/2006/03/23/37101.htmlivaneeo ivaneeo Thu, 23 Mar 2006 14:37:00 GMT http://www.tkk7.com/ivanwan/archive/2006/03/23/37101.html http://www.tkk7.com/ivanwan/comments/37101.html http://www.tkk7.com/ivanwan/archive/2006/03/23/37101.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/37101.html http://www.tkk7.com/ivanwan/services/trackbacks/37101.html
默认情况下,
Emacs
已经可支?/span>
c/c++
以及
Java
开发(其它的语a我没试过Q因为我机器上只有上q几U语a的编译器Q,但如果你想用它来开?/span>
C#
q需要做一些其它的工作?/span>
Emacs
像一把枪Q在需要时可以d不同的子弹,我们现在需要的是找一_刻?/span>
C#
字样的子弹压入枪膛。这_子弹的名字?/span>
C# for Emacs mode
Q是由微软的一位工E师
Brad Merrill
利用业余旉开发的Q可以在他的个h|站
http://www.cybercom.net/~zbrad/
处下载,最新版本ؓ
4.0
?/span>
?
下蝲之后需要对所获得?/span>
package
文gq行一些简单的配置。因为我此前也没有接触过
Lisp
语言Q因此配|成了一大难题。经q一?/span>
google
搜烦后,l于?/span>
http://www.experts-exchange.com/Programming/Q_20815476.html
扑ֈ了答案。原来配|竟是非常简单:
?
1Q?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">?
把下载文件夹?/span>
cite-lisp
子目录下的文件复制到
Emacs
安装目录
\cite-lisp\
下?/span>
2Q?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">?
把下载文件中
zbrad.emacs
文gQ?/span>
.emacs
?/span>
Emacs
的配|文Ӟ也复制到
Emacs
安装目录
\cite-lisp
子目录下Q然后改名ؓ
site-start.el
?/span>
3Q?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">?
重新启动
Emacs
Q?/span>
OK
Q?/span>
]]>昄按键的历史记?/title> http://www.tkk7.com/ivanwan/archive/2005/11/12/19462.htmlivaneeo ivaneeo Sat, 12 Nov 2005 06:30:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/12/19462.html http://www.tkk7.com/ivanwan/comments/19462.html http://www.tkk7.com/ivanwan/archive/2005/11/12/19462.html#Feedback 1 http://www.tkk7.com/ivanwan/comments/commentRss/19462.html http://www.tkk7.com/ivanwan/services/trackbacks/19462.html
emacs会分隔成两个windows,在下面显CZ按过的键?br>
]]> 直接打开压羃文g http://www.tkk7.com/ivanwan/archive/2005/11/11/19321.htmlivaneeo ivaneeo Fri, 11 Nov 2005 07:21:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/11/19321.html http://www.tkk7.com/ivanwan/comments/19321.html http://www.tkk7.com/ivanwan/archive/2005/11/11/19321.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19321.html http://www.tkk7.com/ivanwan/services/trackbacks/19321.html
(require 'jka-compr)
(jka-compr-install)
]]>打开q编辑其他服务器上的文g http://www.tkk7.com/ivanwan/archive/2005/11/11/19297.htmlivaneeo ivaneeo Fri, 11 Nov 2005 07:00:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/11/19297.html http://www.tkk7.com/ivanwan/comments/19297.html http://www.tkk7.com/ivanwan/archive/2005/11/11/19297.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19297.html http://www.tkk7.com/ivanwan/services/trackbacks/19297.html
但输入的文g的格式不一L。格式如下:/user@hostname:filename
]]> 关于基本操作的补?/title> http://www.tkk7.com/ivanwan/archive/2005/11/11/19291.htmlivaneeo ivaneeo Fri, 11 Nov 2005 06:38:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/11/19291.html http://www.tkk7.com/ivanwan/comments/19291.html http://www.tkk7.com/ivanwan/archive/2005/11/11/19291.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19291.html http://www.tkk7.com/ivanwan/services/trackbacks/19291.html
C-x C-w 文g另存为?br>
M-x pwd 昄当前目录?br>
]]> //的意?/title> http://www.tkk7.com/ivanwan/archive/2005/11/11/19282.htmlivaneeo ivaneeo Fri, 11 Nov 2005 05:34:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/11/19282.html http://www.tkk7.com/ivanwan/comments/19282.html http://www.tkk7.com/ivanwan/archive/2005/11/11/19282.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19282.html http://www.tkk7.com/ivanwan/services/trackbacks/19282.html
?/的意思是忽略??之前的\径,实际的\径就??br>
]]> 在bufferq加文g http://www.tkk7.com/ivanwan/archive/2005/11/10/19180.htmlivaneeo ivaneeo Thu, 10 Nov 2005 08:33:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/10/19180.html http://www.tkk7.com/ivanwan/comments/19180.html http://www.tkk7.com/ivanwan/archive/2005/11/10/19180.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19180.html http://www.tkk7.com/ivanwan/services/trackbacks/19180.html
]]> 文本的剪贴板操作 http://www.tkk7.com/ivanwan/archive/2005/11/10/19101.htmlivaneeo ivaneeo Thu, 10 Nov 2005 03:21:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/10/19101.html http://www.tkk7.com/ivanwan/comments/19101.html http://www.tkk7.com/ivanwan/archive/2005/11/10/19101.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19101.html http://www.tkk7.com/ivanwan/services/trackbacks/19101.html
2。在开始位|作标记(C-@)?br>
3。到要复制的l束位置?br>
4。如果你要复制到剪脓板,?font size="2">M-w (kill-ring-save);如果你要剪切?/font> 剪脓板,?font size="2">C-w (kill-region)?br>
复制剪脓板的最q的内容Q只要按C-y?br>
而M-y则是复制?/font> 剪脓板的 最q的上一ơ内宏V?br>
比如Q剪贴板内有三个依次内容的文本:one,two,three.
按C-y复制的是three.
按M-y复制的是two.
按M-y复制的是one.
]]> Ud到指定行 http://www.tkk7.com/ivanwan/archive/2005/11/10/19095.htmlivaneeo ivaneeo Thu, 10 Nov 2005 02:51:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/10/19095.html http://www.tkk7.com/ivanwan/comments/19095.html http://www.tkk7.com/ivanwan/archive/2005/11/10/19095.html#Feedback 2 http://www.tkk7.com/ivanwan/comments/commentRss/19095.html http://www.tkk7.com/ivanwan/services/trackbacks/19095.html (global-set-key [(meta g)] 'goto-line)
]]>以表辑ּ为单位的Ud http://www.tkk7.com/ivanwan/archive/2005/11/10/19093.htmlivaneeo ivaneeo Thu, 10 Nov 2005 02:39:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/10/19093.html http://www.tkk7.com/ivanwan/comments/19093.html http://www.tkk7.com/ivanwan/archive/2005/11/10/19093.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19093.html http://www.tkk7.com/ivanwan/services/trackbacks/19093.html sexp 是一个expession, n个expression如果用括hhq一? (expression的定义随语言的不同而有不同, 在C, lisp tex, html, fortran 下皆有差? 当你在编E时q里有一些非常有用的function. 你可以在.emacs加入Q?br> (global-set-key [(meta left)] 'backward-sexp) (global-set-key [(meta right)] 'forward-sexp)
]]> 以页D落Q分隔移?/title> http://www.tkk7.com/ivanwan/archive/2005/11/10/19092.htmlivaneeo ivaneeo Thu, 10 Nov 2005 02:09:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/10/19092.html http://www.tkk7.com/ivanwan/comments/19092.html http://www.tkk7.com/ivanwan/archive/2005/11/10/19092.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19092.html http://www.tkk7.com/ivanwan/services/trackbacks/19092.html
M-} Q向前一个段?,
M-{ (向后一个段?, C-x
] (向前一个页), C-x [ (向后一个页).
]]> 在buffer的最后自动添加空?/title> http://www.tkk7.com/ivanwan/archive/2005/11/10/19090.htmlivaneeo ivaneeo Thu, 10 Nov 2005 01:43:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/10/19090.html http://www.tkk7.com/ivanwan/comments/19090.html http://www.tkk7.com/ivanwan/archive/2005/11/10/19090.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19090.html http://www.tkk7.com/ivanwan/services/trackbacks/19090.html
?emacs中加入:
(setq next-line-add-newlines t)
q样׃自动你的buffer的末֊入空行。这样就不会到达buffer末尾Q也不会有bellC?br>
如果要取消的话,?emacs加入Q?br>
(setq next-line-add-newlines nil) ]]> 怎么让menu消失 http://www.tkk7.com/ivanwan/archive/2005/11/10/19086.htmlivaneeo ivaneeo Thu, 10 Nov 2005 01:24:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/10/19086.html http://www.tkk7.com/ivanwan/comments/19086.html http://www.tkk7.com/ivanwan/archive/2005/11/10/19086.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/19086.html http://www.tkk7.com/ivanwan/services/trackbacks/19086.html
(menu-bar-mode nil)
q样菜单消׃?br>
]]> mode注意?/title> http://www.tkk7.com/ivanwan/archive/2005/11/09/18989.htmlivaneeo ivaneeo Wed, 09 Nov 2005 06:49:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/09/18989.html http://www.tkk7.com/ivanwan/comments/18989.html http://www.tkk7.com/ivanwan/archive/2005/11/09/18989.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18989.html http://www.tkk7.com/ivanwan/services/trackbacks/18989.html
在mode中L用C-c做前命o来指定特D的函数。我们可以用C-c C-h来查看已l存在绑定的函数?br>
]]> 关于point和mark http://www.tkk7.com/ivanwan/archive/2005/11/09/18981.htmlivaneeo ivaneeo Wed, 09 Nov 2005 06:35:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/09/18981.html http://www.tkk7.com/ivanwan/comments/18981.html http://www.tkk7.com/ivanwan/archive/2005/11/09/18981.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18981.html http://www.tkk7.com/ivanwan/services/trackbacks/18981.html
我们可以让emacs高亮昄??emacs里添?transient-mark-mode t))从point到mark的区域。如下:
best of the world
我们q可以交换point和mark之间的位|。(C-x C-x)
]]> 如何demacs的脚?/title> http://www.tkk7.com/ivanwan/archive/2005/11/09/18956.htmlivaneeo ivaneeo Wed, 09 Nov 2005 04:13:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/09/18956.html http://www.tkk7.com/ivanwan/comments/18956.html http://www.tkk7.com/ivanwan/archive/2005/11/09/18956.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18956.html http://www.tkk7.com/ivanwan/services/trackbacks/18956.html
$mkdir emacs
2。把你的脚本考到那个目录下?br>
例如Q?cp -v sams-lib.el ~/emacs
3。编辑默认的脚本.emacs
$vi ~/.emacs
加入下面内容Q?br>
(setq load-path (cons "~/Emacs" load-path))
(require 'sams-lib)
(load "refcard") q行保sams-lib.el中的一个函数被载入?br>
]]> 搜烦 http://www.tkk7.com/ivanwan/archive/2005/11/08/18810.htmlivaneeo ivaneeo Tue, 08 Nov 2005 09:10:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18810.html http://www.tkk7.com/ivanwan/comments/18810.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18810.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18810.html http://www.tkk7.com/ivanwan/services/trackbacks/18810.html
你目?Emacs 正处于“渐q搜索”状态,正在{待你输入搜索字丌Ӏ?lt;Return>
会结束搜索?br>
>> 输入 C-s 开始一个搜索。注意敲慢一点,一ơ输入一个字W?br>
慢慢输入“cursor”整个词Q每敲一个字暂停一下,注意观察光标?br>
现在你应该已曄扑ֈ“cursor”这个词了?br>
>> 再按一?C-sQ搜索下一个“cursor”出现的位置?br>
>> 现在按四ơ退格键Q看看光标是如何Ud的?br>
>> ?<Return> l束搜烦?br>
刚才看仔l了么?在一个渐q式搜烦中,Emacs 会尝试蟩C输入的字W串的出
C|。想跛_下一个搜索目标出现的位置Q只要再按一?C-s p了。如果找
不到QEmacs 会发出“哔”的一壎ͼ告诉你搜索失败。在整个q程中,都可以用
C-g 来终止搜索。【你会发?C-g 之后光标回到了搜索开始前的地方,?br>
<Return> 会让光标留在搜烦l果上,q是很有用的功能。?br>
--------------------------------------------------------------------------------------------------
Emacs 的搜索命令的独特之处在于Q它是“渐q的QincrementalQ”,意思是?br>
索与输入同时q行Q你在这边一个字一个字地输入你x索的东西Q同?Emacs
在那边就替你搜烦了?br>
C-s 是向前搜索,C-r 是向后搜索?br>
]]> 自动保存 http://www.tkk7.com/ivanwan/archive/2005/11/08/18790.htmlivaneeo ivaneeo Tue, 08 Nov 2005 08:10:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18790.html http://www.tkk7.com/ivanwan/comments/18790.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18790.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18790.html http://www.tkk7.com/ivanwan/services/trackbacks/18790.html
辑的东西很可能就找不回来了。ؓ了避免这L不幸一再发生,Emacs 会定期将
你正在编辑的文g存入一个“自动保存”文件中。自动保存的文g名的头尾各有
一个?”字W,比如你正在编辑“hello.c”,那么它的自动保存文g叫
?hello.c#”。在你正常存盘之后,Emacs 会删除自动保存文件?br>
假如不幸真的发生了,你大可以从容的打开原来的文Ӟ注意不是自动保存文gQ?br>
然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提示认?br>
时候,输入 yes<Return> p了?img src ="http://www.tkk7.com/ivanwan/aggbug/18790.html" width = "1" height = "1" /> ]]> 扩展命o?/title> http://www.tkk7.com/ivanwan/archive/2005/11/08/18785.htmlivaneeo ivaneeo Tue, 08 Nov 2005 08:06:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18785.html http://www.tkk7.com/ivanwan/comments/18785.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18785.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18785.html http://www.tkk7.com/ivanwan/services/trackbacks/18785.html
l合键上昄是不可能的事情。Emacs 用扩展(eXtendQ命令来解决q个问题Q?br>
扩展命o有两U风|
C-x 字符扩展?nbsp; C-x 之后输入另一个字W或者组合键?br>
M-x 命o名扩展。M-x 之后输入一个命令名?br>
-------------------------------------------------------------------------------------------------------
C-x 的扩展命令有很多Q下面列出的是你已经学过的:
C-x C-f L文g?br>
C-x C-s 保存文g?br>
C-x C-b 列出~冲区?br>
C-x C-c d Emacs?br>
C-x 1 x其它所有窗|只保留一个?br>
C-x u 撤销?br>
用命令名扩展的命令一般都不太常用Q或者只在部分模式下被用到。比?br>
replace-stringQ字W串替换Q这个命令,它会在全文范围内把一个字W串替换
成另一个。在你输?M-x 的时候,Emacs 会在屏幕底端向你询问Q然后你应该?br>
入命令名。如果你惌入“replace-string”,其实只需要敲“repl s<TAB>”就
行了QEmacs 会帮你自动补齐的。输入完之后?<Return> ?br>
字符串替换命令需要两个参数——被替换的字W串和用来替换它的字W串。每?br>
参数的输入用换行W来l束?br>
>> 光标移到本行的下两行空白,然后输入
M-x repl s<Return>changed<Return>altered<Return>?br>
【ؓ了l练习,保留一行原文如下:
Notice how this line has changed: you've replaced... ?br>
h意这一行是怎么改变的:在光标之后的范围内,你已l将“changed”这?br>
词——不它在哪里出现——全部用“altered”替换掉了?br>
]]> ~冲?/title> http://www.tkk7.com/ivanwan/archive/2005/11/08/18774.htmlivaneeo ivaneeo Tue, 08 Nov 2005 06:51:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18774.html http://www.tkk7.com/ivanwan/comments/18774.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18774.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18774.html http://www.tkk7.com/ivanwan/services/trackbacks/18774.html
一个文Ӟ你可?C-x C-f 再次L它。这P你可以在 Emacs 里同时打开?br>
多文件?br>
>> ?C-x C-f foo <Return> 的方式徏立一个名为“foo”的文g?br>
然后敲入一些文字,再用 C-x C-s 保存文g“foo”?br>
最后,输入 C-x C-f TUTORIAL.cn <Return> 回到q里?br>
-----------------------------------------------------------------------------------------------
Emacs 把每个编辑中的文仉攑֜一个称为“缓冲区QbufferQ”的地方。每?br>
扑ֈ一个文ӞEmacs 在其内部开辟一个缓冲区。用下面的命令可以列出当?br>
所有的~冲区:
C-x C-b 列出~冲?br>
>> 现在p一?C-x C-b
观察一下缓冲区是如何命名的Q它很可能跟其对应的文g同名。事实上Q你在一
?Emacs H格里看到的M文字都是某个~冲区的一部分?br>
>> 输入 C-x 1 d~冲区列?br>
不管存在多少~冲区,M时候都只能有一个是“当前”缓冲区Q也是你正?br>
~辑的这个。如果你想编辑另外一个缓冲区Q那么你必须“切换”过厅R上面讲
q,?C-x C-f 可以切换到某个文件对应的~冲区。不q还有一个更单点的办
法,那就是用 C-x b。用q个命oQ你必须输入~冲区的名称?br>
-----------------------------------------------------------------------------------------------
C-x s 保存多个~冲?br>
C-x s 会找到所有已被修改但未存盘的缓冲区Q然后向你逐个询问Q是否需?br>
存盘Q?br>
>> 插入一行文字,然后输入 C-x s?br>
它应该会问你Q是否要储存名ؓ TUTORIAL.cn 的缓冲区Q?br>
按“y”告诉它你想存盘?br>
]]> 文g http://www.tkk7.com/ivanwan/archive/2005/11/08/18772.htmlivaneeo ivaneeo Tue, 08 Nov 2005 06:40:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18772.html http://www.tkk7.com/ivanwan/comments/18772.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18772.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18772.html http://www.tkk7.com/ivanwan/services/trackbacks/18772.html
“从l端d了一个参数”(在这里,q个参数昄是文g名)。当你输入了
q个命o之后Q?br>
C-x C-f L一个文?br>
Emacs 会提CZ输入文g名。你输入的文件名会出现在屏幕最底端的一行,q一
行被UCؓ缓ԌminibufferQ,在小~冲里你可以使用通常?Emacs ~辑命o
来编辑文件名?br>
在小~冲里输入文件名Q其实输入别的东西也一P时可以用 C-g 取消?br>
>> 输入 C-x C-fQ然后输?C-g
q会x缓Ԍ同时也会取消使用缓冲的 C-x C-f 命o?br>
当然了,你也没有找Q何文件?br>
输入完文件名之后?<Return> l束Q然?C-x C-f 命o开始工作ƈ扑ֈ你指?br>
的文件。小~冲?C-x C-f 命ol束之后也会消失?br>
眨眼间文件就会显C在屏幕上,你可以开始编辑了。存盘用q个命oQ?br>
C-x C-s 储存q个文g
q个命o?Emacs 中的文字存储到文件中。第一ơ存盘的时?Emacs 会将原文
仉命名以保留原文。重命名的规则通常是在原文件名之后d一个“~”字W?br>
存盘l束后,Emacs 会显C写入文件的文g名。你最好养成经常存盘的习惯Q这
样在pȝ崩溃或者死机的时候你不会损失太多?img src ="http://www.tkk7.com/ivanwan/aggbug/18772.html" width = "1" height = "1" /> ]]> 撤销 http://www.tkk7.com/ivanwan/archive/2005/11/08/18762.htmlivaneeo ivaneeo Tue, 08 Nov 2005 05:57:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18762.html http://www.tkk7.com/ivanwan/comments/18762.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18762.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18762.html http://www.tkk7.com/ivanwan/services/trackbacks/18762.html
C-x u?br>
通常 C-x u 会消除一个命令所造成的所有改变;如果你在一行中q箋多次C?br>
C-x uQ你会把以前的命令也依次撤销?br>
但是有两个例外:
1Q?没有改变文字的命令不(包括光标Ud命o和滚动命令)
2Q?从键盘输入的字符以组为单位——每l?20 个字W——来q行处理?br>
Q这是ؓ了减你在撤销“插入文字”动作时需要输?C-x u 的次敎ͼ
>> ?C-k 这一行移除,然后输入 C-x u Q它会再ơ出现?br>
C-_ 也是撤销命oQ它的作用跟 C-x u 一P但是它比较容易多ơ输入。C-_ ?br>
~点是在某些键盘上可能不太容易按Q这也正是我们同时提?C-x u 的原因。在
某些l端上,你可以按?CONTROL 再按?”来输入 C-_?br>
数字参数对于 C-_ ?C-x u 的意义是执行撤销的重复次数?img src ="http://www.tkk7.com/ivanwan/aggbug/18762.html" width = "1" height = "1" /> ]]> 插入与删?/title> http://www.tkk7.com/ivanwan/archive/2005/11/08/18761.htmlivaneeo ivaneeo Tue, 08 Nov 2005 05:54:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18761.html http://www.tkk7.com/ivanwan/comments/18761.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18761.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18761.html http://www.tkk7.com/ivanwan/services/trackbacks/18761.html
用法应该一栗一般来?<Delback> 是位于 <Return> 键上Ҏ处的一个大?br>
键,通常被标CZؓ“Delete”、“Del”或者“Backspace”?br>
下面是一个关于“删除”操作的结Q?br>
<Delback> 删除光标前的一个字W?br>
C-d 删除光标后的一个字W?br>
M-<Delback> U除光标前的一个词
M-d U除光标后的一个词
C-k U除从光标到“行䏀间的字W?br>
M-k U除从光标到“句䏀间的字W?br>
【可能你已经注意C“删除(deleteQ”和“移除(killQ”的用词区别Q后
文会有详l说明。?br>
-----------------------------------------------------------------------------------------------------
你也可以用一U统一的办法来删除~冲区里的Q何一部分Q首先把光标UdC
惌删除的区域的一端,然后?C-@ ?C-SPCQQ一卛_QSPC指空|【注意,
C-SPC 往往被中文用戯定成输入法热键,如果q样QC-SPC ppȝ拦截而无
法输入给 Emacs 了,因此q里q是推荐使用C-@。】,然后再移动到另一端,?br>
?C-w 可以把位于q两点之间的所有文字删除了?br>
>> Ud光标C一D开头的“你”字?br>
>> 输入 C-@ 。Emacs 应该会在屏幕的下ҎCZ个“Mark set”的消息?br>
>> Ud光标到第二行中的“端”字?br>
>> 输入 C-wQ就会把从“你”开始到“端”之前的文字全部删除?br>
注意,“移除(killQ”和“删除(deleteQ”的不同在于被移除的东西可以扑֛
来,而被删除的就不行了。【实际上Q移除掉的东西虽然看h“消失”了Q但
实际上被 Emacs 记录了下来,因此q可以找回来Q而删除掉的东西虽然也可能q?br>
在内存里Q但是已l被Emacs“抛弃”了Q所以就找不回来了。】重新插入被U除
的文字称为“召回(yankQ”。一般而言Q那些会去除很多文字的命令会把去?br>
掉的文字储存hQ它们被讑֮成了“可召回”)Q而那些只是去除一个字W或
者只是去除空白的命o׃会储存那些被去除掉的东西Q因此你无法召回)?br>
-----------------------------------------------------------------------------------------------------
>> Ud光标C非空白行的行_然后输入 C-k U除那一行上的文字?br>
>> 再次 C-kQ你可以看到它移除了跟在那一行后面的换行W?br>
注意Q单独的 C-k 会把一行的内容U除Q而第二个 C-k 则会U除换行W,q
其后所有的行都向上Ud。C-k 处理数字参数的方式很特别Q它会把参数指定?br>
那么多行q同其后的换行符一L除,而不仅仅是重?C-k 而已。比?C-u 2
C-k 会把两行以及它们的换行符U除Q而如果只是输?C-k 两次昄不是q个l?br>
果?br>
-------------------------------------------------------------------------------------------------------
被U除的文字恢复的动作UCؓ“召回(yankingQ”。(好像你把别Z你n
边移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回Q也可以在别
的地方召回,q可以多ơ召回同L文字以得到它的多个拷贝?br>
召回的命令是 C-y。它会在光标所在处插入你最后移除的文字?br>
>> 试试看,输入 C-y 文字召回?br>
如果你一ơ连按了好几?C-kQ那么所有被U除的行会被存储在一P只要一?br>
C-y 可以把它们都召回?br>
>> 在这里试试,q箋按几?C-k?br>
现在再来恢复刚刚被我们移除的文字Q?br>
>> ?C-y。然后把光标往下移动几行,再按一?C-y?br>
现在你应该知道怎么复制文字了?br>
C-y 可以把最q移除的文字召回Q但如果你想召回的东西不是最q移除的Q该?br>
么办呢?它们当然没有丢,你可以用 M-y 来召回它们。在?C-y 召回最q移?br>
的文字之后,紧接着再用 M-y 可以召回再前一ơ被U除的文字,再按一?br>
M-y 又可以召回再上一ơ的Q因此只要多按几?M-y 可以找C惌召回的东
西了。找C之后Q你什么也不用做,把它们晾在那里,l箋你的~辑p了?br>
如果你一ơ按 M-y 按了很多下,你可能会回到起始点,也就是最q移除的文字?br>
【看得出q实际上是一个环。?br>
>> U除一行,Ud一下光标,然后再移除另外一行?br>
?C-y 第二次U除的那行召回来?br>
紧接着再按 M-yQ它会被第一ơ移除的那行取代?br>
试着再按几下 M-y 看看会发生什么?br>
再l,直到W二行被召回来,然后再做个几ơ?br>
如果你愿意,你可以试着l?M-y 指定一个正的或负的参数?br>
]]> 重复命o http://www.tkk7.com/ivanwan/archive/2005/11/08/18757.htmlivaneeo ivaneeo Tue, 08 Nov 2005 05:37:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18757.html http://www.tkk7.com/ivanwan/comments/18757.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18757.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18757.html http://www.tkk7.com/ivanwan/services/trackbacks/18757.html
命o。重复执行输入字W的命o实际上就是输入多个一L字符?br>
>> 试试 C-u 8 *Q这会插入 ********?img src ="http://www.tkk7.com/ivanwan/aggbug/18757.html" width = "1" height = "1" /> ]]> H口命o http://www.tkk7.com/ivanwan/archive/2005/11/08/18755.htmlivaneeo ivaneeo Tue, 08 Nov 2005 05:34:00 GMT http://www.tkk7.com/ivanwan/archive/2005/11/08/18755.html http://www.tkk7.com/ivanwan/comments/18755.html http://www.tkk7.com/ivanwan/archive/2005/11/08/18755.html#Feedback 0 http://www.tkk7.com/ivanwan/comments/commentRss/18755.html http://www.tkk7.com/ivanwan/services/trackbacks/18755.html
多个H格Q现在先让我们先搞明白如何关掉多余的H格。其实也很简单:
C-x 1 只保留一个窗|也就是关掉其他所有的H格Q?br>
也就是先?CONTROL-x 然后再按 1。C-x 1 会保留光标所在的H格Qƈ其扩大
到整个屏q,同时x所有其它的H格?br>
>> 把光标移到本行然后输?C-u 0 C-l?br>
>> 输入 CONTROL-h k CONTROL-f。观察当一个新H格出现时当前窗|用来昄
CONTROL-f 命o的文)是如何羃的?br>
>> 输入 C-x 1 x文档H格?br>
]]>
վ֩ģ壺
ϺɫϺҳa |
һëƬȫѲ |
ƷƵһ |
þþѹ۳ӰԺ |
Ʒһ |
ƵvƬwww |
þŮƵ |
avרav |
պŷAVҹҹ |
91ƷӾʢ |
þþþƷ18վ |
ĻƷԴ |
˳߹ۿƵ |
91ѹƷ |
eeussӰԺ |
vavavaֻ |
߹ۿһ |
ҹʱ |
ҹƵ߹ۿ |
ѿ |
УɫС˵ |
Ʒھþ
|
һ |
Ƶ߲ |
freeƵ |
Ʒ߳ˮAƬ |
һӰ |
avŷղһ
|
aƬ߹ۿĶ |
ѹۿվ |
Ļ߾Ʒ |
ձ߹ۿ |
ձƷþþþþþþ |
ƷĻ鶹 |
aƬ߹ۿĶ |
þþþþ77777 |
ڵƵ |
òƵѸ |
51ƵѹۿƵ |
˽ȥŮˬƵ |
þWWW˳ɡƬ |