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 编写插件














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值