目录介绍:
为何Emacs 和 Vim 被称为两大神器
追求独步天下的高手和低手们争着一睹它们的风采,可看到它们朴素单薄的界面后,不禁心下怀疑:这就是神器吗?甚至有人生了轻视之心。肤浅的人嗤之以鼻,说:什么年代了,还抱着这么老土的玩意不放,真他妈Geek!同学,请冷静下来,听我说:它们的确够老了,都几十年的寿命了,但你想想为什么,为什么这么古老的编辑器,却有越来越多的人皈依它们。Windows下用UltraEdit和Editplus的人质问:它们到底比UltraEdit和Editplus好在哪里?我说:不可同日而语。连UltraEdit和EditPlus都没用过的同学问:它们就相当于Linux上的 Notepad吧?我说:请你从我的眼前消失。一些人勇敢地拾起了Vim或Emacs,却发现学习曲线陡峭而漫长,于是在没发现它们的强大之前就放弃了,说:太难用了,把键盘当鼠标用的烂玩意,有什么好的?还是有一些人留下来了,坚定地守护着这两大神器。一些说葡萄太酸的人想离开又不甘心,总是问:它们到底神在哪里啊?我不禁想起了李宗盛的几句歌词:: 有人问我你究竟是哪里好,这么多年我还忘不掉?春风再美也比不上你的笑,没见过你的人不会明了。 也许你不会明了,我还是要努力讲一讲。1. 无敌的可扩展性1.1 可扩展性给了软件强大的生命曾几何时,Windows用户对软件的可扩展性没有概念,他们只能对他们使用的软件进行非常有限的定制。扩展软件的权利保留在软件开发者手中。软件的使用者如果想要新的功能和特性,只能等待软件的升级。有能力的用户等不及了,为了添加自己想要的功能,从0开始写了一款新的软件。就这样,新的功能意味着新的软件,Windows下的软件前赴后继,迅速地更新换代着。因此, Windows下的软件都很短命。Linux和开源软件渐渐流行起来,人们才发现:可扩展性才能给软件强大的生命。在MS的VS横行的今天,Eclipse为什么被评为最好的IDE?就是因为它在IDE中最具可扩展性。在IE几乎一统天下的时候,为什么Firefox能夺走越来越多的用户,也是因为它的可扩展性。提供了良好的扩展接口,用户自然会写出各种各样的插件,来满足用户自己形形色色的要求。这样,软件在用户的推动下自然变得强大了。Emacs和Vim没有被时代淘汰,反而越发强大,也正是因为在数不清的编辑器中,他们具有无可匹敌的可扩展性。1.2 Emacs是伪装成编辑器的操作系统有句夸张的话说:Emacs是伪装成编辑器的操作系统。细细想来,这句话并不夸张。Emacs其实是个Lisp的解释器,因此可以用Lisp灵活地扩展。 Lisp是什么东西,这同样是种很有生命力的编程语言。在C语言还没有发明的年代,MIT的人工智能实验室写ITS操作系统时,一部分用的是汇编语言,还有一部分就是用的Lisp。现在,Lisp仍在人工智能研究领域广泛使用着。有这么牛逼的扩展语言,注定Emacs向着无所不能的方向发展。渐渐地,人们用Emacs不再限于写程序,写文档,而且在Emacs里管理文件系统,运行终端,收邮件,上网,听音乐……,真是一发不可收拾。甚至,有人用Emacs控制咖啡机煮咖啡。这种大而全的扩展,背离了“一个程序只做一件事并做好它”的 Unix哲学,被Unix的忠诚用户所诟病。可是真的背离了吗? Emacs说过自己是一个编辑器吗?正是因为Emacs的无敌的可扩展性,人们才分不清Emacs到底是不是一个编辑器了。但,就是有人喜欢这种All-in-One的哲学,喜欢在Emacs中完成每件事。所以才会有人写《生活在Emacs中》,所以, Emacs才会成为一种信仰。1.3 Vim不只是ViVim是Vi最受欢迎的变种之一,除了继承了Vi迅捷的编辑方式, Vim的功能已经比原始的Vi强大得多。这也得益于它可以用Vim脚本无限地扩展。 Vim.org 上已经有数千个脚本了,给Vim增加各种各样的特性和功能。为了证明Vim的可扩展性不输于Emacs,也有用户写了在Vim中玩游戏、运行Shell、和集成GDB在Vim内部调试的插件。客观地讲,Vim的脚本语言与Emacs的ELisp相比,略显逊色,但这丝毫不妨碍它把Vim扩展成非常优秀的编辑器。说到底,Vim的前身Vi和Emacs的设计采用了不同的哲学, Vi更符合Unix传统,它通过管道机制和系统内各种积木工具打交道,它讲究的是和系统内的工具程序协作来完成用户的任务。和Emacs相比,它的定位很明确,就是要做一个强大的编辑器。因此Vim的绝大部分扩展,都是为了更好地完成编辑文本的任务。海纳百川,有容乃大。Emacs和Vim通过别的编辑器无法比肩的可扩展性,不断吸收广大用户的智慧,是它们能成为“神器”的原因之一。2. 特立独行的魅力2.1 可扩展性让你倾注了灵魂一旦你意识到Vim或Emacs的强大,你就踏上了不停发掘它们潜力的漫漫长路。你不停地改进自己的配置文件,你不停地搜索更好的插件,甚至有一天你开始动手写自己的插件。就像剑客保养自己的剑一样,你也甘心花时间提升你的Vim或Emacs。经年累月,不知不觉,你已经在那把剑上倾注了你的灵魂。2.2 独特的操作方式让你中了毒Emacs和Vim有着迥异的操作方式,却成了Unix/Linux世界中两种代表性的操作方式,有些软件的操作方式类似Vi,而有些软件的方式类似Emacs,甚至有些软件提供了Vi的键绑定和Emacs的键绑定让你选择。而无论哪种操作方式,对Windows用户来说都是古怪的。虽说古怪,多少代人也验证了这两种操作方式的高效。Emacs号称Ctrl到死的编辑器。其实它几乎用了所有的辅助键,听说过没有,Emacs = Esc + Meta + Alt + Ctrl + Shift。所以高德纳大师说操作Emacs,就像弹奏管风琴。 Emacs使用非常多的组合按键,这大概也是它高效于其它无模式编辑器的原因之一。你也可以定义自己的组合键序列,调用自己写的lisp函数,完成自己想要的功能。Vi一向是以快速的文本编辑闻名于世的。它的按键更简洁,通常是单个字符按键,就实现某种操作。但这是以有模式为代价的。你要不停地按Esc在从它的插入模式返回Normal模式。客观得讲,在文本编辑方面, Vim比Emacs高效,因为它提供了一些Emacs没有对应功能的操作来辅助高效的文本编辑。但它的模式切换也让一些人受不了,于是那些人选择了 Emacs。不管你选择了Vim还是Emacs,你都要为习惯它们独特的操作方式而努力,这是一个技艺积累的过程。当你习惯了Vim或Emacs,你会有欲罢不能的感觉,你希望用它们完成尽可能多的任务,因为你再用别的编辑器也已经不习惯。用Vim或Emacs就像吸食毒品,慢慢地就会上瘾。它们会带给你渐渐强烈的快感,但你也向它们献出了自己的灵魂。这时,你只能称它们为神器。3. 黑客的编辑器Vim的前身Vi的作者Bill Joy和Emacs的作者Richard Stallman 都是那个时代著名的黑客,所以这两款编辑器一开始面向的主要用户就是写程序的人,现在仍然是。它们对编程加入了越来越多的支持,如语法高亮、智能缩进、关键字补全甚至集成调试。也有越来越多的程序员从IDE转向了Vim和Emacs。用Vim和Emacs编程到底有什么好处?我想首先是它们高效的编辑操作会提高你的编程效率。其次你可以用它们完成各种语言的编程,所谓一剑在手,夫复何求。你不用再因为编程语言不同去学习不同的IDE的使用,那些庞大的IDE的升级换代也与你再不相关,你把精力用于学习编程语言本身就好了。听说Google和微软内部开发也都不用IDE的,他们也会用Emacs或Vim。因为我写的程序不多,还不能深入体会用Vim或Emacs开发程序的乐趣。我只是觉得这很酷,你看,Linux之父Linus多年来用的是一款 MicroEmacs,它比GNU Emacs或XEmacs少许多功能,但Linus就是用它在维护Linux。 微软的大牛Don Box,Com之父,一直用Emacs,他说谁也不能夺走他的编辑器。他还在网上放了一段他用Emacs写C#程序的视频。编程大师们的选择,也是Emacs和Vim被追捧为神器的原因之一。4. 神器引发的圣战Vim用户和Emacs用户有着旗鼓相当的品位,应该互相欣赏才对。现实却是,忠诚于Vim的用户和忠诚于Emacs的用户互不相容,常常没完没了地打口水仗。Emacs用户说Vim的操作方式单一而古怪, Vim用户说Emacs体积庞大,启动缓慢。很有点一山不容二虎的意思,大概因为二者都处于神器的高度,才会斗争不断吧。也可能是因为二者截然不同的设计哲学吸引的用户在价值观上也互不认同。
想学vim,是到网络上找教程还是买书学比较好?
这是我学习vim过程中所作的笔记:
zm 关闭折叠
zM 关闭所有
zr 打开
zR 打开所有
zc 折叠当前行
zo 打开当前折叠
zd 删除折叠
zD 删除所有折叠
:loadview 载入折叠信息
:mkview 保存折叠信息
zo 展开折叠
zc 折叠
zd 删除折叠
:n,mfo 对n到m行进行折叠
{i}gt 切换到第i个标签页
tabclose i 关闭第i个标签页, i从1开始
ctrl+v ctrl+m 输入^M
x 删除一个字符
s 删除一个字符并进入插入模式
S 删除一行并进入插入模式
w 前进一个单词
后退一个单词
gj 当设置wrap时, 移动到下一个显示行
gk 当设置wrap时, 移动到上一个显示行
:tabm n 将当前标签页移动到第n个位置, n从0开始, 若不指定n, 则移动到最右边的位置
/\/ 搜索正斜杆, 需使用反斜杆转码
:source ~/.vimrc 重新载入配置文件
d$ 从光标开始的地方一直删除到行的末尾
:%s/;/\r/g 在每个封号后添加换行符
J 消除光标所在行与下一行之间的换行符
cw 删除一个单词并进入插入模式
dw 删除一个单词
vim无需按快捷键自动补全: 下载安装 autocomplpop插件, 具体google
$表示文件的末尾
:sav 另存为
:%s/str1/str2/g 将全部的str1替换为str2
:%s/str1/str2/gc 将全部的str1替换为str2,每当替换时便请求确认
:m,ns/str1/str2/g 将第m行到n行的str1替换为str2
:m,ns/str1/str2/ 将第m行到n行的第一个str1替换为str2
:e 打开文件
:tabe 在新标签打开文件
:tabfirst 切换到第一个标签
:tablast 切换到最后一个标签
:tabnm 切换到从左至右数第m个标签
:tabpm 切换到从右至左数第m个标签
gt 切换到下一标签
gT 切换到上一标签
tabo 关闭除当前标签页之外的全部标签页
v 开始选择文体,再按一次v结束选择
ctrl+w s 水平分割
ctrl+w v 垂直分割
ctrl+w w 切换窗口
ctrl+w h j k l 分别向左, 下, 上, 右切换窗口
ctrl+w q 关闭窗口
gg=G 对第一行到最后一行进行缩进整理
nG=mG 对第n行到第m行的代码进行缩进整理
% 跳到与之匹配的各种括号
`` (1左边的键)将光标移到之前的位置
$ 将光标移到行末
0 将光标移到行首
:= 查看本文件的行数
ggyG 复制全文
ggdG 删除全文
. 重复上个命令
:m,ns/^/string/ 给第m行至第n行的行首添加字符串string
:m,ns#^#//# 给第m行到第n行添加C语言的单行注释标志//
Ctrl+v 区块选择
:sh 暂时回到shell环境
:qa 关闭全部窗口退出vim
:wa 保存全部已打开的文件
:wqa 保存全部已打开的文件并退出vim
ctrl+x ctrl+o 安装javacomplete插件后列出成员快捷键
ctrl+x ctrl+u 安装vjde插件后列出成员快捷键
我当初刚开始用vim时非常不习惯, 但是想到作为linx中最受欢迎的代码编辑器, 应该有它的道理. 于是耐着性子用vim来编写代码. 我并没有刻意去记vim的命令, 用多了, 自然就记住了, 刚开始不知道命令不要紧, 一遇到不会的, 马上上网找资料, vim作为一款老牌软件, 网上的资料非常丰富, 你每学会一个命令, 你的vim水平便上升了一点.
怎样学习 Vim 脚本编程
1、学习vim的使用方法,vim作为编辑器之神,最为出色的莫过于各种便利的快捷键,而学习vim等价于学习这些快捷键,以下是我实际使用中经常使用的。
模式:i/s进入insert模式,此模式下可以像notepad一样使用
esc进入命令模式
v/V进入visual模式
复制粘贴:
命令模式下yy复制一行,yny复制n行
:n,m y复制第n到m行
命令模式下p粘贴
剪切:
命令模式下c剪切一行
移动
:n,m mo r 剪切第n到m行到r行
附上vim的配置文件:
setlocal noswapfile
set bufhidden=hide
set nocompatible
syntax on
"colorscheme evening
set number
set cursorline
set ruler
set shiftwidth=4
set softtabstop=4
set tabstop=4
set nobackup
set autochdir
filetype plugin indent on
set backupcopy=yes
set ignorecase smartcase
set incsearch
set hlsearch
set noerrorbells
set novisualbell
set t_vb=
set showmatch
set matchtime=2
set magic
set hidden
set smartindent
set backspace=indent,eol,start
set cmdheight=1
set laststatus=2
set statusline=\ %%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{fileformat}\ %{encoding}\ Ln\ %l,\ Col\ %c/%L%)
set foldenable
set foldmethod=syntax
set foldcolumn=0
setlocal foldlevel=1
nnoremap space @=((foldclosed(line('.')) 0) ? 'zc' : 'zo')CR
脚本编程:选择一种脚本,搜索教程。
vi和vim怎么学更高效
vim 的命令非常多, 没必要全部掌握, 开始的时候可以把一些常用的命令记一下, 并且要多加的练习使用, 熟能生巧
使用h,j,k,l比使用箭头来上下左右的移动更快(前提是你要使用熟练)
另外还有很多让移动很快的命令
fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。
tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)
Fx:和 fx 类似,不过是往回找。使用 , 来重复上一个F命令。
Tx:和 tx 类似,不过是往回移动到 x 的右边一个位置。b:光标往前移动一个词。
w:光标往后移动一个词。
0:移动光标到当前行首。(是数字0)
^:移动光标到当前行的第一个字母位置。
$:移动光标到行尾。
):移动光标到下一个句子。
( :移动光标到上一个句子。
Ctrl-f:向下移动一屏。
Ctrl-d:向下移动半屏。
Ctrl-b:向上移动一屏。
Ctrl-u:向上移动半屏。
G:到文件尾
numG:移动光标到指定的行(num)。(比如 10G 就是到第 10 行)
gg:到文件首H:移动光标到屏幕上面
M:移动光标到屏幕中间
L:移动光标到屏幕下面
使用m在合适的地方打上标签, 可以实现快速的跳转到想要去的地方(堪称神器)
m{a-z}:在当前光标的位置标记一个书签,名字为 a-z 的单个字母。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。
`a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。
`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。
%:在成对的括号等符号间移动,比如成对的 [ ] , { }, ( ) 之间。将光标放到任意符号上,然后通过 % 来移动到和这个符号匹配的符号上,% 还可以正确的识别括号的嵌套层数,总是移动到真正匹配的位置上。因此这个命令在编辑程序代码的时候非常有用,可以让你方便的在一段代码的头尾间移动。
还有几种插入模式的进入方法也很实用
i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
拷贝, 剪切,
dd:剪切当前行。
yy:拷贝当前行。
cc:剪切当前行并且进入插入模式。
D:剪切从光标位置到行尾到剪贴板。
Y:拷贝当前行。
C:和 D 类似,最后进入插入模式。
x:剪切当前字符到剪贴板。
s:和x类似,不过最后进入插入模式。
初学者可以怎么入手vim
你最好是先看下鸟哥的linux私房菜基础版,那上班讲的很清楚。
出入vim,肯定是先熟悉他的指令和用法,一共有哪些类型的指令,然后就是练习了,
如果有鸟哥的书的话,可以放在手边,随时查看
网友评论
最新评论
删除折叠:n,mfo 对n到m行进行折叠{i}gt 切换
关闭折叠zM 关闭所有zr 打开zR
; 来重复你的上一个 f 命令。tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)Fx:和 fx 类似,不过是往回找。使用 , 来重复上一个F命令。T
动一个词。w:光标往后移动一个词。0:移动光标到当前行首。(是数字0)^:移动光标到当前行的第一个字母位置。$:移动光标到行尾。):移动光标到下一个句子。( :移动光标到上一个句子。Ctrl-f:向下移动一屏。Ctrl-d