<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2007年6月12日

    如題

    posted @ 2008-01-27 17:45 笨蛋啊帆 閱讀(312) | 評論 (0)編輯 收藏

    但是還是要來這個地方寫東西的吧。
    技術的東西學起來飛快了。
    學的東西技術起來忒慢了。

    別玩文字游戲。
    再次告誡自己。

    posted @ 2007-11-12 15:53 笨蛋啊帆 閱讀(543) | 評論 (1)編輯 收藏

    11月1號巨人給OFFER。
    11月1號巨人上市。
    難道真是為了這個巧合簽的?

    -。-
    數據挖掘,數理統計,忘光光了。 而他們都是專家,都很勤奮,我很有壓力。
    努力。。。。。。

    基本上,我的任務是制定決策使網友對網游更上癮???
    不知道,也許基本上就是這樣。
    努力。。。。。。

    posted @ 2007-11-12 15:50 笨蛋啊帆 閱讀(313) | 評論 (0)編輯 收藏

    apache:
    Extract      $ gzip -d httpd-NN.tar.gz
                  $ tar xvf httpd-NN.tar
                  $ cd httpd-NN
    Configure     $ ./configure --prefix=PREFIX
    Compile     $ make
    Install     $ make install
    Customize     $ vi PREFIX/conf/httpd.conf
    Test            $ PREFIX/bin/apachectl -k start
               liu lan qi : http://localhost/     -----It works!


    安裝 mySQL
    shell>  groupadd mysql
    shell> useradd -g mysql mysql

    下面3步把解壓文件放到這里來,并且link 到文件夾/usr/local/mysql
    shell> cd /usr/local
    shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
    shell> ln -s full-path-to-mysql-VERSION-OS mysql

    shell> cd mysql
    shell> scripts/mysql_install_db --user=mysql

    將程序二進制的所有權改為root,數據目錄的所有權改為運行mysqld  的用戶。
    shell> chown -R root  .
    shell> chown -R mysql data
    shell> chgrp -R mysql .
    試試看:
    shell> bin/mysqld_safe --user=mysql

    把/usr/local/mysql/support-files/mysql.server 復制到 /etc/rc.d據說是開機可以啟動。
    不知道了,下次開機的時候 PS 看看好了。


    php:

    gunzip php-NN.tar.gz
    tar -xvf php-NN.tar
       現在需要配置 PHP。在這里可以用各種各樣的參數來自定義PHP,例如啟動哪些
        擴展功能包的支持等。用 ./configure --help 命令可以列出當前可用的所有參
        數。在此例中,將給出一個在有 MySQL 支持的 Apache 2 上進行配置的范例。
        用戶本地的 apxs 的路徑可能會不同,事實上,在用戶的系統中,它可能被命名為
        apxs2。

    ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql
    出錯!:checking for xml2-config path...
    configure: error: xml2-config not found. Please check your libxml2 installation.

    到 ftp://xmlsoft.org/libxml2 下載一個 libxml2-devel-2.6.26-1.i386.rpm
    安裝他,
    rpm -ivhU libxml2-devel-2.6.26-1.i386.rpm

    繼續我的
    ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql
    然后
    make   //10分鐘過后
    make install

    make install

    配置 php.ini

        cp php.ini-dist /usr/local/lib/php.ini

        可以編輯 php.ini 文件以修改 PHP 的選項。如果想要把此文件放到另外的位置,
        需要在步驟 10 添加 --with-config-file-path=/path 選項。

        如果選擇 php.ini -recommended,請務必閱讀其中的變更的列表,它們將影響
        PHP 的執行。

    編輯 httpd.conf 文件以調用 PHP 模塊。LoadModule 表達式右邊的路徑必須指向
        系統中的 PHP。以上的 make install 命令可能已經完成了這些,但務必要檢查。

        對于 PHP 4:
           LoadModule php4_module modules/libphp4.so

        對于 PHP 5:
           LoadModule php5_module modules/libphp5.so

    -----------------檢查已經改好了。。。

    告知 Apache 將特定的擴展名解析成 PHP,例如,讓 Apache 將擴展名 .php
        解析成 PHP。可以將任何擴展名指定為 PHP,只需添加它們,每一個用空格分隔。
        例如,要添加 .phtml:

        AddType application/x-httpd-php .php .phtml

        通常還將 .phps 擴展名設置成顯示高亮的 PHP 源文件,可以這樣來完成:

        AddType application/x-httpd-php-source .phps

    啟動 Apache 服務器:
       /usr/local/apache2/bin/apachectl start

    posted @ 2007-09-07 18:34 笨蛋啊帆 閱讀(4336) | 評論 (0)編輯 收藏

    Win2003作路由 局域網共享上網
    本校計算機中心機房共有計算機240臺,已互連為局域網,希望訪問校內資源時通過校園網接口,而訪問外部資源時通過ADSL接口。

      二、解決

      Windows XP和Windows 2003都自帶ADSL寬帶撥號程序,這里只要使用Windows 2003的路由和遠程訪問程序稍加配置,就可搞掂一切。

      1、前提

      計算機一臺(配置不用很高,只要能安裝Windows 2003就行),安裝有Windows2003 操作系統,內插3塊網卡,網卡1:連接內部局域網,IP:192.168.1.1,子網掩碼:255.255.255.0,網關:空,DNS:空;網卡 2:連接ADSL,IP:自動獲取,DNS:自動獲取;網卡3:連接校園網,IP:202.203.230.2,子網掩碼:255.255.255.0, 網關:202.203.230.1,DNS:202.203.220.2(假設校園網網段為202.203.220.0—202.203.230.0之 間,DNS服務器為202.203.220.2);

      2、服務器配置

      Step1.單擊開始—管理工具—路由和遠程訪問,啟動配置向導;選擇本地服務器,單擊操作—配置并啟用路由和遠程訪問(圖一)。單擊下一步,選擇自定義配置—下一步;復選請求撥號連接(由分支辦公室路由使用)和LAN路由—下一步—完成,即可啟動路由和遠程訪問。
    圖1

      Step2.選擇網絡接口,單擊操作—新建請求撥號接口—下一步—下一步,選擇使用以太網上的PPP(PPPoE)連接—下一步—下一步,彈出協議及安全措施選項,去掉所有鉤選,單擊下一步,輸入ADSL帳號和密碼,下一步—完成。

      Step3.新建一批處理文件route.bat,并把其快捷方式添加到開始—程序—啟動下,編輯route.bat內容如下:

      cd\

      route delete 0.0.0.0

      route add 192.168.1.0 mask 255.255.240.0 192.168.1.1

      route add 202.203.220.0 mask 255.255.240.0 202.203.230.1

      route add 202.203.221.0 mask 255.255.255.0 202.203.230.1

      //(自行把校園網的IP段添加上)

      route add 202.203.230.0 mask 255.255.255.0 202.203.230.1

      3、客戶機配置

    TCP/IP配置如下:IP:192.168.1.x,子網掩碼:255.255.255.0,網關:192.168.1.1,首選DNS服務器:當地 ADSL域名服務器IP(可向ADSL提供商查詢,如昆明電信的為:202.98.160.68),備用DNS服務器:202.203.220.2。此處 的DNS設置非常關鍵,有的人會誤把DNS設為:192.168.1.1。

      三、總結

       使用此方法實現寬帶共享,可節約購買路由器的費用,幾乎不占用服務器資源,且只要往服務器上加插網卡,就可任意擴張客戶機數量或外部出口。

    posted @ 2007-08-22 20:33 笨蛋啊帆 閱讀(272) | 評論 (0)編輯 收藏

    WINDOWS系統下設置路由

    在WINDOWS下手動設置路由主要在DOS系統中命令符下(在運行輸入欄中鍵入COMMAND或者CMD即可)進行。


    鍵入命令ROUTE回車會出現大約幾十行英文說明,主要解說在WINDOWS系統中如何添加、刪除、修改路由。現簡單介紹如下:


    ROUTE命令格式如下:


    ROUTE [-f] [-p] [command [destination] [MASK netmask] [gateway] [METRIC metric] [IF interface]


    其中 –f 參數用于清除路由表,-p參數用于永久保留某條路由(即在系統重啟時不會丟失路由,但在WINDOWS95下無效)。


    Command主要有PRINT(打印)、ADD(添加)、DELETE(刪除)、CHANGE(修改)共4個命令。


    Destination代表所要達到的目標IP地址。


    MASK是子網掩碼的關鍵字。Netmask代表具體的子網掩碼,如果不加說明,默認是255.255.255.255(單機IP地址),因此鍵入掩碼時候要特別小心,要確認添加的是某個IP地址還是IP網段。如果代表全部出口子網掩碼可用0.0.0.0。


    Gateway代表出口網關。


    其他interface和metric分別代表特殊路由的接口數目和到達目標地址的代價,一般可不予理會。


    我們根據單網卡和多網卡(以雙網卡為例)兩種情況敘述在WINDOWS下如何具體設置路由。


    1、單網卡:


    在WINDOWS系統下有4條最基本路由,參照下圖(鍵入route print命令)具體是:





    上述路由是WINDOWS自帶路由,永不消失,如果上述路由不完整,則說明TCP/IP的安裝和運行存在某些最基本問題、或本機網絡配置或者安裝存在問題。




    上述表格中,127.0.0.1用于測試回送(loopback)地址,不能作為有效的網絡地址。PC1的IP地址為 192.168.97.1,路由器1(用于上互聯網)的局域口IP地址為192.168.97.10,路由器2(用于上辦公網)的局域口IP地址為 192.168.97.11。


    如果PC1同時想訪問互聯網和辦公網,通常情況是在WINDOWS網絡屬性反復修改默認網關,每次還只能訪問1個網段,既不方便也非常麻煩。為解決這個問題可在DOS命令符下鍵入如下命令:


    route add 0.0.0.0 maks 0.0.0.0 192.168.97.10(用于上互聯網)、


    route add 10.42.29.0 mask 255.255.255.0 192.168.97.11(用于上辦公網)。


    這樣將互聯網作為默認路由,辦公網用作特殊路由添加,當然,如果還有其他系統,可采用同樣路由添加。


    為了確保路由正確、避免引起路由混亂,最好先刪除路由,再添加路由。比如上面的命令可改為:


    route delelte 0.0.0.0


    route add 0.0.0.0 maks 0.0.0.0 192.168.97.10


    route add 10.42.29.0 mask 255.255.255.0 192.168.97.11。


    為了確保路由設置長久生效,可將上述命令加入AUTOEXEC.BAT文件中,即操作系統一啟動就自動設置路由。當然也可在第一次添加路由時加入-P參數。


    具體如下:


    route –p add 0.0.0.0 maks 0.0.0.0 192.168.97.10


    route –p add 10.42.29.0 mask 255.255.255.0 192.168.97.11。


    這時用route print查看路由,就可以看到有兩條永久路由添加到路由表中了。


    2、多網卡(以雙網卡為例)


    如果在同一PC機上帶有兩個網卡,聯上兩個不同網段的系統,具體參見下面網絡連接示意圖:




    一般情況下,在PC機上加上雙網卡和雙網關,邊可以輕松聯上兩個子系統。但由于WINDOWS自身系統原因,經常容易 出現網關浮動或不穩定的情況,比如PING辦公自動化地址無法PING通,卻返回從192.168.97.10(路由器1)反饋的信息,此時查看網絡路 由,路由表正常,此時需要刷新路由。


    事實上,可以采取同單網卡類似的辦法,可以去掉網絡屬性中網關,進行人工設置路由。人工設置路由更加精確和自由,比如可以人工控制究竟訪問某個網站還是某個網段或者全部網段。


    參照上圖配置,可在DOS提示符下鍵入如下命令:


    route delete 0.0.0.0


    route add 0.0.0.0 mask 0.0.0.0 192.168.97.10(網卡1尋址路由,上互聯網,默認路由)


    route add 10.42.0.0 mask 255.255.0.0 10.42.29.10(網卡2尋址路由,上辦公網)。


    當然可以添加- P參數或者將路由添加信息加入自動批處理文件使路由信息永久生效

    posted @ 2007-08-22 20:32 笨蛋啊帆 閱讀(399) | 評論 (0)編輯 收藏

    matlab工具箱函數匯總
    別問我是誰 發表于 2006-1-18 14:03:00


    附錄Ⅰ  工具箱函數匯總


    Ⅰ.1  統計工具箱函數
    表Ⅰ-1  概率密度函數
     
    函數名 對應分布的概率密度函數   
    betapdf 貝塔分布的概率密度函數   
    binopdf 二項分布的概率密度函數   
    chi2pdf 卡方分布的概率密度函數   
    exppdf 指數分布的概率密度函數   
    fpdf f分布的概率密度函數   
    gampdf 伽瑪分布的概率密度函數   
    geopdf 幾何分布的概率密度函數   
    hygepdf 超幾何分布的概率密度函數   
    normpdf 正態(高斯)分布的概率密度函數   
    lognpdf 對數正態分布的概率密度函數   
    nbinpdf 負二項分布的概率密度函數   
    ncfpdf 非中心f分布的概率密度函數   
    nctpdf 非中心t分布的概率密度函數   
    ncx2pdf 非中心卡方分布的概率密度函數   
    poisspdf 泊松分布的概率密度函數   
    raylpdf 雷利分布的概率密度函數   
    tpdf 學生氏t分布的概率密度函數   
    unidpdf 離散均勻分布的概率密度函數   
    unifpdf 連續均勻分布的概率密度函數   
    weibpdf 威布爾分布的概率密度函數 


    表Ⅰ-2  累加分布函數
     
    函數名 對應分布的累加函數   
    betacdf 貝塔分布的累加函數   
    binocdf 二項分布的累加函數   
    chi2cdf 卡方分布的累加函數   
    expcdf 指數分布的累加函數   
    fcdf f分布的累加函數   
    gamcdf 伽瑪分布的累加函數   
    geocdf 幾何分布的累加函數   
    hygecdf 超幾何分布的累加函數   
    logncdf 對數正態分布的累加函數   
    nbincdf 負二項分布的累加函數   
    ncfcdf 非中心f分布的累加函數   
    nctcdf 非中心t分布的累加函數   
    ncx2cdf 非中心卡方分布的累加函數   
    normcdf 正態(高斯)分布的累加函數   
    poisscdf 泊松分布的累加函數   
    raylcdf 雷利分布的累加函數   
    tcdf 學生氏t分布的累加函數   
    unidcdf 離散均勻分布的累加函數   
    unifcdf 連續均勻分布的累加函數   
    weibcdf 威布爾分布的累加函數 


    表Ⅰ-3  累加分布函數的逆函數
     
    函數名 對應分布的累加分布函數逆函數   
    betainv 貝塔分布的累加分布函數逆函數   
    binoinv 二項分布的累加分布函數逆函數   
    chi2inv 卡方分布的累加分布函數逆函數   
    expinv 指數分布的累加分布函數逆函數   
    finv f分布的累加分布函數逆函數   
    gaminv 伽瑪分布的累加分布函數逆函數   
    geoinv 幾何分布的累加分布函數逆函數   
    hygeinv 超幾何分布的累加分布函數逆函數   
    logninv 對數正態分布的累加分布函數逆函數   
    nbininv 負二項分布的累加分布函數逆函數   
    ncfinv 非中心f分布的累加分布函數逆函數   
    nctinv 非中心t分布的累加分布函數逆函數   
    ncx2inv 非中心卡方分布的累加分布函數逆函數   
    icdf    
    norminv 正態(高斯)分布的累加分布函數逆函數   
    poissinv 泊松分布的累加分布函數逆函數   
    raylinv 雷利分布的累加分布函數逆函數   
    tinv 學生氏t分布的累加分布函數逆函數   
    unidinv 離散均勻分布的累加分布函數逆函數   
    unifinv 連續均勻分布的累加分布函數逆函數   
    weibinv 威布爾分布的累加分布函數逆函數 


    表Ⅰ-4  隨機數生成器函數
     
    函  數 對應分布的隨機數生成器   
    betarnd 貝塔分布的隨機數生成器   
    binornd 二項分布的隨機數生成器   
    chi2rnd 卡方分布的隨機數生成器   
    exprnd 指數分布的隨機數生成器   
    frnd f分布的隨機數生成器   
    gamrnd 伽瑪分布的隨機數生成器   
    geornd 幾何分布的隨機數生成器   
    hygernd 超幾何分布的隨機數生成器   
    lognrnd 對數正態分布的隨機數生成器   
    nbinrnd 負二項分布的隨機數生成器   
    ncfrnd 非中心f分布的隨機數生成器   
    nctrnd 非中心t分布的隨機數生成器   
    ncx2rnd 非中心卡方分布的隨機數生成器   
    normrnd 正態(高斯)分布的隨機數生成器   
    poissrnd 泊松分布的隨機數生成器   
    raylrnd 瑞利分布的隨機數生成器   
    trnd 學生氏t分布的隨機數生成器   
    unidrnd 離散均勻分布的隨機數生成器   
    unifrnd 連續均勻分布的隨機數生成器   
    weibrnd 威布爾分布的隨機數生成器 


    表Ⅰ-5  分布函數的統計量函數
     
    函數名 對應分布的統計量   
    betastat 貝塔分布函數的統計量   
    binostat 二項分布函數的統計量   
    chi2stat 卡方分布函數的統計量   
    expstat 指數分布函數的統計量   
    fstat f分布函數的統計量   
    gamstat 伽瑪分布函數的統計量   
    geostat 幾何分布函數的統計量   
    hygestat 超幾何分布函數的統計量   
    lognstat 對數正態分布函數的統計量   
    nbinstat 負二項分布函數的統計量   
    ncfstat 非中心f分布函數的統計量   
    nctstat 非中心t分布函數的統計量   
    ncx2stat 非中心卡方分布函數的統計量   
    normstat 正態(高斯)分布函數的統計量   
    poisstat 泊松分布函數的統計量 

    續表
     
    函數名 對應分布的統計量   
    raylstat 瑞利分布函數的統計量   
    tstat 學生氏t分布函數的統計量   
    unidstat 離散均勻分布函數的統計量   
    unifstat 連續均勻分布函數的統計量   
    weibstat 威布爾分布函數的統計量 


    表Ⅰ-6  參數估計函數
     
    函 數 名 對應分布的參數估計   
    betafit 貝塔分布的參數估計   
    betalike 貝塔對數似然函數的參數估計   
    binofit 二項分布的參數估計   
    expfit 指數分布的參數估計   
    gamfit 伽瑪分布的參數估計   
    gamlike 伽瑪似然函數的參數估計   
    mle 極大似然估計的參數估計   
    normlike 正態對數似然函數的參數估計   
    normfit 正態分布的參數估計   
    poissfit 泊松分布的參數估計   
    unifit 均勻分布的參數估計   
    weibfit 威布爾分布的參數估計   
    weiblike 威布爾對數似然函數的參數估計 


    表Ⅰ-7  統計量描述函數
     
    函  數 描           述   
    bootstrap 任何函數的自助統計量   
    corrcoef 相關系數   
    cov 協方差   
    crosstab 列聯表   
    geomean 幾何均值   
    grpstats 分組統計量   
    harmmean 調和均值   
    iqr 內四分極值   
    kurtosis 峰度   
    mad 中值絕對差   
    mean 均值   
    median 中值   
    moment 樣本模量   
    nanmax 包含缺失值的樣本的最大值 
    續表
     
    函  數 描           述   
    Nanmean 包含缺失值的樣本的均值   
    nanmedian 包含缺失值的樣本的中值   
    nanmin 包含缺失值的樣本的最小值   
    nanstd 包含缺失值的樣本的標準差   
    nansum 包含缺失值的樣本的和   
    prctile 百分位數   
    range 極值   
    skewness 偏度   
    std 標準差   
    tabulate 頻數表   
    trimmean 截尾均值   
    var 方差 


    表Ⅰ-8  統計圖形函數
     
    函  數 描           述   
    boxplot 箱形圖   
    cdfplot 指數累加分布函數圖   
    errorbar 誤差條圖   
    fsurfht 函數的交互等值線圖   
    gline 畫線   
    gname 交互標注圖中的點   
    gplotmatrix 散點圖矩陣   
    gscatter 由第三個變量分組的兩個變量的散點圖   
    lsline 在散點圖中添加最小二乘擬合線   
    normplot 正態概率圖   
    pareto 帕累托圖   
    qqplot Q-Q圖   
    rcoplot 殘差個案次序圖   
    refcurve 參考多項式曲線   
    refline 參考線   
    surfht 數據網格的交互等值線圖   
    weibplot 威布爾圖 


    表Ⅰ-9  統計過程控制函數
     
    函  數 描           述   
    capable 性能指標   
    capaplot 性能圖   
    ewmaplot 指數加權移動平均圖 
    續表
     
    函  數 描           述   
    histfit 添加正態曲線的直方圖   
    normspec 在指定的區間上繪正態密度   
    schart S圖   
    xbarplot x條圖 


    表Ⅰ-10  聚類分析函數
     
    函  數 描           述   
    cluster 根據linkage函數的輸出創建聚類   
    clusterdata 根據給定數據創建聚類   
    cophenet Cophenet相關系數   
    dendrogram 創建冰柱圖   
    inconsistent 聚類樹的不連續值   
    linkage 系統聚類信息   
    pdist 觀測量之間的配對距離   
    squareform 距離平方矩陣   
    zscore Z分數 


    表Ⅰ-11  線性模型函數
     
    函  數 描           述   
    anova1 單因子方差分析   
    anova2 雙因子方差分析   
    anovan 多因子方差分析   
    aoctool 協方差分析交互工具   
    dummyvar 擬變量編碼   
    friedman Friedman檢驗   
    glmfit 一般線性模型擬合   
    kruskalwallis Kruskalwallis檢驗   
    leverage 中心化杠桿值   
    lscov 已知協方差矩陣的最小二乘估計   
    manova1 單因素多元方差分析   
    manovacluster 多元聚類并用冰柱圖表示   
    multcompare 多元比較   
     多項式評價及誤差區間估計   
    polyfit 最小二乘多項式擬合   
    polyval 多項式函數的預測值   
    polyconf 殘差個案次序圖   
    regress 多元線性回歸   
    regstats 回歸統計量診斷 
    續表
     
    函  數 描           述   
    Ridge 嶺回歸   
    rstool 多維響應面可視化   
    robustfit 穩健回歸模型擬合   
    stepwise 逐步回歸   
    x2fx 用于設計矩陣的因子設置矩陣 


    表Ⅰ-12  非線性回歸函數
     
    函  數 描           述   
    nlinfit 非線性最小二乘數據擬合(牛頓法)   
    nlintool 非線性模型擬合的交互式圖形工具   
    nlparci 參數的置信區間   
    nlpredci 預測值的置信區間   
    nnls 非負最小二乘 


    表Ⅰ-13  試驗設計函數
     
    函  數 描           述   
    cordexch D-優化設計(列交換算法)   
    daugment 遞增D-優化設計   
    dcovary 固定協方差的D-優化設計   
    ff2n 二水平完全析因設計   
    fracfact 二水平部分析因設計   
    fullfact 混合水平的完全析因設計   
    hadamard Hadamard矩陣(正交數組)   
    rowexch D-優化設計(行交換算法) 

     

    表Ⅰ-14  主成分分析函數
     
    函  數 描           述   
    barttest Barttest檢驗   
    pcacov 源于協方差矩陣的主成分   
    pcares 源于主成分的方差   
    princomp 根據原始數據進行主成分分析 

    表Ⅰ-15  多元統計函數
     
    函  數 描           述   
    classify 聚類分析   
    mahal 馬氏距離   
    manova1 單因素多元方差分析   
    manovacluster 多元聚類分析 

    表Ⅰ-16  假設檢驗函數
     
    函  數 描           述   
    ranksum 秩和檢驗   
    signrank 符號秩檢驗   
    signtest 符號檢驗   
    ttest 單樣本t檢驗   
    ttest2 雙樣本t檢驗   
    ztest z檢驗 

    表Ⅰ-17  分布檢驗函數
     
    函  數 描           述   
    jbtest 正態性的Jarque-Bera檢驗   
    kstest 單樣本Kolmogorov-Smirnov檢驗   
    kstest2 雙樣本Kolmogorov-Smirnov檢驗   
    lillietest 正態性的Lilliefors檢驗 

    表Ⅰ-18  非參數函數
     
    函  數 描           述   
    friedman Friedman檢驗   
    kruskalwallis Kruskalwallis檢驗   
    ranksum 秩和檢驗   
    signrank 符號秩檢驗   
    signtest 符號檢驗 

    表Ⅰ-19  文件輸入輸出函數
     
    函  數 描           述   
    caseread 讀取個案名   
    casewrite 寫個案名到文件   
    tblread 以表格形式讀數據   
    tblwrite 以表格形式寫數據到文件   
    tdfread 從表格間隔形式的文件中讀取文本或數值數據 

    表Ⅰ-20  演示函數
     
    函  數 描           述   
    aoctool 協方差分析的交互式圖形工具   
    disttool 探察概率分布函數的GUI工具   
    glmdemo 一般線性模型演示   
    randtool 隨機數生成工具   
    polytool 多項式擬合工具   
    rsmdemo 響應擬合工具   
    robustdemo 穩健回歸擬合工具 


    Ⅰ.2  優化工具箱函數
    表Ⅰ-21  最小化函數表
     
    函    數 描       述   
    fgoalattain 多目標達到問題   
    fminbnd 有邊界的標量非線性最小化   
    fmincon 有約束的非線性最小化   
    fminimax 最大最小化   
    fminsearch, fminunc 無約束非線性最小化   
    fseminf 半無限問題   
    linprog 線性課題   
    quadprog 二次課題 

    表Ⅰ-22  方程求解函數表
     
    函   數 描       述   
    \ 線性方程求解   
    fsolve 非線性方程求解   
    fzero 標量非線性方程求解 

    表Ⅰ-23  最小二乘函數表
     
    函   數 描       述   
    \ 線性最小二乘   
    lsqlin 有約束線性最小二乘   
    lsqcurvefit 非線性曲線擬合   
    lsqnonlin 非線性最小二乘   
    lsqnonneg 非負線性最小二乘 

    表Ⅰ-24  實用函數表
     
    函   數 描       述   
    optimset 設置參數   
    optimget 獲取參數 

    表Ⅰ-25  大型方法的演示函數表
     
    函   數 描        述   
    circustent 馬戲團帳篷問題—二次課題   
    molecule 用無約束非線性最小化進行分子組成求解   
    optdeblur 用有邊界線性最小二乘法進行圖形處理 

    表Ⅰ-26  中型方法的演示函數表
     
    函   數 描         述   
    bandemo 香蕉函數的最小化   
    dfildemo 過濾器設計的有限精度   
    goaldemo 目標達到舉例   
    optdemo 演示過程菜單   
    tutdemo 教程演示 

    Ⅰ.3  樣條工具箱函數
    表Ⅰ-27  三次樣條函數
     
    函  數 描           述   
    csapi 插值生成三次樣條函數   
    csape 生成給定約束條件下的三次樣條函數   
    csaps 平滑生成三次樣條函數   
    cscvn 生成一條內插參數的三次樣條曲線   
    getcurve 動態生成三次樣條曲線 

    表Ⅰ-28  分段多項式樣條函數
     
    函  數 描           述   
    pplst 顯示關于生成分段多項式樣條曲線的M文件   
    ppmak 生成分段多項式樣條函數   
    ppual 計算在給定點處的分段多項式樣條函數值 

    表Ⅰ-29  B樣條函數
     
    函  數 描           述   
    splst 顯示生成B樣條函數的M文件   
    spmak 生成B樣條函數   
    spcrv 生成均勻劃分的B樣條函數   
    spapi 插值生成B樣條函數   
    spap2 用最小二乘法擬合生成B樣條函數   
    spaps 對生成的B樣條曲線進行光滑處理   
    spcol 生成B樣條函數的配置矩陣 

    表Ⅰ-30  有理樣條函數
     
    函  數 描           述   
    rpmak 生成有理樣條函數   
    rsmak 生成有理樣條函數 

    表Ⅰ-31  操作樣條函數
     
    函  數 描           述   
    fnval 計算在給定點處的樣條函數值   
    fmbrk 返回樣條函數的某一部分(如斷點或系數等)   
    fncmb 對樣條函數進行算術運算   
    fn2fm 把一種形式的樣條函數轉化成另一種形式的樣條函數   
    fnder 求樣條函數的微分(即求導數)   
    fndir 求樣條函數的方向導數   
    fnint 求樣條函數的積分   
    fnjmp 在間斷點處求函數值   
    fnplt 畫樣條曲線圖   
    fnrfn 在樣條曲線中插入斷點。   
    fntlr 生成tarylor系數或taylor多項式 

    表Ⅰ-32 樣條曲線端點和節點處理函數
     
    函  數 描             述   
    augknt 在已知節點數組中添加一個或多個節點   
    aveknt 求出節點數組元素的平均值   
    brk2knt 增加斷點數組中元素的重次   
    knt2brk 從節點數組中求得節點及其重次   
    knt2mlt 從節點數組中求得節點及其重次   
    sorted 求出節點數組points的元素在節點數組meshpoints中屬于第幾個分量   
    aptknt 求出用于生成樣條曲線的節點數組 
    表Ⅰ-33  樣條曲線端點和節點處理函數
     
    函  數 描             述   
    newknt 對分段多項式樣條函數進行重分布   
    optknt 求出用于內插的最優節點數組   
    chbpnt 求出用于生成樣條曲線的合適節點數組 

    表Ⅰ-34  解線性方程組的函數
     
    函  數 描             述   
    slvblk 解對角占優的線性方程組   
    bkbrk 描述分塊對角矩陣的詳細情況 

    表Ⅰ-35  樣條GUI函數
     
    函  數 描             述   
    bspligui 在節點處生成B樣條曲線   
    splinetool 用一系列方法生成各種樣條曲線 

    Ⅰ.4  偏微分方程數值解工具箱函數
    表Ⅰ-36  偏微分方程求解算法函數
     
    函  數 描             述   
    adaptmesh 生成自適應網格并求解PDE問題   
    assema 組合面積的整體貢獻   
    assemb 組合邊界條件的貢獻   
    assempde 組合剛度矩陣和PDE問題的右端項   
    hyperbolic 求解雙曲線PDE問題   
    parabolic 求解拋物線型PDE問題   
    pdeeig 求解特征值PDE問題   
    pdenonlin 求解非線性PDE問題   
    poisolv 在矩形網格上對泊松方程進行快速求解 

     

    表Ⅰ-37  用戶界面算法函數
     
    函  數 描             述   
    pdecirc 繪圓   
    pdeellip 繪橢圓   
    pdemdlcv 將PDE工具箱1.0模型的M文件轉換為PDE工具箱1.0.2版本的格式   
    pdepoly 繪多邊形   
    pderect 繪矩形   
    pdetool PDE工具箱圖形用戶集成界面(GUI) 


    表Ⅰ-38  幾何算法函數
     
    函  數 描             述   
    csgchk 核對幾何描述矩陣的有效性   
    csgdel 刪除最小子域之間的界線   
    decsg 將建設性實體幾何模型分解為最小子域   
    initmesh 創建初始三角形網格   
    jigglemesh 微調三角形網格的內部點   
    pdearcl 在參數表示和圓弧長度之間進行內插   
    poimesh 在矩形幾何圖形上生成規則網格   
    refinemesh 加密一個三角形網格   
    wbound 寫邊界條件指定文件   
    wgeom 寫幾何指定函數 


    表Ⅰ-39  繪圖函數
     
    函  數 描             述   
    pdecont 繪等值線圖   
    pdegplot 繪制PDE幾何圖   
    pdemesh 繪PDE三角形網格   
    pdeplot 一般PDE工具箱繪圖函數   
    pdesurf 繪三維表面圖 


    表Ⅰ-40  實用函數
     
    函  數 描             述   
    Dst idst 離散化sin轉換   
    pdeadgsc 使用相對容限臨界值選擇三角形   
    pdeadworst 選擇相對于最壞值的三角形   
    pdecgrad PDE解的變動   
    pdeent 與給定三角形集合相鄰的三角形的指數   
    pdegrad PDE解的梯度   
    pdeintrp 從節點數據至三角形中點數據進行內插   
    pdejmps 對于自適應網格進行誤差估計   
    pdeprtni 從三角形中點數據向節點數據進行內插   
    pdesde 子域集合中點的指數   
    pdesdp 子域集合邊緣的指數   
    pdesdt 子域集合三角形的指數   
    pdesmech 計算結構力學張量函數   
    pdetrg 三角形幾何數據   
    pdetriq 三角型質量度量 
    續表
     
    函  數 描             述   
    Poiasma 用于泊松方程快速求解器的邊界點矩陣   
    poicalc 矩形網格上泊松方程的快速求解器   
    poiindex 經過規范排序的矩形網格的點的指數   
    sptarn 求解廣義稀疏特征值問題   
    tri2grid 從PDE三角形網格到矩形網格進行內插 


    表Ⅰ-41  自定義算法函數
     
    函  數 描             述   
    pdebound 邊界條件M文件   
    pdegeom 幾何模型M文件 


    表Ⅰ-42  演示函數
     
    函  數 描             述   
    pdedemo1 單位圓盤上泊松方程的精確解   
    pdedemo2 求解Helmholtz方程,研究反射波   
    pdedemo3 求解最小表面問題   
    pdedemo4 用子域分解求解PDE問題   
    pdedemo5 求拋物線型問題(熱傳導方程)   
    pdedemo6 求雙曲線型PDE問題(波動方程)   
    pdedemo7 點源的自適應求解   
    pdedemo8 在矩形網格上求解泊松方程 

    posted @ 2007-07-28 14:50 笨蛋啊帆 閱讀(3787) | 評論 (1)編輯 收藏

    GNU Emacs 是 Emacs, 的版本之一,是由 Emacs, 的原始版本(PDP-10)的作者Richard Stallman所編寫的。
    GNU Emacs的主要文檔在GNU Emacs手冊中,你可以用Info(Emacs的一個子系統)以行方式去讀。請在那里查看完全的和最新的文檔。本幫助頁的更新依賴于志愿人員; Emacs 的維護人員的首要目標是使使用能本幫助頁面盡可能少地占用其它更有用的項目的時間。
    GNU Emacs 包含了其它 Emacs 編輯器所擁有的全部功能。由于它的編輯命令是用Lisp寫的,因此很容易擴展。
    Emacs 有一個擴展的交互幫助工具,但該工具假設你能熟練地使用 Emacs 窗口和緩沖區。CTRL-h (退格或CTRL-h) 可以進入該幫助工具。 Help Tutorial(幫助指南,CTRL-h t) 調用一個交互式的指南以幫助初學者在很短的時間內了解 Emacs 的基本知識。Help Apropos (CTRL-h a) 幫助你找到一個命令并給出其功能說明,Help Character (字符幫助,CTRL-h c) 描述一個給定的字符的作用,Help Function (函數幫助,CTRL-h f) 描述一個指定名稱的Lisp 函數。
    Emacs 的Undo(恢復功能)可以取消最近幾步對緩沖區所做的修改,因此很容易從編輯錯誤中恢復
    GNU Emacs 的許多特殊的包可以處理郵件讀取(RMail)和郵件發送
    (Mail),大綱編輯 (Outline),編譯(Compile), 在 Emacs 窗口中運行shell (Shell), 運行Lisp 的read-eval-print 循環(Lisp-Interaction-Mode), 以及自動修正(Doctor)。
    還有一個擴充的參考手冊,但是其它版本的 Emacs 用戶即使沒有它,要適應GNU Emacs也不會有什么困難。而Emacs的新用戶通過學習指南和使用自身文檔特性,很快就能夠使用GNU Emacs的基本功能。
    Emacs選項
    以下的選項是很常用的:
    file
    編輯 文件。
    +number
    轉到由 number 指定的行(在"+"和數字當中不要加入空格)。
    -q
    不載入初始文件。
    -u user
    載入 user 的初始文件。
    -t file
    使用指定的 file 文件作為終端來代替stdin/stdout。該項必須作為命令行的第一個參數來說明。
    以下的選項是面向lisp的 (這些選項按照給定的順序處理):
    -f function
    執行lisp函數 function 。
    -l file
    裝入文件 file 中的Lisp代碼。
    Emacs 作為批處理編輯器來運行時,以下選項是有用的:
    -batch
    批處理模式編輯。 編輯器將把消息送至stderr(注1)。這個選項必須位于參數列表的第一位。必須用-l和-f選項來指明要執行的文件和要調用的函數。
    -kill
    在批處理模式下退出Emacs Emacs 。
    在X Window下使用Emacs
    Emacs 已經被設計得能在X Window系統下很好地工作。如果在X Window下運行 Emacs ,將創建其自己的X Window來顯示。這是因為你也許會將Emacs編輯器作為后臺進程來啟動,并能夠繼續使用原來的窗口。
    Emacs 在啟動時能帶以下X命令開關:
    -name name
    指定初始的 Emacs 窗口的名字。這使得能象窗口標題一樣查詢X資源。
    -title name
    指定起始X窗口的標題。
    -r
    反白顯示 Emacs 窗口。
    -i
    當 Emacs 窗口圖標化時,使用"廚房水槽"位圖圖標。
    -font font, -fn font
    將 Emacs 窗口字體設置為指定的字體 font 。在 /usr/lib/X11/fonts 路徑下可以找到不同的 X 字體。注意: Emacs 只接受固定寬度的字體。在X11第四版字體命名協議下,若字體名的第11個域的值是"m"或"c",則該字體是固定寬度的字體。此外,若字體名擁有 寬x高 的形式,它一般也是 固定 寬度字體。關于更多信息,參見xlsfonts(1)。 在指定字體時,別忘了在開關和字體名之間需要一個空格。
    -b pixels
    設置 Emacs 窗口邊框寬度為 pixels 指定的點數。缺省值是窗口每邊寬為1點。
    -ib pixels
    設置Emacs窗口內部邊框寬度為 pixels 指定的點數。缺省值是窗口每邊填充1點。
    -geometry geometry
    按照給定的值設置 Emacs Emacs窗口的寬,高及位置。幾何參數的指定應符合標準X格式,關于更多信息,參見 X(1) 。寬和高用字符來指定,缺省值是80 x 24。
    -fg color
    在彩色顯示下,設置文本的顏色。有效的顏色名列表見 /usr/lib/X11/rgb.txt 。
    -bg color
    在彩色顯示下,設置窗口背景的顏色。
    -bd color
    在彩色顯示下,設置窗口邊框的顏色。
    -cr color
    在彩色顯示下,設置窗口文本光標的顏色。
    -ms color
    在彩色顯示下,設置窗口鼠標光標的顏色。
    -d displayname, -display displayname
    在由 displayname. 指定的顯示器上創建 Emacs 窗口。必須是在命令行中指定的第一個選項。
    -nw
    告訴 Emacs 不使用其到 X 的特定界面。如果在從 xterm(1) 窗口調用 Emacs 時,使用此開關,則在該窗口中打開顯示器。這必須是命令行中指定的第一個選項。
    您可以在 .Xresources 文件(請參閱 xrdb(1) )中為 Emacs 窗口設置 X 缺省值。請使用下列格式:
    emacs.keyword:value
    其中 value(值) 指定 keyword(關鍵字) 的缺省值。 Emacs 允許您為下列關鍵字設置缺省值:
    font (Font 類)
    設置窗口的文本 痔濉?
    reverseVideo (ReverseVideo 類)
    如果把 reverseVideo 的值設置為 ,則反白顯示窗口。
    bitmapIcon ( BitmapIcon 類)
    如果 bitmapIcon 的值設置為 ,則窗口將圖符化為凹入狀。
    borderWidth (BorderWidth 類)
    設置窗口的邊框寬度(以 pixel 為單位)。
    internalBorder (BorderWidth 類)
    設置窗口的內部邊框寬度(以 pixel 為單位)。
    foreground (Foreground 類)
    對于彩色顯示器,設置窗口的文本顏色。
    background (Background 類)
    對于彩色顯示器,設置窗口的背景顏色。
    borderColor (BorderColor 類)
    對于彩色顯示器,設置窗口的邊框顏色。
    cursorColor (Foreground ?
    對于彩色顯示器,設置窗口文本光標的顏色。
    pointerColor (Foreground 類)
    對于彩色顯示器,設置窗口鼠標光標的顏色。
    geometry (Geometry 類)
    設置 Emacs 窗口的幾何大小(如上所述)。
    title (Title 類)
    設置 Emacs 窗口的標題。
    iconName (Title 類)
    設置 Emacs 窗口圖符的圖符名稱。
    如果你在使用黑白顯示器時試圖設置顏色值,則窗口的特征將缺省為:前景色將設置為黑色,背景色將設置為白色,邊框顏色將設置為灰色,而文本和鼠標光標將設置為黑色。
    使用鼠標
    下面列出在X11下 Emacs 窗口的鼠標按鈕的捆綁功能。
    左鍵 定點。
    中鍵 粘貼文本
    右鍵 把文本剪貼到X的剪貼緩沖區
    SHIFT-中鍵 把文本剪貼到X的剪貼緩沖區。
    SHIFT-右鍵 粘貼文本
    CTRL-中鍵 把文本剪貼到X的剪貼緩沖區并把它刪除
    CTRL-右鍵 選擇窗口并分割它成兩個窗口,和輸入CTRL-X 2一樣
    CTRL-SHIFT-左鍵 對X緩沖區菜單操作,掛起按鈕和鍵盤,等待菜單出現,
    選擇緩沖區和釋放它。把鼠標移離菜單和釋放操作。
    CTRL-SHIFT-中鍵 彈出X菜單幫助索引Emacs幫助。
    CTRL-SHIFT-右鍵 用鼠標選擇窗口并刪除所有其他窗口,和輸入CTRL-X 1一樣。
    手冊
    你可以從開發GNU軟件的自由軟件基金會獲得GNU Emacs手冊的拷貝。
    要獲得信息仔細查看文件ORDERS。
    你本地的Emacs維護也有有效的拷貝。對于所有從FSF獲得的軟件和印刷品,每個人都有權制造和發布Emacs手冊的副本。
    手冊的TeX源文檔也被包含在Emacs源代碼發布中。
    文件
    /usr/local/info - 通過Info文檔瀏覽器(Emacs的一個子系統)查閱的文件。
    現在還沒有太多的Unix在以此為文檔,但Emacs參考手冊的完整文本以便利的樹結?p> 形式包含于其中。 /usr/local/share/emacs/$VERSION/src - C源文件和目標文件。 /usr/local/share/emacs/$VERSION/lisp - 定義了大部分編輯命令的Lisp源文件和編譯后的文件。 有些已經裝入了;其它的則在使用時自動從本目錄中裝入。 /usr/local/share/emacs/$VERSION/etc - 與GNU Emacs一同使用的各種程序,還有一些文件的信息。 /usr/local/share/emacs/$VERSION/etc/DOC.* - 包含了Lisp原語和GNU Emacs 的預裝入Lisp函數的文檔字符串。 它們被儲存在這里以減小Emacs的體積。 /usr/local/share/emacs/$VERSION/etc/OTHER.EMACSES 討論GNU Emacs與其它版本的Emacs之間的不同。
    /usr/local/share/emacs/$VERSION/etc/SERVICE 列舉為幫助GNU Emacs的用戶提供各種服務的人們,包括教學、疑難解答、移植和定制。
    這些文件還含有對那些希望用Emacs Lisp擴展語言編寫程序的人有用的信息,該語言含沒有完整的文檔。 /usr/local/com/emacs/lock - 為使用Emacs修改的所有文件保存鎖文件,以防止由兩個用戶在同時對一個文件進行修改。 /usr/lib/X11/rgb.txt - 合法的X顏色名的列表。
    臭蟲
    此處有一個郵件列表,因特網上的bug-gnu-emacs@prep.ai.mit.edu,用于報告Emacs的臭蟲和修補。但在報告作為一個臭蟲的 某件事之前,請盡量肯定它真是一個臭蟲,而不是一個誤會或一個故意的特性。我們要求你閱讀在此參考手冊末尾附近的"Reporting
    Emacs Bugs"(報告 Emacs 臭蟲)章節(或Info系統),用于提示如何和什么時候報告臭蟲。 還有,在每個你發送的臭蟲報告中包含你所運行的Emacs的版本號。 不要期望對一個錯誤報告給出個人的答案。報告錯誤的目的是為了大家在下一個版本中可以修復它。 對個人來說,我們可以去參考服務文件(見上)的一個列表。 除非是向這個郵件列表報告臭蟲,請不要發任何東西到這里來。你可以將申請加入郵件列表的請求寄到 info-gnu-emacs-request@prep.ai.mit.edu(或者相應的UUDP地址)中去。關于Emacs(UNIX編輯程序宏指 令)郵件列表的詳情,請閱讀文件
    /usr/local/emacs/etc/MAILINGLISTS。 如果錯誤是孤立的,往往是可以修復的。因此如果你對報道那些錯誤感興趣的話,你可以很容易將它復制出來。
    我所知道的一些錯誤是:在一些UNIX版本中,SHELL不能很好的和應用程序一起工作。
    非限制的
    Emacs 是免費的; 任何人都可以按照與每個 Emacs 的副本在一起的 Emacs General Public License中陳述的條款把 Emacs 的副本分發?p> 任何人,該許可證的也出現在參考手冊中。
    Emacs 的副本有時與UNIX系統在一起打包進行分發,但是它永遠不會包含在任何哺欽廡┎僮饗低車男砜芍さ姆段е凇O笳庋シ戳頌蹩畹陌鍤潛輝市淼模率瞪 希珿eneral Public License的主要目的是讓那些分發 Emacs. 的人可以免受更多的干擾。
    Richard Stallman鼓勵你改善和擴展Emacs,鼓勵你把你對GNU庫的擴展貢獻給GNU庫。最后GNU(Gnus Not Unix)將成為伯克利UNIX最好的替代品。每個人都可以自由的使用,拷貝,研究和更改GNU的系統。
    參見
    X(1), xlsfonts(1), xterm(1), xrdb(1)
    作者
    Emacs 是由Richard Stallman和自由軟件基金會合作完成的。 Joachim Martillo和Robert Krawitz為系統加入了X界面。

    posted @ 2007-06-29 09:10 笨蛋啊帆 閱讀(562) | 評論 (0)編輯 收藏

    Emacs 的命令通常包括控制鍵(就是上面標有 Ctrl或Ctl的那個)或者是META鍵(上面標有EDIT或ALT)。為了方便起見我們將用下面的縮寫來代替這些鍵的全稱:

    C- 意思是當敲入字符 時同時按住控制鍵,因此,C-f表 示:按住控制鍵并且按 f 。 M- 表示當鍵入 時按住META或ALT或EDIT鍵。如果沒有META 或ALT或EDIT鍵,則用ESC鍵代替。 表示ESC鍵

    注意:退出Emacs,按C-x C-c(兩個字符)。在文本左邊區域的“>>”符號表示讓你試著使用一個命令。比如:
    >> 現在鍵入C-v(觀看下一屏)移動到下一屏。(就象前面說的,按v的同時也按住控制鍵)。從現在開始,每當你讀完一屏的時候都可以用它來翻屏。
    注意在翻屏后會保留上屏的最后一行;這是為你繼續閱讀文本提供某些連貫性。
    你所需要知道的第一件事是如何把光標從一個地方移動到另一個地方。你已經知道了如何向前翻一屏--用 C-v。要向后翻一屏,鍵入M-v。
    >> 試著鍵入 M-v 和 C-v 幾次。
    * 摘要(SUMMARY)
    ---------------------------
    下面幾個命令對整屏觀看時有用:

    C-v 向前翻一整屏。
    M-v 向后翻一整屏。
    C-l 清除屏幕并重新顯示所有的文本,然后把光標移動到屏幕的中央。 (注意是Control-L,而不是 Control-1)。
    >> 尋找光標,并且注意它在文本里的位置。然后鍵入C-l。再尋找光標你會注意到光標現在會出現在同樣的文本附近。
    * 基本光標控制(BASIC CURSOR CONTROL)
    -----------------------------------------------------------------
    整屏整屏的移動是很有用的,可是如何把光標移動到屏幕上文本里的一個指定的地方呢?
    有好幾個方法可以實現。最基本的方法是用命令 C-p,C-b,C-f,和C-n。這些命令每個都使光標在屏幕上往特定的方向移動一行或者一列。下面是一個圖表顯示了這四個命令和它們所移動的方向:


    上一行,C-p
    :
    :
    向前,C-b ...... 當前光標的位置 ...... 向后,C-f
    :
    :
    下一行,C-n
    >> 用C-n或C-p把光標移動到圖表中間。然后鍵入C-l會看到整個圖表出現在屏幕的中央。



    你也許會發現這些字母很容易記住:P 代表上面的(previous),N 代表下一個 (next),B 代表向前(backward),F 代表向后(forward)。這些是基本的光標位置命令,你將經常會用到它們。所以現在學習它們很有好處。


    >> 用幾次 C-n 把光標向下移動到這一行。

    >> 用 C-f 把光標移動到行里,再用C-p把光標上移。觀察當光標在行的中間時 C-p做了些什么。
    每一個文本行都以一個換行符結尾,它用來當作行與行之間的分格。你的文件的最后一行的尾部應該有一個換行符(但Emacs并不要求一定要有一個)。
    >> 試著在行的開頭使用C-b。它將會把光標移到上一行的末尾。這是因為它向后移的時候穿過了換行符。
    C-f 也能象 C-b一樣穿過換行符。
    >> 使用幾次C-b,使您能知道光標在哪。然后用C-f移動到行的末尾。然后再用一次C-f,使光標移動到下一行。

    當你移動超過屏幕的頂部或底部,光標回移動到下一屏的中間,這叫做“滾屏 (scrolling)”。它使得Emacs滾屏移動到文本上指定的部位而不是移出屏幕。

    >> 試著用C-n把光標移過屏幕的底部,看看回發生什么。

    如果覺得一個一個字符的移動太緩慢,可以一個單詞一個單詞的移動。M-f(Meta-f) 向前移一個單詞,M-b向后移一個單詞。
    >> 鍵入幾個M-f和M-b。

    當光標在一個單詞的中間,M-f移動到單詞的末尾。當光標在兩個單詞間的空白部分 M-f移動到后一個單詞的末尾。M-b與M-f一樣,只是移動的方向相反。
    >> 鍵入M-f和M-b幾次,中間穿插一些C-f和C-b以使你能觀察到M-f和M-b在單詞中和單詞間的不同行為。

    注意比較C-f,C-b與M-f,M-b。通常情況下Meta鍵用于有關語言單位(詞,句,段落) 的操作;而控制鍵用于編輯時的基本單位(字符,行等)。
    這是句與行的比較:C-a和C-e移動到一行的開頭和末尾,M-a和M-e移動到一個句子的開頭和末尾。
    >> 鍵入一對C-a,再鍵入一對C-e。 鍵入一對M-a,再鍵入一對M-e。

    你會看到重復鍵入的C-a什么也不做,而重復鍵入的M-a則會移動一個以上的句子。
    光標在文本中的位置也叫“點(point)”。在段落里,光標標示出了點在屏幕上文本里的位置。
    下面是簡單的光標移動命令的總結,包括單詞和句子的移動命令:

    C-f 向前移動一個字符。
    C-b 向后移動一個字符。

    M-f 向前移動一個單詞。
    M-b 向后移動一個單詞。

    C-n 移動到下一行。
    C-p 移動到上一行。

    C-a 移動到行首。
    C-e 移動到行尾。

    M-a 向前移動到句子的開頭。
    M-e 向后移動到句子的末尾。

    >> 試著對每一個命令都實踐幾次,它們都是經常要用到的命令。
    另外兩個重要的光標移動命令是M-<(Meta小于),它移動光標到整個文本的開頭,M-> (Meta大于)它移動光標到整個文本的末尾。
    在多數終端上,“<”在逗號的上面,所以你必須用Shift鍵來輸入它。在這些終端上,你也必須用Shift鍵來輸入M-<;沒有Shift鍵,你可以輸入M-逗號。
    >> 現在就試試M-<,移動到本教程的開頭,然后再用C-v移回這里。 現在就試試M->,移動到本教程的末尾,然后再用M-v移回這里。

    你也可以用方向鍵來移動光標,如果你的終端有方向鍵的話。我們建議學習C-b, C-f,C-n和C-p有三個原因。第一,它們能在所有類型的終端上工作。第二,你獲得了使用Emacs的鍛煉,你將會發現輸入這些CTRL加字符比按方 向鍵要快(因為你不必把你的手從鍵盤上移開)。第三,一旦你養成了使用這些CTRL加字符的命令的習慣,你就能一樣容易的學習其他高級的光標移動命令。
    大多數Emacs命令接收一個數字參數;對大多數命令來說,這表示命令重復的次數。輸入重復命令次數的方法是在輸入命令之前按C-u和數字。如果你有 META(或EDIT或 ALT)鍵,則有另一種方法輸入數字參數:在按住META鍵的時候輸入數字,我們建議學習C-u方法,因為它能在任何終端上工作。
    例如,C-u 8 C-f 向前移動8個字符。
    >> 試著使用帶數字參數的C-n或C-p,只用一個命令就把光標移動到與本行相鄰的 行上。

    絕大多數命令把數字參數當作重復次數,但也有幾個例外。C-v和M-v就是。當給出一個參數,只是上滾或下滾數字指定的行數而不是屏數。比如,C-u 4 C-v滾動4行屏幕。


    >> 現在試試 C-u 8 C-v。
    這將使屏幕滾動8行,如果你想往回滾動的話,鍵入一個帶參數的M-v。
    如果你正在使用X窗口,在Emacs窗口的左手邊有一個叫做滾動條的矩形區域。你能通過用鼠標點擊滾動條來滾動文本。
    >> 試著在滾動條頂部的高亮區域點擊中鍵。這將使文本滾動,滾動的位置取決于 你點擊的長短。

    >> 試著按住鼠標中鍵上移或下移鼠標,你將看到當你移動鼠標時文本會上下滾動。
    * 當EMACS掛起時(WHEN EMACS IS HUNG)
    ------------------------------------------------------------------
    當Emacs停止響應你的命令時,你能用C-g把它安全的停止。當一個命令執行了太長的時間時你可以用C-g把它終止。
    你也可以用C-g來取消數字參數和輸入后又不想執行的命令。
    >> 鍵入C-u 100 產生一個值為100的數字參數,然后按C-g。再按C-f。它只會移動 一個字符,因為你用C-g取消了參數。


    如果錯誤的輸入了一個 ,你能用C-g消掉它。
    * 禁止命令(DISABLED COMMAND)
    ----------------------------------------------------
    一些Emacs命令是“禁止”的,所以新手不會因偶然而執行它。
    如果你鍵入了一個禁止命令,Emacs會顯示一條消息說明這條命令是干什么的,并且問你是否需要執行它。
    如果你真的想要執行,敲空格鍵繼續。通常,如果你不想執行禁止命令,用“n”來回答。

    >> 輸入 :(一條禁止命令),然后用n來回答。

    * 窗口(WINDOWS)
    -----------------------------
    Emacs 能有好幾個窗口,每一個顯示自己的文本。我們將在后面解釋怎樣對多窗口操作。現在我們要解釋怎樣去除多余的窗口屏回到基本的單窗口編輯狀態。這是一個例子:
    C-x 1 一個窗口(也就是除去其他所有的窗口)。
    因為Control-x跟了數字1。C-x 1使包含光標的窗口占滿整個屏幕,屏刪除其他所有窗口。
    >> 把光標移動本行并輸入 C-u 0 C-l。
    >> 鍵入Control-h k Control-f。 看這個窗口如何縮小,并在按Control-f的時候出現了一個新的文檔窗口。
    >> 鍵入C-x 1 并且看到那個文檔窗口消失了。

    * 插入和刪除(INSERTING AND DELETING)
    ---------------------------------------------------------------
    如果你要插入文本,只須輸入文本。輸入的字符你能見到,比如A,7,*等等。Emacs 會立即把它們插入。鍵入 (回車鍵)插入一個換行符。
    你能用 刪除你輸入的最后一個字符。 就是鍵盤上標著“Del”的鍵。在某些情況下,“Backspace”鍵作用和 一樣,但不總是這樣!


    通常, 立即刪除光標前面的那個字符。


    >> 輸入幾個字符,然后用 刪除它們。不必擔心這個文件回被改變;你不會 替換主教程。這只是你的個人拷貝。

    當一行文本太長而超過屏幕寬度時,這一行會在屏幕的下一行被“繼續”。文本的右邊會有一個反斜杠“”表示它被繼續。
    >> 插入文本直到最右邊,然后再插入。你將看到一個繼續了的行。
    >> 使用 刪除文本直到行的長度在屏幕的寬度以內。繼續的行將會消失。

    你能像刪除其他任何字符一樣刪除換行符。刪除兩個行間的換行符會使它們合并為一行。如果這一行很長屏幕顯示不下的話,將會用一個繼續的行來表示。
    >> 把光標移動到一行的開頭按 這將使本行和上一行合為一行。
    >> 按 重新插入你刪除的換行符。

    記住大多數的Emacs命令能接收一個重復次數。這包括文本字符,把一個文本字符重復的插入幾次。
    >> 鍵入這個-- C-u 8 * 來插入 ********

    你現在已經學習了Emacs的大多數輸入和排錯的方法。你也能一樣的刪除單詞或行。這是刪除操作的摘要:
    刪除光標前面的字符
    C-d 刪除光標后面的字符
    M- 除去光標前面的單詞
    M-d 除去光標后面的單詞
    C-k 除去從光標位置到行尾的內容
    M-k 除去到當前句子的末尾
    注意比較 ,C-d與M ,M-d和C-f,M-f( 不是一個控制字符,但不用擔心)。C-k和M-k就象C-e,M-e。
    當你一次除去不止一個字符時,Emacs將保存著這些文本,所以你可以恢復它們。恢復那些被除去的文本稱作“拉(yanking)”。你能在除去文本的同一地方拉回它們,或是在文本的其他地方。你能對文本拉上幾次以產生它們的多個拷貝,拉的命令是 C-y。
    注意“除去(killing)”與“刪除(Deleting)”之間的區別,被除去的東西能被拉回來,而被刪除的不能。通常除去能除去很多的文本屏保存,而刪除只能除去一個字符,或是空行或空格,并且不保存。


    >> 把光標移到一個空行的開頭,鍵入C-k除去這一行。
    >> 按第二次C-k,你將看到剩下的空行也被除去了。



    注意單個的C-k除去行的內容,第二個C-k除去行本身,并且使后面的所有行上移。特別要注意數字參數:它除去很多行和它們的內容,這不僅僅是重復。C-u 2 C-k 除去兩行和它們剩下的空行;而按兩次C-k并不會這樣做。


    要在當前光標處找回上次被除去的文本;按C-y


    >> 試一試,用C-y把文本拉回來。



    把C-y考慮為你把某人從你這里拿走的東西再拿回來。注意你如果在一行上按了幾次 C-y,所有被除去的文本是存在一起的,所以按一次C-y將拉回全部的行。


    >> 現在就試一下,按幾次C-k。 現在找回被除去的文本;


    >> 按C-y。然后把光標下移幾行再按一次C-y,你現在會看到怎樣拷貝這些文本。



    當你要拉回一些被除去的文本該怎樣做呢?C-y只能拉回最近被除去的文本。但以前的文本并沒有消失。你能用M-y來恢復它。當你用C-y拉回最近被除去的 文本后,換成 M-y可以拉回以前被除去的文本。鍵入一次又一次的M-y可以拉回更早以前被除去的文本。當你找到要尋找的文本,不必做任何事來保持它,只須離開拉文本的 地方繼續你的編輯。


    如果你M-y了足夠多的次數,你會回到開始點(最近被除去的)。


    >> 除掉一行,移開,再除掉另一行。 然后用C-y拉回第二行。 然后換成M-y拉回被除掉的第一行。 再按一次M-y看看得到了什么。繼續按直到拉回被除去的第二行;然后再做幾次。 如果原意的話,你可以給M-y加正的或負的數字參數。





    * 撤銷(UNDO)
    --------------------



    如果你對文本作了一些改動,然后又發現這樣做是錯誤的,你能用撤銷命令,C-x u 撤銷這些改變。


    通常,一次C-x u撤銷一個改變;如果你在一行上重復幾次C-x u,就會重復幾次撤銷操作。


    但有兩個例外:不改變文本的操作(包括光標移動和滾屏命令)不算在內;只能處理20 次。


    >> 用C-k除去這一行,然后按C-x u 它將重現出來。



    C-_是一個可選擇的撤銷命令;它所作的工作和C-x u 完全一樣,只是更容易輸入。 C-_的缺點是有些鍵盤上沒有它,這就是為什么還提供C-x u的原因。在某些終端上你可以按住CTRL的時候再敲/來輸入C-_。C-_或C-x u把數參數字當作重復次數。


    * 文件(FILES)
    -------------------

    為了永久保存你編輯的文本,你必須把它放到一個文件里。否則當你退出Emacs的時候它就會消失。你通過“查找(finding)”文件,把你編輯的內容放到文件里。(也稱為 “訪問(visiting)文件”)。


    (譯注:為了保持與原文的一致性,把find譯為“查找”,但是這里和后面出現的 “查找文件”指的都是打開文件的意思。)


    查找(finding)一個文件意味著你在Emacs里看文件的內容,在多數情況下,也就是你在編輯它。但是,你用Emacs對它作的改變并不是永久行 的,除非你“保存(saving)” 它。所以你可以避免把一個改了一半的文件留在系統上。甚至你保存了文件,Emacs也會把原始文件換個名字保留下來,以防過后你發現對文件的改動是錯誤 的。


    如果你觀察屏幕的你將看見一個開始和結尾都是破折號的行,并且以“--:**-- TUTORIAL”或之類的東西開始。屏幕的這部分通常顯示你正在訪問的文件的名字。現在,一個叫做“TUTORAL”的文件,它是你的Emacs教程的 個人拷貝。當你用Emacs 查找一個文件,文件名會出現在同樣的位置。


    查找和保存文件命令不像前面學的那些命令。它們都以字符Control-x開始。以 Control-x起頭的是一個完整的命令系列;它們中的許多都是對文件,緩沖,和相關的東西進行操作的。這些命令有兩個,三個或四個字符長。


    關于查找文件命令的另一件事是你必須給出你需要的文件的文件名。我們說這個命令 “從終端讀取一個參數”。(在這種情況下,參數是文件的名字);當你鍵入命令C-x C-f后,Emacs會提示你輸入文件的名字。你輸入的文件名會出現在屏幕底部的行上。這個底部的行稱為微型緩沖(minibuffer)用于這類較短的 輸入。你能用Emacs本身的編輯命令來編輯文件名。


    當你正在輸入文件名(或其他任何微型緩沖區輸入),你能用命令C-g來取消。


    >> 鍵入命令C-x C-f,然后輸入C-g。這將取消微型緩沖,也取消了C-x C-f命令所使 用的微型緩沖,所以你不查找任何文件。



    當你輸完文件名后用 來結束。然后C-x C-f開始工作,并開始尋找你所選擇的文件。當C-x C-f命令結束后微型緩沖區也消失了。


    過一小會兒文件的內容就會顯示在屏幕上,然后你就能對它進行編輯了。當想永久保留你的改動時用命令:


    C-x C-s 保存文件(save the file)。


    這個操作會把Emacs里的文本拷貝到文件里。在你第一次作的時候,Emacs把原始文 件改為一個新名字以使它不至于丟失。新名字是在原來名字的后面加一個“~”。


    保存結束后,Emacs打印出被寫的文件的文件名。你應當經常的保存,萬一系統崩潰 的話你不至于丟失太多的工作。


    >> 鍵入C-x C-s來保存你的教程的拷貝。屏幕的底部會打印出“Wrote.....TUTORIAL”。



    注意:在某些系統上,輸入C-x C-s 會把屏幕凍結住使你從Emacs看不到更多的輸出。這 表示這個操作系統的“特性”叫做“控制流程”,它攔截了C-x不讓它到達Emacs那里。 要使屏幕解凍,輸入C-q,然后看Emacs手冊里的“Spontaneous Entry to Incremental Search”一節,按上面的建議來對付這種“特性”。


    你能查找一個已存在的文件,來查看它或編輯它。你也可以查找一個尚未存在的文件。這是 Emacs:里創建文件的方法:查找文件,將會出現一個空白,然后插入文件的文本。當你 “保存(saving)”的時候,Emacs將會用你插入的文本創建文件。從那時候起,你可以認為你在編輯一個存在的文件了。




    * (緩沖)BUFFERS
    --------------------------



    如果你用C-x C-f查找第二個文件,第一個文件仍然留在Emacs里。你可以再用C-x C-f查找一次來切換回去。用這種方法你在Emacs里有很多文件。


    >> 輸入C-x C-f foo 來建立一個名為foo的文件。然后插入一些文本,編輯它,并 用C-x C-s來保存“foo”。 最后輸入C-x C-f TUTORIAL 以回到本教程。




    Emacs把每個文件的文本都保存在一個叫“緩沖(buffer)”的東西里。查找(打開)一個文件就會在Emacs里產生一個新的緩沖。要看你當前運行的Emacs里存在的緩沖列表,輸入:


    C-x C-b 列出緩沖(list buffers)


    >> 輸入 C-x C-b



    觀察每個緩沖都有一個名字,它可能也有一個它所保存的文件的文件名。一些緩沖不對應文件。比如,叫“*Buffers List*”的緩沖沒有任何文件。這個緩沖只包含由C-x C-b產生的緩沖列表。你在Emacs窗口里看到的任何文本都是某個緩沖的一部分。


    >> 輸入 C-x 1 消除緩沖列表。



    如果你對一個文件的文本作了改動,然后查找另一個文件,第一個文件并不保存。它的改變保存在Emacs里,在那個文件的緩沖里。被建立或編輯的第二個文件 的緩沖并不影響第一個的。這一點很有用,但這也意味著要有一個便捷的方法來保存第一個文件的緩沖。如果要用 C-x C-f切換回去只是為了按C-x C-s保存它將會是一件令人討厭的事。所以我們用


    C-x s 保存緩沖(save the buffer)


    C-x s 向你詢問每個改動過但未存盤的緩沖,對每個這樣的緩沖都詢問是否保存。


    >> 插入一行文本,然后按C-x s。 將會問你是否保存叫TUTORIAL的緩沖。 輸入“y”來回答是。





    * 擴展命令集(EXTENDING THE COMMAND SET)
    -----------------------------------------------------------------------



    有太多的Emacs命令,大大超過了Contorl和meta加上字符所能表示的數量。Emacs用X(擴展 eXtand)命令來解決這個問題。有兩種風格:


    C-x 字符擴展,后跟一個字符。
    M-x 名字命令擴展,后跟一個長名字。


    這些命令通常有用,但不如你已經學過的那些命令使用的頻繁。你已經見過了它們中的兩個:文件命令C-x C-f 用于查找和C-x C-s用于保存。


    另一個例子是結束Emacs的命令C-x C-c(不必擔心你所作的改動會丟失,在退出Emacs 之前,C-x C-c會提示你保存每一個改動過的文件)。


    C-z命令用于*臨時*退出Emacs,所以你能回到原來運行的Emacs里。在允許這樣做的系統上,C-z把Emacs“掛起”;就是說回到外殼(shell)下,但并不破壞運行的Emacs。在大多數外殼上,你能用‘fg'命令或‘%emacs'來繼續Emacs。


    在不支持掛起的系統上,C-z建立一個子外殼(subshell)運行于Emacs下以使你能運行其他程序然后回到Emacs;這并不是真正的“退出” Emacs。在這種情況下,通常從子外殼回到Emacs的外殼命令是‘exit'。 有很多C-x 命令,這是已學過的一個列表:


    C-x C-f 查找文件
    C-x C-s 保存文件
    C-x C-b 緩沖列表
    C-x C-c 退出Emacs


    C-x u 撤銷操作


    被稱作擴展命令的命令的使用頻率都不太高。或者是只在某些模式下使用。一個例子是替換字符串的命令,它在全文里把字符串替換為其他的。當你鍵入M-x, Emacs會在屏幕的底部提示你輸入命令;在這種情況下,是“replace-string”。比如輸入“repl s ”, Emacs會把命令補全。用 來結束命令。


    替換字符串命令要求兩個參數--要被替換的字符串和用來替換的字符串。你必須用 來結束兩個參數。


    >> 把光標移上兩行,然后輸入M-x repl s changed altered 。 注意現在這一行改變了:你把光標初始位置后的所有單詞c-h-a-n-g-e-d替換為了 “altered”





    * 自動保存(AUTO SAVE)
    ------------------------------------



    當你改動了一個文件還未存盤的話,所作的改動也許會由于系統崩潰而丟失。為防止這種情況發生,Emacs在編輯時為每個文件提供了“自動保存(auto save)”。自動保存的文件的文件名前后都有一個#號;例如,如果你編輯的文件名叫“hello.c”,自動保存的文件的文件名就叫 “#hello.c#”。當你正常的保存了文件后,Emacs會刪除這個自動保存的文件。如果遇到死機,你能打開那個文件后按M-x recover file 來恢復你的編輯,(是你編輯的文件而不是自動保存的文件)。當提示確認時,輸入yes 來繼續恢復自動保存的數據。




    * 回顯區域(ECHO AREA)
    ------------------------------------



    如果Emacs發現你輸入命令的速度很慢的話它會在屏幕底部為你顯示出來,這個區域叫 “回顯區域”。




    * 模式行(MODE LINE)
    ---------------------------------



    回顯區域上面的一行稱為“模式行(mode line)”。模式行顯示與下面類似的東西:


    --**-Emacs: TUTORIAL (Fundamental)--L670--58%----------------


    這一行給出了有關你在編輯的文件和Emacs狀態的有用信息。


    你已經知道了文件名意味著什么。--NN%--指出你現在在文本里的位置;它意味著上面還有NN%的文本。如果是在文件的開頭,會用--Top-- 來代替--0%--。如果是在行的末尾,會顯示--Bot--。如果你正在看的文本內容很少,可以全部顯示在屏幕上,模式行會說 --All--。


    前面的星號表示你已經改動過文本了。一旦你保存了文件或打開了一個新文件,模式行的這部分就不是星號而是破折號了。


    模式行上括號里的部分是現在的編輯模式。現在是缺省的基本(Fundamental)模式。它是 “主模式(major mode)”的一種。


    Emacs有很多不同的主模式。有些意味著不同的語言或不同的文本。如Lisp模式(Lisp mode),文本模式(text mode)等等。在任何時候有且只能有一種主模式被激活。并且它的名字會出現在現在顯示“Fundamental”的位置上。


    每一個主模式都有些自己的命令。就象不同的編程語言的注釋看起來不同一樣。每種主模式插入的注釋也不同。可以用擴展命令切換進某種主模式。例如,M-x fundamental-mode 是切換進基本模式。


    >> 輸入 M-x text-mode



    不必擔心,沒有命令會給Emacs帶來很大改變。但是你可以看到現在M-f和M-b把省略號當作單詞的一部分。而先前,在基本模式里,M-f 和M-b把省略號當成當成分隔符。


    主模式通常作諸如此類微小的變化:大多數命令在每個主模式里作“同樣的工作”,但又有些微小的不同。


    要觀看關于你現在的主模式的文檔,按C-h m。


    >> 鍵入C-u C-v一次和多次使本行接近屏幕的頂端。
    >> 輸入C-h m ,看看文本模式和基本模式有些什么不同。
    >> 按C-x 1 從屏幕上關掉這個文檔。



    主模式之所以叫做主模式是因為也存在從模式,從模式與主模式完全不同。每個從模式可以自己打開或者關閉,獨立于所有其他從模式,也獨立于你的主模式。所以你可以不用從模式或者同時用很多種從模式。


    有一種從模式很有用,特別是在編輯英文文本時。它是自動填充模式(auto fill mode)。當這個模式打開的時候,當輸入的文本過寬的時候就會自動折行。


    你能用M-x auto-fill-mode 來打開自動填充模式。如果此模式已經打開M-x auto- fill-mode 則把它關閉。我們把這叫做切換開關。


    >> 輸入M-x auto-fill-mode 。然后插入一些“asdf”直到看到這行被分為兩行。你必須在中間放一些空格,只有到空格的時候才會換行。



    通常邊界寬度是70,但你能用帶數字參數的C-x f 命令來改變它。


    >> 鍵入帶參數20的C-x。(C-u 20 C-x f) 然后輸入一些文本看現在每行只有20個字符了。然后用C-x f把它改回70。



    如果你在一個段落的中間產生了改變,自動填充模式將不會重新填充。要想重新填充段落,當光標在段落里的時候按M-q。


    >> 把光標移到上一段按 M-q。

    * 搜索(SEARCHING)
    -----------------------------

    Emacs 能朝前和朝后搜索字符串(指相鄰的一些字符或單詞)。搜索是一個移動光標的操作,它把光標移動到字符串出現的下一個地方。


    Emacs 的搜索命令和其他大多數編輯器不同,它是“增量式(incremental)”的,這意味著搜索在你鍵入字符串時就開始了。


    開始一個向前搜索的命令是C-s,C-r是往回搜索。但等等,先別忙。


    當你輸入C-s是你將注意到在回顯區域會出現一個字符串“I-search”。這告訴你Emacs開始了一個增量搜索,并在等待你輸入要搜索的東西。 結束查詢。


    >> 現在鍵入C-s開始一個搜索。慢慢的輸入單詞‘cousor',在輸入每一個字母的時候停頓一 下,注意看光標發生了什么。
    >> 再輸入一次C-s,來搜索“cursor”出現的下一個地方。
    >> 現在輸入 四次看看光標移到了哪里。
    >> 輸入 結束搜索。


    看到發生什么了嗎?在Emacs的增量搜索里,你輸入多少字符串它就試著搜索這些字符出現的地方。到字符串出現的下一個地方,只須再按一次C-s。要搜索 的字符串不存在的話,Emacs 會發出蜂鳴并告訴你當前的搜索“失敗(failing)”,按 C-g 也是終止搜索。


    注意:在某些系統上,輸入 C-s 會把屏幕凍結住使你從Emacs看不到更多的輸出。這 表示這個操作系統的“特性”叫做“控制流程”,它攔截了C-s不讓它到達Emacs那里。 要使屏幕解凍,輸入C-q,然后看Emacs手冊里的“Spontaneous Entry to Incremental Search”一節,按上面的建議來對付這種“特性”。
    如果你在搜索的過程里按了 ,你將注意到要搜索的字符串的最后一個字符會被刪除并且光標會回到上一個被搜索到的地方。比如,假設你鍵入了“c”,將會搜索“c”第一次出現的地方。然 后如果你鍵入“u”,光標將移到“ cu”第一次出現的地方。現在鍵入 。這將從搜索的字符串里把“u”刪掉,這時光標回到“c”第一次出現的地方。


    如果你在搜索時按了Control或meta鍵加字符(少數幾個少數命令例外,如C-s和C-r),搜索將被終止。


    C-s向當前光標的后面搜索字符串出現的地方。如果你需要搜索前面文本里的東西,用C-r來代替。我們所介紹的C-s的每個特性C-r也支持,除了方向相反。


    * 多窗口(MULTIPLE WINDOWS)
    ------------------------------------------------


    Emacs有一個非常好的特性是能同時在屏幕上顯示不止一個的窗口。


    >> 把光標移到本行上按C-u 0 C-l。


    >> 現在按C-x 2,它把屏幕分裂成兩個窗口,每個窗口都顯示本教程。光標在上面的窗口里。


    >> 按C-M-v 滾動到下面的窗口里。(如果你沒有一個真正的Meta鍵,那么按ESC C-v)

    >> 按 C-x o (“o” 指 “其他(other)”) 把光標移到到下面的窗口里。
    >> 用 C-v 和 M-v 滾動下面窗口里的文本。 在上面的窗口里看本教程。


    >> 再次按 C-x o 使光標回到上面的窗口里。 現在光標象以前一樣在上面的窗口里了。



    你能一直用C-x o在窗口間切換。每個窗口都有它自己的光標位置,但僅有一個窗口能顯示活動的光標。所有的編輯命令都發生在那個顯示光標的窗口上。我們把這個窗口叫做“選中窗口( selected window)”。


    當你在一個窗口里編輯文本,而用另一個窗口作參考時命令C-M-v非常有用。你總是能把光標留在所編輯的地方,而用C-M-v來翻閱另一窗口。


    C-M-v 是 CONTROL-META 加字符的一個例子。 如果你有一個真正的META 鍵,你能同時按住 CTRL 和 META 再按“v”來輸入C-M-v。CTRL 和 META 誰先按誰后按無所謂。


    如果你沒有一個真正的META 鍵, 你可以用 ESC 來代替。這時候次序是有關系的: 你必須讓 ESC 跟在 CTRL-v后面; 否則 CTRL-ESC v 將不工作。 這是因為 ESC 是一個有意義的字符而不是一個修飾字符。


    >> 輸入 C-x 1 (在上面的窗口里) 以消除下面的窗口。



    (如果你在下面的窗口里鍵入C-x 1,將會把上面的窗口去掉。可以把這個命令看作是“只保留你現在在的那個窗口。)


    你不必一定要在兩個窗口里顯示同樣的緩沖。如果你在一個窗口里鍵入C-x C-f查找文件,另一個窗口的內容不會改變。你能獨立的在每個窗口里查找文件。


    這是讓兩個窗口顯示不同內容的另一種方法:


    >> 在你輸入的文件名后再輸入C-x 4 C-f,然后用 結束。會看到指定的文件出現在下面 的窗口里。光標也在那里面。


    >> 鍵入C-x o 回到上面的窗口,然后輸入C-x 1刪掉下面的窗口。



    * 遞歸編輯層(RECURSIVE EDITING LEVELS)
    ----------------------------------------------------------------

    有時候你會進入“遞歸編輯層(recursive editing level)”。由模式行上的方括號指示。它在主模式名的括號外面。例如你也許會看到(Fundamental)變成了[(Fundamental)]。


    要退出遞歸編輯層,按ESC ESC ESC。這是一個通用的退出命令,你也可以用它除去額外的窗口,或者退出微型緩沖。


    >> 輸入 M-x 進入一個微型緩沖; 然后用 ESC ESC ESC 離開。

    你不能用C-g來退出遞歸編輯層。這是因為C-g只能取消在遞歸編輯層里面的命令。


    * 獲取更多的幫助(GETTING MORE HELP)
    --------------------------------------------------------------

    在本教程里我們試著為你開始使用Emacs提供了足夠多的信息。但是有關Emacs的信息實在是太多以至于不能全部都在這里說明。但是,你還應該學習更多 有關Emacs的東西,因為它另外還有很多有用的特性。Emacs提供了很多讀取有關命令的文檔的命令。這些“幫助”命令都以 Control-h開頭,叫做“幫助字符”。


    為了使用幫助特性,輸入字符C-h,然后再輸入一個字符來說明你需要哪種幫助。如果你真的不知道,輸入C-h ? 然后 Emacs會告訴你它能給你什么樣的幫助。如果你輸入了C-h 又覺得不需要任何幫助,你可以用C-g來取消它。


    (在有的地方,C-h的作用被改變了。如果按C-h在屏幕的底部沒有出現有關幫助的信息的話,試試用F1和M-x help RET來代替。)


    最基本的幫助特性是C-h c。輸入C-h,然后是字符 c,然后輸入一個命令字符和序列;然后 Emacs 會顯示這個命令的簡潔的描述。


    >> 輸入 C-h c Control-p.

    顯示的消息看起來會象這樣:


    C-p runs the command previous-line


    這告訴你“功能的名字”。功能的名字主要用于對Emacs的功能擴充和定制。但因為功能的名字指出了命令的用途,所以最好不要改動它。


    C-h c后面可跟多字符命令,比如 C-x C-s 和 (如果你沒有 META 或者 EDIT 或者 ALT 鍵) v 。


    要獲取有關命令的更多信息,用C-h k 代替 C-h c。


    >> 輸入 C-h k Control-p.



    這將在一個Emacs窗口里顯示命令的文檔。當你讀完后可以用C-x 1除去幫助文本。如果不想馬上離開,你可以一邊編輯一邊參考幫助文本,然后再按C-x 1。


    這是一些有用的 C-h 選項:


    C-h f 描述一個功能,在你輸入了這個功能的名字后。

    >> 輸入 C-h f previous-line 。 將打印出C-p命令所實現的所有功能。



    C-h a 命令查找。輸入一個關鍵字,Emacs將列出所有名字里有這個關鍵字的命令。 包括所有以Meta-x開始的命令。對有些命令,C-h a 也將列出實現同一功能的 幾個命令序列。


    >> 輸入 C-h a file .




    這將在窗口里顯示所有名字里有單詞“file”的M-x命令。


    >> 輸入 C-M-v 來滾動幫助窗口,做上幾次。


    >> 輸入 C-x 1 來刪除幫助窗口。





    * 總結(CONCLUSION)
    --------------------------------

    記住,永遠都用C-x C-c來退出Emacs。用C-z來退到一個臨時的外殼里,以使你過后還能回到 Emacs。
    本教程盡量讓所有的初學者都能理解,如果你發現有些東西不清楚的話,別責備你自己-抱怨吧!

    posted @ 2007-06-29 09:07 笨蛋啊帆 閱讀(915) | 評論 (0)編輯 收藏

    理解finalize()-析構函數的替代者

    by Tim Gooch

    在許多方面,Java 類似于 C++。Java 的語法非常類似于 C++,Java 有類、方法和數據成員;Java 的類有構造函數; Java 有異常處理。

    但是,如果你使用過 C++ 會發現 Java 也丟掉一些可能是你熟悉的特性。這些特性之一就是析構函數。取代使用析構函數,Java 支持finalize() 方法。

    在本文中,我們將描述 finalize() 與 C++ 析構函數的區別。另外,我們將創建一個簡單的 Applet 來演示 finalize() 是如何工作的。

    最終的界限

    與 Java 不同,C++ 支持局部對象(基于棧)和全局對象(基于堆)。因為這一雙重支持,C++ 也提供了自動構造和析構,這導致了對構造函數和析構函數的調用,(對于堆對象)就是內存的分配和釋放。

    在 Java 中,所有對象都駐留在堆內存,因此局部對象就不存在。結果,Java 的設計者覺得不需要析構函數(象 C++ 中所實現的)。

    取而代之,Java 定義了一個特殊的方法叫做finalize() ,它提供了 C++ 析構函數的一些功能。但是,finalize() 并不完全與 C++ 的析構函數一樣,并可以假設它會導致一系列的問題。finalize() 方法作用的一個關鍵元素是 Java 的垃圾回收器。

    垃圾回收器

    在 C/C++、Pascal和其他幾種多種用途的編程語言中,開發者有責任在內存管理上發揮積極的作用。例如,如果你為一個對象或數據結構分配了內存,那么當你不再使用它時必須釋放掉該內存。

    在 Java 中,當你創建一個對象時,Java 虛擬機(JVM)為該對象分配內存、調用構造函數并開始跟蹤你使用的對象。當你停止使用一個對象(就是說,當沒有對該對象有效的引用時),JVM 通過垃圾回收器將該對象標記為釋放狀態。

    當垃圾回收器將要釋放一個對象的內存時,它調用該對象的finalize() 方法(如果該對象定義了此方法)。垃圾回收器以獨立的低優先級的方式運行,只有當其他線程掛起等待該內存釋放的情況出現時,它才開始運行釋放對象的內存。(事實上,你可以調用System.gc() 方法強制垃圾回收器來釋放這些對象的內存。)

    在以上的描述中,有一些重要的事情需要注意。首先,只有當垃圾回收器釋放該對象的內存時,才會執行finalize()。如果在 Applet 或應用程序退出之前垃圾回收器沒有釋放內存,垃圾回收器將不會調用finalize()。

    其次,除非垃圾回收器認為你的 Applet 或應用程序需要額外的內存,否則它不會試圖釋放不再使用的對象的內存。換句話說,這是完全可能的:一個 Applet 給少量的對象分配內存,沒有造成嚴重的內存需求,于是垃圾回收器沒有釋放這些對象的內存就退出了。

    顯然,如果你為某個對象定義了finalize() 方法,JVM 可能不會調用它,因為垃圾回收器不曾釋放過那些對象的內存。調用System.gc() 也不會起作用,因為它僅僅是給 JVM 一個建議而不是命令。

    finalize() 有什么優點呢?

    如果finalize() 不是析構函數,JVM 不一定會調用它,你可能會疑惑它是否在任何情況下都有好處。事實上,在 Java 1.0 中它并沒有太多的優點。

    根據 Java 文檔,finalize() 是一個用于釋放非 Java 資源的方法。但是,JVM 有很大的可能不調用對象的finalize() 方法,因此很難證明使用該方法釋放資源是有效的。

    Java 1.1 通過提供一個System.runFinalizersOnExit() 方法部分地解決了這個問題。(不要將這個方法與 Java 1.0 中的System.runFinalizations() 方法相混淆。)不象System.gc() 方法那樣,System.runFinalizersOnExit() 方法并不立即試圖啟動垃圾回收器。而是當應用程序或 Applet 退出時,它調用每個對象的finalize() 方法。

    正如你可能猜測的那樣,通過調用System.runFinalizersOnExit() 方法強制垃圾回收器清除所有獨立對象的內存,當清除代碼執行時可能會引起明顯的延遲。現在建立一個示例 Applet 來演示 Java 垃圾回收器和finalize() 方法是如何相互作用的。

    回收垃圾

    通過使用Java Applet Wizard 創建一個新的 Applet 開始。當提示這樣做時,輸入 final_things 作為 Applet 名,并選擇不要生成源文件注釋。

    接下來,在Java Applet Wizard 進行第三步,不要選擇多線程選項。在第五步之前,根據需要修改 Applet 的描述。

    當你單擊Finish 后,Applet Wizard 將生成一個新的工作空間,并為該項目創建缺省的 Java 文件。從列表 A 中選擇適當的代碼輸入(我們已經突出顯示了你需要輸入的代碼)。

    當你完成代碼的輸入后,配置Internet 瀏覽器將System.out 的輸出信息寫到Javalog.txt 文件中。(在IE 選項對話框的高級頁面中選擇起用 Java Logging。)

    編譯并運行該 Applet。然后,等待 Applet 運行(你將在狀態欄中看到 Applet 已啟動的信息),退出瀏覽器,并打開Javalog.txt 文件。你將會發現類似于下列行的信息:

            1000 things constructed

            0 things finalized

    正如你能夠看到的那樣,建立了1,000個對象仍然沒有迫使垃圾回收器開始回收空間,即使在 Applet 退出時也沒有對象被使用。

    現在,刪除在stop() 方法第一行中的注釋符以起用System.gc() 方法。再次編譯并運行該 Applet ,等待 Applet 完成運行,并退出瀏覽器。當你再次打開Javalog.txt 文件,你將看到下列行:

            1000 things constructed

            963 things finalized

    這次,垃圾回收器認為大多數對象未被使用,并將它們回收。按順序,當垃圾回收器開始釋放這些對象的內存時,JVM 調用它們的finalize() 方法。

    繼承finalize()?

    順便,如果你在類中定義了finalize() ,它將不會自動調用基類中的方法。在我們討論了finalize() 與 C++ 的析構函數的不同點后,對這個結論不會驚訝,因為為某個類定制的清除代碼另一個類不一定會需要。

    如果你決定要通過派生一個類的finalize() 方法來調用基類中的finalize() 方法,你可以象其他繼承方法一樣處理。

            protected void finalize()

            {

              super.finalize();

              // other finalization code...

            }

    除了允許你控制是否執行清除操作外,這個技術還使你可以控制當前類的finalize() 方法何時執行。

    結論

    然而有益的是,Java 的自動垃圾回收器不會失去平衡。作為便利的代價,你不得不放棄對系統資源釋放的控制。不象 C++ 中的析構函數,Java Applet 不會自動執行你的類中的finalize() 方法。事實上,如果你正在使用 Java 1.0,即使你試圖強制它調用finalize() 方法,也不能確保將調用它。

    因此,你不應當依靠finalize() 來執行你的 Applet 和應用程序的資源清除工作。取而代之,你應當明確的清除那些資源或創建一個try...finally 塊(或類似的機制)來實現。

    列表 A: final_things.java

    import java.applet.*;

    import java.awt.*;

     

    class thing

    {

      public static int thingcount = 0;

      public static int thingfinal = 0;

     

      public thing()

      {

        ++thingcount;

      }

     

     

      protected void finalize()

      {

        ++thingfinal;

      }

    }

     

    public class final_things extends Applet

    {

     

      public final_things()

      {

      }

     

      public String getAppletInfo()

      {

        return "Name: final_thing\r\n" +

               "Author: Tim Gooch\r\n" +

               "Created with Microsoft " +

               "Visual J++ Version 1.1";

      }

     

     

      public void init()

      {

          resize(320, 240);

     

      }

     

      public void destroy()

      {

      }

     

      public void paint(Graphics g)

      {

        g.drawString("Created with Microsoft" +

          "Visual J++ Version 1.1", 10, 20);

      }

     

      public void start()

      {

        while(thing.thingfinal < 1)

        {

          new thing();

        }

      }

     

      public void stop()

      {

        // System.gc();

        System.out.println(thing.thingcount +

          " things constructed");

        System.out.println(thing.thingfinal +

          " things finalized");

      }

     

    }

    posted @ 2007-06-12 18:13 笨蛋啊帆 閱讀(361) | 評論 (0)編輯 收藏


    posts - 51, comments - 17, trackbacks - 0, articles - 0

    Copyright © 笨蛋啊帆

    主站蜘蛛池模板: 特黄特色大片免费| 亚洲午夜无码毛片av久久京东热 | 最近中文字幕无吗免费高清| 精品亚洲国产成AV人片传媒| 99在线观看精品免费99| 亚洲一区二区成人| 1a级毛片免费观看| 亚洲精品国产日韩| 国产精品成人无码免费| 黄页网址在线免费观看| 国产精品亚洲综合一区| 免费在线观影网站| 久久精品国产亚洲AV无码麻豆| 亚洲免费在线视频观看| 亚洲欧美日韩一区二区三区| 国产成人免费网站在线观看| h视频免费高清在线观看| 亚洲av无码乱码国产精品fc2| 120秒男女动态视频免费| 久久久久精品国产亚洲AV无码| 日本人的色道www免费一区| 无套内谢孕妇毛片免费看看 | 性做久久久久久久免费看| 亚洲JLZZJLZZ少妇| 亚洲色成人中文字幕网站| 57pao一国产成视频永久免费| 亚洲砖码砖专无区2023| 亚洲一级Av无码毛片久久精品| 一区二区三区无码视频免费福利| 亚洲精品在线视频观看| 国产一级淫片免费播放| a毛片久久免费观看| 亚洲国产成AV人天堂无码| 免费二级毛片免费完整视频| 久久久久久国产精品免费免费男同 | 亚洲精品动漫免费二区| 亚洲日韩在线观看免费视频| 亚洲精品美女在线观看| 国产免费一区二区三区VR| 一区二区三区四区免费视频 | 一级A毛片免费观看久久精品|