[求]tab-display.el

Vim、Emacs配置和使用
回复
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

[求]tab-display.el

#1

帖子 kardinal »

哪位高人有 tab-display.el 这个扩展,发上来大家赏玩一下的说 :lol:

我搜索了半天,死活找不到一个可以下载的链接



还有就是Emacs里,如果使用空格作为缩进,像这样:按一下Tab,插入4个空格。最好不要扩展的,系统应该有自带
头像
zhan
帖子: 1880
注册时间: 2005-08-15 0:04
来自: 南7技校

#2

帖子 zhan »

C-q Tab 组合键?
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

#3

帖子 kardinal »

那还是输入一个TAB吧???而且输入也不方便啊。。。:em19

据说(setq indent-tabs-mode nil)这个选项能使用空格作为缩进,不过不知道哪一个版本里的了,我这里不起作用。。。
关键是连继输入4个空格,删除到是容易,(delete-horizontal-space)就可以了。。。



-----------------------------------------------------------------------
tab-display.el 是关于TAB字符的显示的。 就是把TAB显示为竖线??或者别的什么,好像能设定格式的。空格就显示为空格


大约这样吧:

代码: 全选

 | asfsdafsadf
asdfsdfasdfsdfasd

 | | | asdfsadf
 | | asdfsdfsdfsadf
 | | asdfsdafsdafsdaf

上面的是Tab字符的显示,似乎可以设定格式,我看到的好像是用淡红色的虚线显示的。。。

        asdfsadf
     asdfsdfsdfsadf
     asdfsdafsdafsdaf

这样的前面就不是用TAB缩进的,而是用空格缩进的了


虽然 M-x untabify 可以将缩进转换为空格,但是看不到TAB字符到底不踏实。。。

TAB字符最烦人了。。。。把什么都搞得乱七八糟。。。
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

#4

帖子 kardinal »

老大知道哪里有Emacs的教程不??? C-h t 的那个不算。。。 《Emacs24小时学》也看了点,啰嗦,太啰嗦了。。而且是英文的,很吃力的说。。。
现在懂得了一点Emacs了,打算让更多的兄弟懂得一点,就写了点心得。基础知识部分写完了,后面的都是整理了
不知道有没有类似的东东,要是有我就不费劲了 :lol:

这里好像比较流行VIM。。。VIM我也用了俩月,确实是很不错,特别是正则表达式配合宏,操作很方便。。。但是,当VIM遭遇输入法…… 而且VIM编辑大点的文件,中文的,经常会一团乱糟(Gvim没怎么用过)。。。也没抗清楚怎么回事,害怕了。。。

代码: 全选

    * 基础知识
          o 缓冲区
          o 信息栏
          o 按键描述
          o 回显区
          o 内部命令
          o 命令模式
          o Emacs终端
          o 区域选择
          o 中止执行
          o 基本配置

基础知识

    Emacs是一个架构在编辑器上的集成环境,除了最基本的编辑功能,还可以完成文件管理、终端模拟、浏览网页、收发邮件、编译程序等工作。

    Emacs使用Elisp语言进行配置和扩展,它本身也可以作为Elisp解释器使用。


    Emacs的界面主要由三部分构成:信息栏、回显区(echo)、缓冲区(buffer)

缓冲区

    缓冲区(buffer) 类似于常规编辑器的文字编辑区。Emacs并不直接对文件进行修改,而是读取文件的内容并显示在缓冲区中,在收到保存的指令后才将修改写入文件。

    缓冲区名称通常为它所读取文件的文件名。

信息栏

    在缓冲区之下为状态栏,类似于这种形式

    -U:**  emacs_tutor.rst   (24,0)   (reST)----7:55下午---------------

    显示当前缓冲区的状态,例如是否已保存、缓冲区名称、光标位置、主模式名称……


    标题栏也可以显示一部分信息,并且可以自由定义。

按键描述

    Emacs的功能键,通常为组合键。例如

        Emacs 	实际按键 	功能
        C-f 	Ctrl+f 	光标前进一格
        C-b 	Ctrl+b 	光标后退一格
        C-d 	Ctrl+d 	删除一个字符
        C-a 	Ctrl+a 	回到行首

    Emacs对按键的描述方式中, - 之前的一个字符为修饰键,表示按住该键,再按 - 后面的键。

    例如: C-a 表示按住 Ctrl 再按 a 键。 Emacs对其它一些特殊按键的描述

        *

          C-

              按住Ctrl键

        *

          M-

              按住Meta键。在PC上,Meta键通常对应 Alt 键。也可以按一次 ESC 键

        *

          C-M-

              同时按住Ctrl键和Alt键

        *

          s-

              WIN键

        *

          RET

              回车键

        *

          TAB

              Tab键

        *

          ESC

              Esc键

        *

          SPC

              空格键

        *

          Backspace

              退格键

        *

          DEL

              删除键

    在后面的部分中,将统一使用Emacs对按键的描述方式。



    Emacs十分强大,上面的组合键,远不能涵盖Emacs的功能于万一。除基本的编辑功能键外,其它功能多使用按键序列:连续的按下多组快捷键后,才能够使用该功能。

    例如: C-x C-c 表示先按下 C-x ,再按下 C-c 。也就是 Ctrl+x 后,再 Ctrl+c (退出Emacs)

    接下来 C-h t ,进入 《Emacs 快捷指南》

回显区

    C-x h (先按Ctrl+x 再按h)后,您会发现状态栏和编辑器底部之间的区域出现 Mark set 字样。同时,整个缓冲区的内容都被选中。

    它是一个迷你缓冲区(minibuffer),叫作回显区(echo area),提示您正在进行的操作,比如 Mark set(设定标记)

    如果一个按键序列没有完成,却停止了输入。大约两秒后,回显区会显示已输入部分,以免您忘记。千万不要以为是Emacs反应迟钝:)

内部命令

    C-h k 后,回显区提示

    Describe key (or click or menu item):

    接着 C-x h ,您会发现,缓冲区被水平分割为两个。另一个名为 *help* 缓冲区中显示的内容为

    C-x h runs the command mark-whole-buffer
       which is an interactive compiled Lisp function in `simple.el'.
    It is bound to C-x h, <menu-bar> <edit> <mark-whole-buffer>.
    (mark-whole-buffer)

    Put point at beginning and mark at end of buffer.
    You probably should not use this function in Lisp programs;
    it is usually a mistake for a Lisp function to use any subroutine
    that uses or sets the mark.

    [back]

    第一行说明了 C-x h 运行的命令为 mark-whole-buffer
    第二行说明了该命令由 simple.el 这个扩展提供,绑定到 C-x h 、 菜单栏-编辑-标记全部缓冲区 、 和命令 mark-whole-buffer
    第三行介绍了这个命令的行为: 在文档末尾设置一个标记,并把光标点移动到文档起始。

    Note

    光标点假定光标为插入式(竖线),位置在覆盖式光标(方块)的左侧。

    事实上,Emacs用方块光标,只是为了减少视觉疲劳:)


    事实上,Emacs使用命令进行处理,快捷键只是一种发送命令的方法!


    一般情况下,我们用不到这么详细的说明,而且英文看起来也比较吃力。您可以使用 C-h c 以简洁模式查看说明。 只在回显区显示键位和它执行的命令:

    C-x h runs the command mark-whole-buffer

    通常这就足够了。


    如果您知道一个命令,而不知道它绑定到什么键上,您可以使用 C-h w ,也就是命令 Where-is

命令模式

    由于Emacs太过强大,内部命令恒河沙数,根本不可能有同样数量的快捷键位来绑定它们!

    对于没有绑定的命令,可以使用 命令模式 执行!


    M-x (Alt+x) 开启命令模式,回显区显示为 M-x ,然后输入 newline

    这个命令默认绑定在回车键,所以它和回车键的作用一样为 换行

    C-h w newline 结果是: newline is on RET

    Tip

    命令模式中,可以使用 TAB 补全,使用 M-p 上翻, M-n 下翻

Emacs终端

    使用命令 shell (M-x shell)激活Emacs终端。可以在Emacs终端中使用外部命令。

    需要注意的是,Emacs终端是哑终端,一些类型的输出不能够正确显示。

    在Emacs终端中使用 exit 命令退出。


    M-! (Alt+Shift+1)临时执行一条外部命令,并输出在名为 *Shell Command Output* 的缓冲区中 (命令 shell-command)

    C-u M-! (Ctrl+u Alt+Shift+1)临时执行一条外部命令,并输出到光标位置。

区域选择

    很多时候,我们需要选中缓冲区中的某一部分内容。和大多数程序一样,您可以在被选择区域的起始点按下左键,移动鼠标,在结束点释放左键,这部分区域便被选中。

    这种方式效率并不高,而且一些场合并没有鼠标支持,例如控制台或者远程登录。

    事实上,Emacs进行区域选择的方法,是设置一个标记,标记到光标点之间的部分将被选中。

    标记的位置为使用命令 set-mark-command 时,光标点所处的位置。


    set-mark-command 命令默认绑定在 C-SPC 键上。

    如果使用输入法,这个键位多半是切换输入法的快捷键。键盘指令会先被输入法拦截下来,而无法发送到Emacs。

    当然也可以使用 M-@ 来设定标记。不过 M-@ 绑定的命令为 mark-word ,虽然差不太多,但有时并不好用;况且对于一个常用的命令来讲, M-@ 键位的难度太高了……


    Emacs的键位中,几乎没有默认绑定在 WIN 键上的命令,不妨利用一下:)

    在Emacs的用户配置文件 ~/.emacs 中添加如下内容:

    ;; WIN+Space 设置标记
    (global-set-key (kbd "s-SPC") 'set-mark-command)

    重启Emacs,或者在 ~/.emacs 文件的缓冲区中执行命令 eval-buffer (M-x eval-buffer),便可以使配置文件立即生效:)

中止执行

    如果想放弃一个命令,可以使用 C-g (keyboard-quit)打断。

    当然了,建议您使用快捷键 C-g ,因为这时 M-x 通常是没有效果的

基本配置

    您已经知道了,Emacs的配置文件为 ~/.emacs 。配置文件中,以 ; 起始到行末的部分为注释。

    让我们些简单配置一下:

    ;;========== 外观设置 ==========;;
    ;;去掉工具栏
    (tool-bar-mode nil)

    ;;去掉菜单栏,F10 开启关闭菜单
    (menu-bar-mode nil)

    ;;去掉滚动栏,使用鼠标滚轮代替
    ;;(scroll-bar-mode nil)

    ;;关闭启动画面
    (setq inhibit-startup-message t)

    ;;========== 键绑定 ==========;;
    ;;F10显示/隐藏菜单栏  原命令 menu-bar-open
    ;;(global-set-key (kbd "F10") 'menu-bar-mode)

    ;;WIN+s进入Shell
    (global-set-key (kbd "s-s") 'shell)

    ;;WIN+space 设置标记
    (global-set-key (kbd "s-SPC") 'set-mark-command)

    ;;========== 缓冲区 ==========;;
    ;;设定行距
    (setq default-line-spacing 4)
    ;;页宽
    (setq default-fill-column 60)

    ;;缺省主模式 text-mode
    (setq default-major-mode 'text-mode)

    ;;设置删除纪录
    (setq kill-ring-max 200)

    ;;语法加亮
    (global-font-lock-mode t)

    ;;高亮显示区域选择
    (transient-mark-mode t)

    ;;防止页面滚动时跳动, scroll-margin 3 可以在靠近屏幕边沿3行时就开始滚动,可以很好的看到上下文。
    (setq scroll-margin 3
          scroll-conservatively 10000)

    ;;高亮显示成对括号,但不来回弹跳
    (show-paren-mode t)
    (setq show-paren-style 'parentheses)

    ;;鼠标指针规避光标
    (mouse-avoidance-mode 'animate)

    ;;粘贴于光标处,而不是鼠标指针处
    (setq mouse-yank-at-point t)

    ;;========== 回显区 ==========;;
    ;;闪屏报警
    (setq visible-bell t)

    ;;使用 y or n 提问
    (fset 'yes-or-no-p 'y-or-n-p)

    ;;========== 状态栏 ==========;;
    ;;显示时间
    (display-time)

    ;;显示列号
    (setq column-number-mode t)

    ;;标题栏显示 %f 缓冲区完整路径 %p 页面百分数 %l 行号
    (setq frame-title-format "%f")


    ;;========== 编辑器设定 ==========;;
    ;;不生成临时文件
    ;;(setq-default make-backup-files nil)

    ;;设定剪贴板内容格式    适应Firefox等程序
    (set-clipboard-coding-system 'ctext)

    ;;加快语法高亮显示速度
    (setq lazy-lock-defer-on-scrolling t)
    (setq font-lock-support-mode 'lazy-lock-mode)
    (setq font-lock-maximum-decoration t)

    ;;将错误信息显示在回显区
    (condition-case err
        (progn
        (require 'xxx) )
      (error
       (message "Can't load xxx-mode %s" (cdr err))))

回复