0°

编辑器

Linux下有众多运行于控制台环境的文本编辑器任你选用,它们包括:

  • vim:强大而轻便的BSD传统编辑器。VI iMproved.
  • emacs:重量级GNU传统编辑器。RMS (Richard M. Stallman)原创
  • xemacs:Emacs的下一代,由Lucid原创
  • mcedit:新型GNU编辑器。也就是mc内置编辑器
  • ae:默认的小型编辑器(Potato)。通常不用它
  • nano:默认的小型GNU编辑器(Woody)。类似pico
  • joe:用于旧式的WordStar或TurboPascal
  • jed:快速、多功能、菜单式编辑器,兼容Emacs键盘操作方式
  • jove:微型编辑器,兼容Emacs键盘操作方式
  • nvi: 新版vi。Bug-for-bug compatible with the original vi

使用update-alternavives –config editor命令可设置默认的编辑器。许多程序也使用环境变量EDITOR或VISUAL来调用编辑器。
还有一些运行于X环境的编辑器也值得一提:

  • gvim:Vim with GUI (vim-gtk package)
  • emacs:The One True Emacs (auto-detect X)
  • xemacs:Next generation Emacs (auto detect X)

这些X客户端的命令使用标准选项如-fn a24。

11.2 应急的编辑器
有些编辑器安装在/bin下,这类编辑器至少应该安装一个,以免当/usr不能访问时,无法编辑文件。

  • elvis-tiny:最小的vi编辑器(用vi命令开打)
  • nano-tiny:最小的非vi编辑器(用nano-tiny命令打开)
  • ed:最小的编辑器(常驻系统但使用起来极不方便)

1.Vim提示

程序运行时可按下阅读”VIM – main help file”文档。

帮助
返回到正常模式
V Visual模式
i Insert模式
: 命令行命令
:set tw=72 设置文本宽为72
 Insert (paste) 模式
:r! date -R Insert RFC-822 数据
qa 将键盘操作记录到注册表a
@a 播放注册表a中记录的键盘操作
:edit foo.txt 载入并编辑另一个文件foo.txt
:wnext 写入当前文件然后编辑下一个文件

q和@可用来记录简单的键盘宏然后回放它们。例如,想创建一个宏为光标所在处的单词加上HTML斜体字标签,可以输入qii^[ea^[q (此处^[表示按ESC键)。然后,在单词前输入@i,编辑器就会自动为它加上

2.Emacs提示

 帮助
 菜单
C-u M-! date -R 插入RFC-822数据

3.打开编辑器

打开编辑器: emacs filename vim filename
以vi兼容方式打开: vim -C
以vi不兼容方式打开: vim -N
默认编译方式打开: emacs -q vim -N -u NONE

4.编辑器命令总汇(Emacs,Vim)

   退出:                        C-x C-c        :qa /:wq /:xa /:q!
    返回/命令模式:               C-g             
    后退(左移):                  C-b             h
    前进(右移):                  C-f             l
    下一行(下移):                C-n             j
    上一行(上移):                C-p             k
    行首(^):                     C-a             0
    行尾($):                     C-e             $
    多重命令:                    C-u nnn cmd     :count cmd
    多重命令:                    M-digitkey cmd
    保存文件:                    C-x C-s         :w file
    buffer开始处:                M-< 1G buffer末尾处: M->             G
    向前翻1屏:                   C-v             ^F
    向前翻1/2屏:                                   ^D
    向前翻1行:                                     ^E
    向后翻1屏:                   M-v             ^B
    向后翻1/2屏:                                   ^U
    向后翻1行:                                     ^Y
    换到其它窗口:                  M-C-v
    删除光标下的内容:              C-d             x
    删除光标和行尾之间的内容:      C-k             D
    向前iSearch:                   C-s
    反向isearch:                   C-r
    向前搜索:                      C-s enter       /
    反向搜索:                      C-r enter       ?
    正规表达式isearch:             M-C-s
    正规表达式反向isearch:         M-x isearch-backward-regexp
    正规表达式搜索:                M-C-s enter     /
    正规表达式反向搜索:            M-x isearch-backward-regexp enter
                                                    ?
    帮助:                          C-h C-h         :help
    可能的帮助:                    C-h a
    快捷键帮助:                    C-h b           :help [key]
    简要帮助:                      C-h i
    主要帮助:                      C-h m
    使用指南:                      C-h t           :help howto
    Undo:                           C-_             u
    Redo:                           C-f             ^R
    在光标所在处作记号:            C-@             m{a-zA-Z}
    交换记号和位置:                C-x C-x
    定位到当前文件的记号处:                        '{a-z}
    定位到所有文件的记号处:                        '{A-Z}
    区域拷贝:                      M-w             {visual}y
    区域删除:                      C-w             {visual}d
    Yank and keep buffer:           C-y
    Yank from kill buffer:          M-y             p
    区域内字母转成大写:            C-x C-u         {visual}U
    区域内字母转成小写:            C-x C-l         {visual}u
    插入特殊字符:                  C-q octalnum/keystroke
                                                    ^V decimal/keystroke
    替换:                          M-x replace-string      :%s/aaa/bbb/g
    正规表达式替换:                M-x replace-regexp      :%s/aaa/bbb/g
    询问替换:                      M-%                     :%s/aaa/bbb/gc
    询问替换:                      M-x query-replace
    询问正规表达式替换:            M-x query-replace-regexp
    打开文件:                      C-x C-f         :r file
    保存文件:                      C-x C-s         :w
    保存所有buffers:               C-x s           :wa
    保存为:                        C-x C-w file    :w file
    准备buffer:                    C-x b
    buffers列表:                   C-x C-b         :buffers
    只读开关:                      C-x C-q         :set ro
    Prompt and kill buffer:         C-x k
    水平分割窗口:                  C-x 2           :split
    垂直分割窗口:                  C-x 3           :vsplit (ver. 6)
    移动到其它窗口:                C-x o           ^Wp
    关闭当前窗口:                  C-x 0           :q
    关闭其它窗口:                  C-x 1           ^Wo
    在前台运行shell:               M-x compile
    关闭前台运行的shell:           M-x kill-compilation
    运行make                                        :make Makefile
    检查错误消息:                  C-x`            :echo errmsg
    运行shell关记录其活动:         M-x shell       :!script -a tmp
    ...清除BS, ...                                  :!col -b record
    ...保存/调出shell记录:         C-x C-w record  :r record
    运行shell:                     M-! sh          :sh
    执行命令:                      M-! cmd         :!cmd
    执行命令并进入插入状态:        C-u M-! cmd     :r!cmd
    运行filter:                     M-| file        {visual}:w file
    运行filter并进入插入状态:      C-u M-| filter  {visual}:!filter
    显示option                                      :se[t] {option}?
    重设option到默认状态                            :se[t] {option}&
    重设boolean option                              :se[t] no{option}
    boolean option开关节                            :se[t] inv{option}
    文本在第72列自动换行                            :se tw=72
    关闭自动换行                                    :se tw=0
    自动缩进                                        :se ai
    扩展tab                                         :se et
    特殊注释(mail)                                :se comments=n:>,n:\|
    运行GDB                         M-x gdb
    显示GDB模式                     C-h m
    step one line                   M-s
    next line                       M-n
    step one instruction (stepi)    M-i
    finish current stack frame      C-c C-f
    continue                        M-c
    up arg frames                   M-u
    down arg frames                 M-d
    copy number from point, insert at the end
                                    C-x &
    set break point                 C-x SPC

5.Vim设置

要使用Vim的全部功能和关键字高亮显示,请在~/.vimrc或/etc/vimrc中添加如下内容:

set nocompatible
set nopaste
set pastetoggle=
syn on

粘贴模式能避免自动缩进功能影响在控制台终端下的剪切-粘贴操作,它更象是”:set noai”。

6.Ctags

执行

$ apt-get install exuberant-ctags

接着就可以在源代码文件中运行ctags了。在Vim中输入:tag function_name可
直接跳到function_name的开始行。它适用于C、C++、Java、Python、和其它许多编辑语言。
Emacs有相同的ctags功能。

7.将高亮显示的屏显内容转化为HTML文件

在Vim命令模式下输入so \$VIMRUNTIME/syntax/2html.vim可以将屏幕上高亮显示的文本转化为HTML代码,然后:w file.html存盘,:q退出。对C等源代码特别适用。

8.用vim分割屏显

vim可以在多分割窗口(multi-split-screen)环境下编辑多个文件。想了解有关详情可输入:help usr_08.txt。
要分割屏幕显示多个不同文件,在vi命令提示符后输入:

:split another-file
:vsplit another-file

或者在shell提示符后输入:

$ vi -o file1.txt file2.txt # 水平分割
$ vi -O file1.txt file2.txt # 垂直分割

就可以打开多窗口vi。

$ vimdiff file.txt~ file.txt # 检查file.txt最近的修改情况
$ vimdiff file.en.sgml file.fr.sgml # 检查翻译情况
$ gvimdiff file.txt~ file.txt # 在X下

上述操作可以明确地显示源始文件与备份文件的差别。对SGML文件,它进行标签匹配检查,所以用它来检查翻译结果十分有效。

用CTRL-W命令指定光标移动:
CTRL-W + 扩大窗口
CTRL-W – 缩小窗口
CTRL-W h 移动到窗口左边
CTRL-W j 移动到窗口下边
CTRL-W k 移动到窗口上边
CTRL-W l 移动到窗口右边

下列命令用于滚屏控制:
:set scrollbind
:set noscrollbind

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
Linux技巧
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论