标签归档:效率

一起来说 Vim 语

我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式、插入模式、命令模式等),如果你还不了解,请先阅读 这里。现在就让我们一起来学习一下 Vim 语吧。

动词

动词代表了我们打算对文本进行什么样的操作。例如:

  • d 表示删除(delete)
  • r 表示替换(replace)
  • c 表示修改(change)
  • y 表示复制(yank)
  • v 表示选取(visual select)

名词

名词代表了我们即将处理的文本。Vim 中有一个专门的术语叫做文本对象(text object),下面是一些文本对象的示例:

  • w 表示一个单词(word)
  • s 表示一个句子(sentence)
  • p 表示一个段落(paragraph)
  • t 表示一个 HTML 标签(tag)
  • 引号或者各种括号所包含的文本称作一个文本块。

介词

介词界定了待编辑文本的范围或者位置。例如:

  • i 表示“在…之内”(inside)
  • a 表示“环绕…”(around)
  • t 表示“到…位置前”(to)
  • f 表示“到…位置上”(forward)

下面是几个有关范围的示意图,你们感受一下:

Prepositions

组词为句

有了这些基本的语言元素,我们就可以着手构造一些简单的命令了。文本编辑命令的基本语法如下:

动词 介词 名词

下面是一些例子(如果熟悉了上面的概念,你将会看到这些例子非常容易理解),请亲自在 Vim 中试验一番。

# 删除一个段落: delete inside paragraph
dip

# 选取一个句子: visual select inside sentence
vis

# 修改一个单词: change inside word
ciw

# 修改一个单词: change around word
caw

# 删除文本直到字符“x”(不包括字符“x”): delete to x
dtx

# 删除文本直到字符“x”(包括字符“x”): delete forward x
dfx

数词

数词指定了待编辑文本对象的数量,从这个角度而言,数词也可以看作是一种介词。引入数词之后,文本编辑命令的语法就升级成了下面这样:

动词 介词/数词 名词

下面是几个例子:

# 修改三个单词:change three words
c3w

# 删除两个单词:delete two words
d2w

另外,数词也可以修饰动词,表示将操作执行 n 次。于是,我们又有了下面的语法:

数词 动词 名词

请看示例:

# 两次删除单词(等价于删除两个单词): twice delete word
2dw

# 三次删除字符(等价于删除三个字符):three times delete character
3x

怎么样,是不是很容易理解?

emacs 一文入门

引言

一直是用vim的,之前虽然知道有emacs,也知道emacs和vim之争,印象中只有一句话:”vim是编辑器之神,emacs是神的编辑器。” 那会试了下emacs,不知道怎么关闭,直接强关的终端。 看了《黑客与画家》后,看作者对lisp的推崇,产生了点兴趣,百科了下。发现说法看得我晕了,当时放弃了。之后又看到本书 《程序员的呐喊》,一个google工程师写的。也是比较推荐lisp。然后各种搜索看大家的看法。兴趣又调了起来。于是开始学习, 发现教程都是以emacs开始的,于是也学习了emacs,折腾了一天一夜,终于觉得可以开始实际用起来了。于是开始写这个笔记了。

阅读一年成为emacs高手

安装emacs配置

犯了个错误,用了很久的vim,为了安装evil花了点时间,其实配置里面已经有了。 平时会写php,所以搞了个 php-mode, 但是系统函数的自动补没有弄好。 大师的配置

阅读了一下emacs的使用手册。C-h t即可看手册,C-x C-c关闭emacs。(C在mac上是control,windows是ctrl?),懒得看手册的可以参考Emacs入门系列:3分钟学会Emacs基本操作

实践准备

org-mode 阅读

为了编辑做准备。平时用的印象笔记和wordpress都可以用这个格式统一管理。同时 也可以管理自己的todo list.org简明使用教程

安装evernote-mode 平时都是用印象笔记管理

evernote-mode安装的有两篇文章可以参考。evernote-mode参考1 在emacs中使用evernote

一是一直安装不成功,报错,权限受限。后来终于发现是mac的sip机制。

找到篇文章解释了这个问题,怎么关闭sip。 不过我没有选择关闭,而是brew install了一个ruby, path环境变量指向了新安装的ruby。

还是报错,并且错误一闪而过。状态栏一直有其它插件的状态更新。

想起来C-x C-b 可以选报buffer,终于找到错误,原来是evernote-mode.el写死了路径,我因为ruby路径不一样, 按实际的修改就可以了。

然后还是报错,gem install gdbm, gem install ffi, brew install gdbm 才好

安装org2blog,发表wordpress

其它待研究的

多窗口编辑,buffer

w3m怎么玩

怎么收发邮件

怎么远程登陆,是否可以记住密码

宏怎么玩

怎么自定义插件。

后记

学习的方法只有一个,提需求,然后想办法满足自己的需求。 推荐书箱: Learning GNU emacs, 作者:Eric Raymond 计算机程序的构造和解释,作者:Julie Sussman, 程序员可以看下,说是里面用lisp做的示例。 lisp 语言,作者:陈光喜

 

vim文章收集

这个博主的文章可以学习下。vim常用的编辑功能。
http://blog.sina.com.cn/s/articlelist_1188742767_3_1.html

有人有汇总各种教程
http://www.iplaysoft.com/vim.html

无题
为什么vim使用hjkl做为方向健

为什么 Vim 使用 HJKL 键作为方向键

Vim使用笔记
http://www.cnblogs.com/jiqingwu/archive/2012/06/14/vim_notes.html

vim练级攻略

简明 Vim 练级攻略

打造成ide
http://blog.csdn.net/fbfsber008/article/details/7055842


自定义代码片段

Vim(2)

  1. vim常用功能

vim的常用功能,包括块的选择,复制,多文件的编辑,多窗口等功能。

  1. vim块选择

块选择是将文档中的一块可以选择复制,粘贴,不用整行的处理。
按下 v , V , Ctrl+v 时进入块选择。
在左下角出现

  • — VISUAL LINE —

v : 字符选择,光标经过的地方反白选择
V : 行选择,光标经过的整行反白选择
Ctrl+v : 块选择,长方形的方式选择
y :将选中的地方复制
d :将选中的地方删除

将 y 复制的数据,找到适当的位置按 p 进行粘贴。

  1. 多文件编辑

多文件编辑是vim一次打开多个文件,这些文件可以方便的复制,粘贴,否则用两个vim的话,只能用鼠标来复制,粘贴。
打开多个文件:

  • vim test1 test2

:n :编辑下个文件
:N : 编辑上个文件
:files : 列出这个vim打开的所有文件

  • $ vim test test1
  • :files
  • 1 %a= “test” line 1
  • 2 # “test1” line 2

  • 4yy #复制4行
  • :n #打开另一个文件
  • p #粘贴
  • :q! #退出

  • 多窗口

vim的多窗口展示非常方便的显示多个文件,两个窗口数据可以yy复制,粘贴。
:sp [filename] :打开新窗口,filename可以为空,为空打开当前文件
Ctrl+w+j :移动下方窗口,先按Ctrl+w放开,然后 j 或者↓键
Ctrl+w+k :移动上方窗口
Ctrl+w+q :退出文件,同 :q

5、列编辑模式
删除列
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.d 删除。

插入列
插入操作的话知识稍有区别。例如我们在每一行前都插入”() “:
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.SHIFT+i(I) 输入要插入的内容。
4.ESC 按两次,会在每行的选定的区域出现插入的内容。

vim(1)

【基础篇】
http://blog.csdn.net/yonggang7/article/details/38148075

  1. vim的模式

vim分为三种模式:一般模式,编辑模式,命令行模式。

  1. 一般模式

用vim打开一个文件就进入一般模式,在该模式可以删除字符和行,复制粘贴文件数据。

2.1 移动光标

h: ← 向左一个字符
j: ↓ 向下一个字符
k: ↑ 向上一个字符
l: → 向右一个字符
上面四个可与数字组合使用 10j, 向下10个字符, 20l:向右20个字符。
Ctrl + f 向下翻一页
Ctrl + b 向上一页
Ctrl + d 向下半页
Ctrl + u 向上半页
n+空格 如 5空格 向右移动5个字符
0 移动行首
$ 移动行末尾
H 移动到屏幕最上方第一个字符
M 移动到屏幕中间第一个字符
L 移动到屏幕最下方第一个字符
G 移动到文件末尾
nG n为数字,移动到第n行
gg 移动到文件开始
n+Enter n为数字, 向下移动n行

2.2 查找和替换

/word 向下查找word
?word 向上查找word
n 重复前一次查找
N 重复前一次查找,反向进行
:n1,n2s/word1/word2/g n1,n2为数字,从n1到n2行,将word1替换为word2
:1,$s/word1/word2/g 从第一行到最后一行,将word1替换为word2
:1,$s/word1/word2/gc 替换前确认confirm是否需要替换。

2.3 删除

x 向后删除一个字符
X [Backspace] 向前删除一个字符
nx n为数字,向后删除n个字符
dd 删除当前行
ndd n为数字,删除n行
d1G 删除光标所在到第一行
dG 删除光标所在到最后一行
d$ 删除光标所在到行末尾字符
d0 删除光标所在到行首字符

2.4 复制和粘贴

yy 复制当前行
nyy n为数字,复制向下的n行
y1G 复制从第一行到当前行
yG 复制当前行到最后一行
y0 复制从行首到光标之间的字符
y$ 复制光标所在到行尾之间的字符
p 粘贴到下一行
P 粘贴到上一行
J 将当前行和下一行合并成一行

u 还原上次操作, 复原
Ctrl+r 重做上一个操作, 重做
. 小数点,重复前一个操作

  1. 编辑模式

要编辑文字,按 i, a 等进入, 在左下角出现 INSERT 或 REPLACE 字符。
进入编辑模式命令:
i 光标所在处插入
I 当前行第一个非空字符出插入
a 光标下一个字符开始
A 所在行最后一个字符开始插入
o 下一行开始
O 上一行开始
r 替换光标所在字符,值执行一次
R 一直替换光标所在字符,直到Esc退出

[Esc] Ctrl+c 退出编辑模式,进入一般模式

  1. 命令行模式

在一般模式下,输入 : , /, ? ,三个中一个,光标会到最下面,输入写相应命令。
主要有文件保存,退出vim, 设置vim环境变量。
:w 保存文件
:w! 强制保存
:q 退出vim
:q! 退出不保存文件
:wq 退出并保存文件
ZZ 若文件没改动,退出不保存,若改动,退出并保存
:w filename 文件另存为filename
:r filename 读入另一个文件内容,并追加在光标下一行
:n1,n2 w filename n1,到n2 行保存到另一个文件
:! command 执行命令, 如 “:! ls -l” 列出当前目录文件

下面这篇vim语讲的好形象,推荐阅读。
http://www.jianshu.com/p/a361ce8c97bc#rd?sukey=fc78a68049a14bb23fe32c0df282f31736d7a0bae06c52ee32d3e10e74afb8e4a7ee7b7b416ed67b2d30df151dc90a05

大概介绍如下:
动词
d 表示删除(delete)
r 表示替换(replace)
c 表示修改(change)
y 表示复制(yank)
v 表示选取(visual select)

名语
w 表示一个单词(word)
s 表示一个句子(sentence)
p 表示一个段落(paragraph)
t 表示一个html标签(tag)

介词
i 表示“在…之内” (inside)
a 表示”环绕…”(around)
t 表示”到…位置前”(to)
f表示”到…位置上” (forward)

组词有名有:
1、动词 介词 名词

dip(delete inside paragraph 删除一个段落)
vis (visual select inside sentence 选择一个句子)
2、动词 介词/数词 名词

d2w (delete 2 word 删除两个单词)

3、数词 动词 名词

3dw ( 3 delete word 3次删除单词=删除3个单词)

【经验篇】
1、复制粘贴防止 自动缩进
方法有2
a、set fo-=r set noautoindent
粘贴完后,记得恢复
set fo=r set autoindent
b、set paste 完后,恢复用 set nopaste
http://www.cnblogs.com/end/archive/2012/06/01/2531147.html
可以备份下自己常用的配置。把习惯带着走。

vim自动缩进

自动注释和自动缩进很管用.
但是从网上复制的代码时,反而会变得乱七八糟.
这时候就要临时去掉自动注释和自动缩进了.
用以下命令:
set fo-=r
set noautoindent
恢复用
set fo=r
set autoindent

 

还有一种办法:

复制之前 键入以下命令

set paste

复制完之后再恢复

set nopaste

这样也不会自动缩进和加注释。

 

另外附一个小技巧:

有时想把vim的内容复制粘贴出来,但是有行号和末尾的$符号,很恼火。

办法是:

:set nonu;//去掉行号

:set listchars= //这是去掉$符号