vim-manual学习

02.8 Finding Help

:help index 

显示所有vim的命令


:help CRTL-A

:help i_CRTL-A

分别找normal / insert mode 中Crtl-A的帮助


:help <UP>

:help i_<UP>

分别找 向上箭头 在 normal / insert mode中的帮助


:help :command

:help command

找 Ex-command / normal 模式下的command命令的帮助


:help func()                    查找的是一个函数func的帮助

:help 'number'               查找一个option的帮助


03. Moveing Around

同一行中移动到某字符

在一行中移动到某一个字符可以使用f或者t。

相应的大写字符表示反方向查找。

而";" ","  分号和逗号可以用来重复刚才查找的动作。


滚屏

Ctrl-U, Ctrl-D  向上向下滚屏

zz, zt, zb 分别把当前行放在屏幕正中,最上,最下


跳跃

一般来讲,当光标移动超出了本行,就称之为跳跃。

:jumps 可以列出跳跃的点。


vim中可以添加命名标记, :ma

然后可以用 'a 跳转到这个标记的地方

:marks 显示哪些地方做了标记


05 Set your settings

05.3 simple mapping

简单来说,就是把一组字符串映射到某个动作

:map \p i{<Esc>ea}<Esc>


用这个命令查看现有的map

:map


05.4 adding a plugin

plugin其实就是vim的脚本。只要將vim的脚本文件放到plugin的目录就算是添加了脚本。

有两种plugin

   global plugin:  全局的

   filetype plugin:  只使用某种文件类型

standard-plugin-list  可以显示现有的plugin列表。


添加plugin的步骤对这两种plugin是一样的

1. 找到格式的plugin脚本文件

2. 放到适当的位置

这差别就是在这个位置上, 全局的位置在~/.vim/plugin, 而filetype的是在~/.vim/ftplugin。

当然还要记得 :filetype plugin on


05.5 help 文档

help文档放在了 ~/.vim/doc下面

:helptags ~/.vim/doc 来生成帮助文档的tag


05.6 option window

:options 可以列出所有的option, 并按照主题分类


恢复默认设置, 在option名字后加上一个&

:set iskeyword&


06. 语法高亮

打开

:syntax enable


配色方案在$VIMRUNTIME/colors/目录下,自己也可以在~/.vim/color/目录下创建配色方案。

在$VIMRUNTIME/syntax/colortest.vim文件中有颜色的样式可以选择


07. 多文件编辑

有两个预订一的mark很有意思

`"    上一次离开文件时候的位置

`.    最后一次编辑时候的位置


07.5  多文件间的拷贝

使用“寄存器”

"fyas     保存一句话到f寄存器

"fp         把寄存器f中的内容复制到本地


10. 大改动


记录并重复命令

qa  ...   开始记录之后的命令到a寄存器

q          结束记录

@a      在当前位置重复记录在a的命令

@@     执行刚才运行记录的命令


编辑寄存器的命令

"ap       把寄存器a中的值输出

修改

"ay$    把编辑后的命令保存到寄存器a


命令的范围

:1,5s/this/that/g       替代的范围是在1到5行

:.s/this/that/g            点表示只作用在当前行

:.,$s/this/that/g         $表示文件的最后一行,表示作用范围是当前行到文件末尾

:%s/this/that/g         %表示整个文件

:?^Chapter?,/^Chapter/s=grey=gary=g     范围是往前Chapter到往后Chapter


全局命令

:g+//+s/foobar/barfoo/g

匹配//所在的行,执行s替代命令。 將foorbar替代为barfoo.


10.9 使用外部程序

!5Gsort                                先將光标移到文件开头,这个命令就可以把头5行排序

:.,.+4!sort                            This is the same as above


:read !ls                               把当前目录文件明写到文件里

:write !wc                             可以计算文件的字数,行数


So using external program could have two types.

The first one is a "filter", which like a pipe, will pass the content in the file to the program,

and then write back the output to file.


While the second type, the file content is not involved.


20.5 command line window

在normal 模式下, q: 可以打开一个窗口,显示了命令的历史。

可以在某一行命令中编辑,回车后就可以执行编辑后的命令。


21. session

这样可以记住你的工作环境,下次打开直接就恢复到上次的工作情况。

:mksession style.vim

:source style.vim


22. Finding the file

22.1 file browser

以前看到过这个东西,不过没想到还有些高级功能没有用到过。


打开

:edit .


打开后会显示当前目录下的文件信息, 下面列几个我觉得有意思的命令

i    调整显示的方式

s   调整排序方式

r    反转排序顺序


22.2  current directory

:pwd      显示当前目录

:cd         change directory


22.3 find a file

在文件中写了 #include "header.h". 然后想要找到这个文件在哪里。

可以將光标停在这个文件名上,然后 gf 可以跳转到这个文件。


其实vim是在当前目录下找的,如果此文件不在当前目录下,就要设置path选项。


22.3 buffer

每打开一个文件就有一个相应的buffer。


:buffers       显示buffer

:ls                尽然也是同样的作用


这个里面会显示已经有的buffer,以及一些属性。

而且每个buffer有一个编号。

:b 2            

就可以打开第二个buffer.


:bdelete 2

就从buffer list中删除第二个。


26 Repeating

26.3

多个文件同时修改

把这些文件都打开

:args *.c

同时操作

:argdo %s/abc/def/ge | update


也可以用 :windo  :bufdo


26.4  using vim from a shell script

对每个.txt文件,做change.vim文件中的操作。

change.vim文件中是vim的命令脚本。

for file in *.txt; do

    vim -e -s $file < change.vim

done


27 Searching commands and patterns

不匹配大小写

:set ignorecase


临时决定要不要匹配大小写

/\cword         不匹配大小写

/\CWord        匹配大小写


27.3  offset

光标停在搜索到字符串下面某行

/string/2                      找到string, 然后光标停在之后的两行

找到单词,再往后走

/string/e+2                  找到string, 然后走到 g 再往后两个字符


27.4 matching multiple times

* 匹配 0 或 多次

/a*                     匹配a,  0 或 多次

/ ab *              匹配ab, 0或多次


+ 匹配 1 或 多次

/ab\+                匹配 ab, abb, abbb


= 匹配 0 或 1 次

/folders\=        匹配 folder 或者  folders


{} 设定匹配次数

/ab\{3,5}         匹配 abbb, abbbb, abbbbb

/ab\{3}            只匹配 abbb


27.5 Character ranges

    item    matches            equivalent ~
    \d    digit            [0-9]
    \D    non-digit        [^0-9]
    \x    hex digit        [0-9a-fA-F]
    \X    non-hex digit        [^0-9a-fA-F]
    \s    white space        [     ]     (<Tab> and <Space>)
    \S    non-white characters    [^     ]     (not <Tab> and <Space>)
    \l    lowercase alpha        [a-z]
    \L    non-lowercase alpha    [^a-z]
    \u    uppercase alpha        [A-Z]
    \U    non-uppercase alpha    [^A-Z]

更多的range, 可以查help


 40.2 自定义命令

定义一个命令删除一行. 注意,自定义的命令要以大写字母开头

:command DeleteFirst 1delete


查看都有哪些自定义的命令

:command


如果觉得命令定义不准确可以重新定义

:command! DeleteFirst ggd

这样就重新定义了DeleteFirst这个命令


如果想要删除某个自定义的命令

:delcommand DelteFirst


或者你突然不想要所有的自定义命令了

:comclear


40.3 Autocommand

就是在某些事件下,自动执行的机制


显示所有的自动命令

:autocmd


显示某个事件的自动命令

:autocmd BufNewFile


显示某个类型文件的自动命令

:autocmd * *.c


41 Vim脚本

第一个脚本

let i = 1
while i < 5
    echo "count is" i
    let i += 1
endwhile


41.2 变量

显示定义的变量

:let


定义变量

:let i = 1


定义局部变量, 不过这个范围也是本脚本的

:let s:count = 1


删除变量

:unlet s:count

神奇的事情是,一个脚本中的局部变量在这个脚本执行完之后不会自动释放。

下次再执行这个脚本的时候,还是可以读到。


41.6 使用函数

在这个section中,已经按照分类列出了常用的函数。

要更详细的解释可以

:help functions


41.7 自定义函数

函数名必须以大写字母开头。


41.11 编写插件














不要试图从本手册中去获取什么知识, 使用Vim更多的是一种技能而 不是一种知识, Vim学习需要的更多的不是头脑而是双手, 经常按书中 的指示进行示例性的操作, 在学习Vim众多精致的技巧时, 不要贪图一下 子全都掌握, 最好是看一条技巧后, 马上在编辑器上进行操作, 这样在以 后实际的编辑操作时你的手指就会建立一种自然的反应而不是由头脑来搜 索该使用哪一条操作技巧. 建议读者不动手来不读书. 如果手边没有一 个合适的Vim编辑器环境可供操练, 那么建议读者还是不要在这里浪费时 间. 如果读者是在气温比较低的条件下阅读此书从而增加了你动手的惰性 时, 也请不要浪费时间, 这会严重影响学习的效果. 虽然本书鼓励读者多动手, 但也绝非说一点不要动脑, 相反, Vim中 多达几百个的命名与操作方式有它自己的规律可循, 在你的手指能对要完 成的编辑任务条件反射之前, 最好还是由头脑做一点辅助. 经常总结自己 最经常进行的操作. 为这些操作找出最简练的办法来, 在每学习一条新的 操作之前与自己以前的编辑经验比较一下, 找出节省你敲击键盘次数的捷 径来. 是提升Vim经验值的不二法门. 其实, Vim与其它编辑器一个很大的区别在于, 它可以完成复杂的编 辑与格式化功能. 在这些领域还少有软件能与它分庭抗礼, 但是, 与所有 的灵活性的代价一样, 你需要用自己的双手来实现它. 这在事实上造成 了用户在使用Vim过程中的几个自然阶段. 一开始是notepad, word, edit垄断你的大脑, 这些东西根深蒂固, 挥之不去. Vim 的使用对你而言是一场噩梦, 它降低而不是提高了你的 工作效率. 对三种工作模式的不解甚至使你认为它是一个充满BUG或者至 少是一个古怪的与当今友好用户界面设计严重脱节的软件. 事实上, 这些 起初看起来古怪的特性是Vim(或者是vi)的作者和它的用户们在自己漫长 的文字编辑和程序设计生涯中总结出来的最快速最实在的操作, 在几乎等 于计算机本身历史的成长期中, 历经无数严厉苛刻的计算机用户的批评与 检验, 无用的特性或糟糕的设计在Vim用户群面前根本就没有生存的余地. Vim细心而谨慎的作者们也不允许自己精心设计的软件里有这样的东西. 第二个阶段你开始熟悉一些基本的操作, 这些操作足以应付你日常 的工作, 你使用这些操作时根本就不假思索. 但这些阶段你仍然很少去 碰Vim那晦涩的在线帮助文档. 它在你心里只是notepad, edit一个勉强 合格的替代品. 第三个阶段, 精益求精的你不满足于无休无止的简单操作, 冗长而 乏味, 有没有更好的办法可以驭繁于简? 于是, 从UNIX参考手册上, 从 同事口中, 你渐渐叩开:help xxx的大门. 开始探索里面充满魔力的咒 语. 从杂耍般的带有表演性质的技巧开始, 这些技巧令人眩目但少有实 用性. 不过这却是你拥有魔力的第一步. 接下来, 你开始认识到这些 咒语背后的真经, 开始偷偷修改一些奇怪的符号, 于是, 奇迹产生了, 魔力不但仍然有效, 而且真实地作用于你现实中的文字编辑生活. 你 2 3 前言 在第二阶段由于熟练操作而尘封已久的大脑突然开始运作. 但这个过 程并非是达到某个临界状态后的一路坦途, 不断的挫折, 新的挑战, 看 似Mission Impossible的任务. 永远伴随着任何一个人的任何一个学习 过程. 这是你使用Vim的最后一个阶段, 也是最漫长最有挑战性同时也 充满无数奇趣的阶段. 这个阶段里你开始定制一些希奇古怪的颜色. 开始以敲入i18n来输入internationalization, 开始让Vim替你纠正经常 把the 误敲成teh的毛病, 开始让Vim与系统里各种精悍而强大的兄弟工具 进行合作, 开始写越来越长的script, 每一次的文本编辑体验都妙趣横 生高潮跌起. 你的头脑因为要用Vim完成高效的编辑而高度紧张. 你开始 在Vim邮件列表里提一些确实是问题的问题. 也开始发现你在Vim里做了以 前在SHELL里做的几乎一切事. 事实上你已经成了一个无可救药的Vim骨 灰级玩家.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值