vi vim 是两个东西. 特别是你升级 vim 的时候.

看版本 : vi -version 是死活不会变的因为你更新的是 vim vim -version 才对.

HTML/JS混排缩进改善 Bundle “pangloss/vim-javascript”

Vim必装插件

语法及高亮 我选择的插件有 Bundle ‘JavaScript-syntax’ Bundle ‘jQuery’ Bundle ‘othree/html5.vim’ Bundle ‘groenewege/vim-less’ Bundle ‘Markdown’ Bundle ‘Markdown-syntax’ Bundle ‘php.vim-html-enhanced’ 主要支持了JavaScript/jQuery/HTML5/LESS/Markdown

代码自动补全 代码自动补全是否优秀是评判一个IDE的重要标准,之前一直在使用ctag+supertab作为自动补全,但是ctag的补全必须借助不断更新tag文件,不够智能。所以在看到了neocomplcache后,毫不犹豫的改用了neocomplcache作为新的Vim自动补全插件。 neocomplcache可以做到: · 根据文件类型补全语言内置元素 · 根据include关系自动寻找上下文补全要素 · 自动生成缓存,优先从缓存中查找
Bundle ‘Shougo/neocomplcache’

另外一个非常有助于提高效率的插件是snipMate,可以根据不同语言自动补全代码段,比如在php下写for+Tab键,就会自动生成这样一段代码 for ($i = 0; $i < count; $i++) { // code… } 注意这里使用的snipMate和neocomplcache都是官方版本的修改版。 Bundle “MarcWeber/vim-addon-mw-utils” Bundle “tomtom/tlib_vim” Bundle “snipmate-snippets” Bundle “garbas/vim-snipmate”

需要注意的是,Vim 插件名称可能存在重名的情况,这时候就需要在插件后面加上作者的姓氏, 比如 Bundle ‘Javascript-Indentation’ ,而遇到插件名有空格和斜杠的话, 需要将空格和斜杠替换为 - 。 执行 BundleInstall 即可完成安装,如果出现错误提示,多半是名称有问题, 去 github 和 vim.org 搜索一下吧。

repo 软件仓库的配置文件


YouCompleteMe

代码补全插件. Github Website

安装YouCompleteMe

  1. .vimrc中加入Bundle 'Valloric/YouCompleteMe' \2. - vim - :BundleInstall

\3. cd ~/.vim/bundle/YouCompleteMe ./install.sh --clang-completer         这个过程会自动安装clang, 从而在/pxf/.vim/bundle/YouCompleteMe/python目录下产生libclang.so文件。 

        在.vimrc中配置, “””””””””””””””””””””””””””””” “ ycm setting “””””””””””””””””””””””””””””” let g:ycm_global_ycm_extra_conf=’/.ycmextraconf.py’ let g:ycm_collect_identifiers_from_tag_files = 1 let g:ycm_seed_identifiers_with_syntax = 1 let g:ycm_confirm_extra_conf=0 let g:ycm_key_invoke_completion = ‘<C-/>’ nnoremap <F5> :YcmForceCompileAndDiagnostics<CR> 其中ycm_global_ycm_extra_conf非常重要,里面设定ycm的搜索头文件路径。.ycm_extra_conf.py文件可以针对具体的代码工程建一个,如果不这么做,那么vim会按照.vimrc中设定的路径去找.ycm_extra_conf.py。在这里,我将模板/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py拷贝一份到/.ycm_extra_conf.py,日后自己的修改都在拷贝的文件中进行。         实际使用中,我们需要配置/.ycmextraconf.py这个文件,需要做改动的就是文件中的flags部分——添加我们的库文件,从而提供给ycm做自动补全。使用-isystem标志添加系统的头文件进行解析,而-I标志用于添加第三方的头文件进行解析,一般要在该文件中的flags = 后面添加 ’-isystem’,’/usr/include’,。但是模板中已经有了该配置,所以就没做改动。

Trouble Shooting         安装YCM的过程挺坎坷的,我也试过编译YCM源码的形式来安装,但安装好了却没有效果,下面是我在这个过程中碰到的一些问题,及其解决方案。         在cmake配置的时候,可能会遇到找不到PythonLibs的报错,这是因为没有安装python-dev,解决方案: sudo apt-get install python-dev         编译llvm-clang源码的时候,很容易出错,我采用了另一种方法: sudo apt-get install clang-3.3 clang-3.3-doc

emmet-vim

zen-coding

Vundle install: Plugin ‘mattn/emmet-vim’

Macvim

文件编辑神器

CentOS 7.0 自带vim 7.4

  • 打开/新建文件
    vi xujian.txt ( 存在文件就打开, 不存在就新建.)

标记 / 书签

命令 作用 备注
ma 将当前光标位置定位a 每个文件能有 a-z 26个标记.
‘a 去 a 标记处. 当前文件标记 m + 小写a-z
:marks 查看所有的标记 全局文件标记 m + 大写A-Z

注:如果你删除了标记所在的行,同时也就等于删除了该标记.

关键字

关键字 关键词 关键词 关键词
c 改变命令 v vimrc 定制 t 跳转 命令 w 外部命令
u 撤销命令 b 可视模式 d 删除命令 y 复制命令
e 其他 y 复制/粘贴 s 分割窗口 m 位移命令
f 查找/替换 q 命令记录 z 折行 o 外部程序

软件自带在线帮助文档.英文的.

:help 打开帮助文档.

:help w 查w命令使用方法.

软件自带教程! 终端输入 vimtutor 打开.

vim 常用模式

  • 正常模式 光标是黑框 esc 进入
  • 插入模式 光标是黑线 i键 进入
  • 命令模式 光标在底行 :键 进入
  • 可视模式 用于选文本 v键 进入

:version 查vim 版本信息

模式简介

  • 普通模式: 每一个按键字符都被看做一个命令.

​ ^ + 0 跳回原来位置

​ . 重复普通模式下的命令

  • 插入模式:
I = ^i A = $a O = $+回车
i: 光标 前 插入 I: 行首 插入 o: 光标 下方 新建一行
a: 光标 后 插入 A: 行尾 插入 O: 光标 上方 新建一行
  • 命令模式 vim会把光标放到屏幕底部 命令和搜索都要在这里输入
    左右键 移动 一个字符
    Ctrl + w 删除 一个单词
    s+方向键 移动 一个单词Ctrl + b/e
    Ctrl + u 删除 全部命令 重新开始写
    Esc 退出命令模式
    Tab: 命令(文件名)补齐
       

历史命令:
上下方向键 或者 Ctrl+p / Ctrl + n

找回之前用过的命令 默认记录20条 可自己修改 永久记录.

  • 历史命令匹配:
    set 命令 :se+向上方向键 会自动找之前se开头的命令.

\@: 重复命令模式下的命令 ex命令 命令模式下执行的命令就叫ex命令

ex 适合长距离的操作

普通模式 适合短距离操作

:edit 编辑 :delete 删除 :write 写 :yank 复制 :copy = :copy to 简写:co

        :6copy 第六行 复制到当前行 
        :6t  第六行 复制到当前行
        :t6 复制当前行到第六行
        :t 复制当前行
        :t$ 复制当前光标到行尾
        3a!   连续输入三个! 

可视模式: view

v ; v + 方向键 / hjkl选多行 ;     vjj 选下三行;       o   修改光标开头位置;

矩形可视模式 / 文本块:     ctrl + v 进入visual block 模式

多行 同时插入方法: 先选定要修改的行 按下:shift + i 进入插入模式 输入文本(不能有回车键) 按下 esc键退出 就应用到所有行了.

移动文本块: 连接多行文本: > 右移 左边填充空格 J 删除文本块里面的所有换行符 < 左移 右边填充空格 gJ 删除换行符 保存 缩进空白 和行尾空白 = 自动缩进

viw  选择一个单词
yiw 复制一个单词

gv 再次选定 上次选择的visual区域

替换模式: r

替换光标处内容 只替换一个字符 不进入插入模式. 4rw 把4个字符换成4个w R 替换多个字符.

cw 删除并写入 单词内 光标及后面的字
c2wbe → to err is human → to be human

cis 删除一整句 然后输入 c 删除 is inner sentence das 删除一句子 及 后面空格 cc = S 修改一整行 = 删除一行 再进入i模式的意思

c$ = C 删除并写入 行内 光标及后面的字

光标移动

hjkl 上下上右移动. 一个字符一个字符的移动.
9k 向上移动9行

w 向右 一个单词(中文的话 就是一个句子) 一个单词的移动.
3w 右移三个单词.

b 向左 一个单词(中文的话 就是一个句子) 一个单词的移动.
3b 左移三个单词.

e 移到下一个单词的 最后一个字符.
ge 移到前一个单词的 最后一个字符.

$ / end 键 光标移到行末. 5$ 下移 5行 并 移到行尾.

^ / home 键 光标移动行首 非空白字符.
0 光标移到行首 第一个字符.

f 行内移到指定字符: “f”意为”find” F 反向搜索
3fl 移动到 当前行的 第三个 L 上

tx 行内移动光标到x之前 而不是x上! T 反向到
G = go 的意思

gg: 到文件开头 G: 到文件结尾
23G: 跳到指定的23行

30%: 跳到文章30%处.

窗口 / 屏幕操作

H → 当前屏幕 上方 home zt 把光标所在行 放到屏幕顶部 M → 当前屏幕 中方 middle zz 把光标所在行 放到屏幕中间 L → 当前屏幕 下方 last zb 把光标所在行 放到屏幕底部

Ctrl F 下一屏幕 Forward Ctrl D 滚下半屏幕 Ctrl Y 向下滚动 Ctrl B 上一屏幕 Backward Ctrl U 滚上半屏幕 Ctrl E 向上滚动

分割窗口

:new 新建水平窗口 :split 同一文件上下均分屏幕 同时显示
:vsplit 垂直分割

vimdiff main.c~ main.c 可以显示两个文件的不同之处。

新建上下分割窗口 并浏览打开指定的文件 :browse split
也可以 在split 后面加文件目录

:browse 打开任何文件的命令

窗口切换
⌘ [ ] ‘’

⌘ N 新窗口 不用dock栏去新建了

⌘ S 保存文件 ⌘ W 关闭窗口

ctrl + w + w 分屏模式下 屏幕上下左右 光标 循环切换

操作符简介

  • b begin 光标移到单词开头
  • $ 光标移到行尾
  • d delete 删除
  • g global 的缩写

f 下面 ; 是下一个匹配 , 是上一个匹配 命令下 n是下一个匹配 N 是上一个匹配.

字符删除:

d + 位移 命令 删除的内容可用p( put ) 取回来相当于剪切了.

dl = x 删除光标 右边 字符. 4x 删除4个字符 dh = X 删除光标 左边 字符. d$ = D 删除光标 到 行尾内容

dw 删除光标 和 光标后面的单词或者字句 和 后面的空格! d3w 删除三个单词的意思 diw 删除当前光标所在的word(不包括空白字符) daw 删除光标处单词 不论光标位置 delete a word

db 删除自当前光标至前一个word的开始 dap 删除一段落

de 删除光标 和 光标后面的单词或者字句 不删 后面的空格!

d$ / ^ 删除 行内 光标及光标 后/前 面的所有内容 d4$ 删除4行 到末尾

dG/gg 删除 当前行 至文件 末尾/开始 的所有内容

dd 删除当前行 = d + 回车键

J 删除换行符号 → 把两行变一行.

删两个单词 用两次dw 删7个单词可以用d7w 推荐用dw …… 因为会数错啊 还要撤销 麻烦
次数命令 建议少用 只在必要的时候用

i have a couple of questions → i have some questions 光标定位 a 先 再 c3w 输入 some xp teh 光标到e 执行xp 变成 the 就是光标字符和光标后面的字符互换

折行:

内容 → 节 → 小节 把一节浓缩为一行.只显示大概. 折行是可以嵌套的

set foldmethod=marker 加入到配置文件 “ 自动折行 折叠设置 不加这个 文件关闭后再次打开文件折行不保存.

手动折行

创建折行 zf 先鼠标选定文本.

展开折行 zo 查看底下所有折行 zR
关闭折行 zc 收起底下所有折行 zM 禁用折行 zn 恢复折行 zN 两者之间切换 zi 删除折行 zd 删除所有折行 zD

zfap: 操作+对象 zf+任何的位移命令 ap: 这里指 把一段内容折起来

自动折行: 更具缩进 自动进行折行. 也能根据标记折行: 不细说了 手工算了.

大小写转换

guw 一个单词全部变小写 guu 一行全变小写

gUw 一个单词全部变大写 gUU 一行全变大写

~ 大变小 小变大 g ~~ 一行 全转换

复制/粘贴/撤销: yanking

yy 复制一行. p 粘贴 (也可以将最后一次删除的内容粘贴) yw 复制一个 单词 包括 单词后面的空格 y3w 复制三个单词 ye 复制一个 单词 不包括 单词后面的空格 y$ 复制 当前光标到 行尾内容

u 撤销 一次 改动. 可以恢复好多次的修改! U 撤销 整行 改动. ctrl r 撤销 撤销命令!

:q! 强制退出 也就是 不保存任何修改内容! 有用的

查找替换:

自动高亮. :set hlsearch
不要高亮. :set nohlsearch

正向查找 /words 回车!
逆向查找 ?words 回车!
N 下一个匹配结果 Shift+N 上一个匹配结果.

% 适配 配对的括号 ) ] } 程序调试用. 光标定位开头的括号,按% 找到对应的结尾括号位置

特殊字符 .*[]^%/?~$ 有特殊意义,如果你要找的东西 包括这些内容, 要在这些字符前面放置一个反斜杠

搜索 查找整个word

忽略大小写     :set ignorecase                             /the        匹配出 there 
精确搜索        :set noignorecase                           /the\>      匹配    the

查找当前光标单词: 一行 好几个 and 光标定位你要查找的单词 按下 * 就正向查找 /^and 匹配开头的 按下 # 就反向查找 /$and 匹配结尾的

:s/abc/Abc 替换 光标行 第一个匹配项 :s/abc/Abc/g 替换 全行的 匹配项 :3,5s/abc/Abc/g 替换 第3/5两行 的全部匹配项 :%s/abc/Abc/g 替换 整个文件 全部匹配项 :%s/old/new/gc 替换 整个文件 全部匹配项 并 询问是否替换!

找文件 :edit . 自带目录( 文件浏览器 )插件 显示当前文件的目录列表的 按下? 查看简单使用说明

回车键    原窗口打开        - 进入父目录    R 重命名文件              p    预览文件
o        新窗口打开        c 进入目录      D 删除文件 q/  在vim窗口最下面打开一个新的窗口,这个窗口会列出你的查找历史记录,
你可以使用任何vim编辑命令对此窗口的内容进行编辑,
然后再按回车,就会对光标所在的行的内容进行查找。

pwd  查看当前工作目录 

Map 按键映射

:map 全部模式

:vmap v模式

:imap 就是i模式下的 map

:nmap 普通模式

:map! 插入和命令行

:cmap 命令行

列出所有map :map

删除map :unmap 或者去配置文件删

宏 你拥有多达26个寄存器可供使用

1 用qx开始 后续的命令都会被记录 x取a-z 中一个.

2 执行你要的命令

3 q 结束

@x 用来执行x宏

@@ 播放最新录制的宏 

例子:

stdio.h → #include “stdio.h” fcntl.h → #include “fcntl.h” unistd.h → #include “unistd.h” stdlib.h → #include “stdlib.h” qa 开始将后续的命令记入寄存器a ^ 将光标移动到行首 i#include “ 在该行之前插入#include " $ 移动到行尾 a" 在行尾加上"字符 j 移到下一行 q 停止记录

@a 就是执行这个 下次还要执行同样的命令 就用@@

其他功能

加密文件: :X 或者 :set key= 来加密 值设置成空 就是光标加密

文件状态: ctrl g 显示文件名字, 光标所在行 和 百分比位置,总行数,

字数统计: g ctrl-g

自动补齐: crtl p

查一个命令的帮助页面 光标定位 → 大写K 就好了 会执行 man k

增加当前行的 缩进 4>> 增加4行的缩进

vim 脚本 八进制 0 开头; 十进制; 十六进制 0x 开头;

二合字母 修饰键: < c-k >

>> 就是出来书名号;       12  就是出来 ½ ;     23 就是出来  ¾ ;

一行内 数字 自动加减 一个 16→17的意思 ctrl a 减1 10< c-a > 变15 光标只要在一行内 自动修改第一个数字! ctrl x 加1

另起一行 最快回车键 推荐 Esc + O

精确撤销 :undolist 可以看你什么时间做了什么修改 选择一个时间点 回去 :earlier 10s 可以用m 分钟 h 小时

普通模式下 q: 打开命令历史记录文件 找到一个命令 回车键执行 同时关闭历史记录窗口

特殊字符 前面要加反斜杠. 查找 the. /the.

gf 打开光标下文件 光标下要求是文件路径的啊 < C-w > f 新窗口打开

格式化 gqap 格式一段落 gggqG 格式整个文件

\c \C 忽略/不忽略 大小写匹配

/ 重复 上次搜索

vim

:pwd 显示当前工作目录

更改macvim 默认打开位置 默认是 用户根目录的

~/vimrc 配置文件 首行 加

:cd desktop/vim 你想要的路径 就好了

匹配任意单字符

/c.m 找任意 前面是c 后面是m的 单词

比如 computer became

重复命令 .

例子:你想把”four”改为”five”。它在你的文件里多次出现。

/four<Enter> 找到第一个字符串"four"
cwfive<Esc> 把它改为"five"
n 找到下一个字符串"four"
. 同样改为"five"
n 继续找下一个
. 做同样的修改
等等

定义缩写 :iab

:iabbrev ad advertisement 输入ad空格 就出来 advertisement

:iabbrev JB jack benny

列出缩写

:abbreviations

i 缩写在insert模式有效

c 命令行模式有效

! i下和命令下都有效

删除缩写

:unabbreviate ad

:abclear 移除所有缩写

更正错误 teh→the

:abbreviate teh the

外部程序

:!+命令 回车键 结束外部命令 回到macvim

例子 :

:!ls 列出当前目录内容.

:!rm test 删除文件

提取 合并 文件

向当前文件插入其他文件的内容

:r filemane

ctrl f/b 下一页 上一页

" 上次编辑的位置
[] 最后一次修改位置

关闭文件后回到上次退出位置 ‘0 就可以了

其实 每次退出vim 都会创建一个特殊的标记

最后一次是0 上次是1 再上次是2 直到9

:marks 来查看0-9的指向
  消除多余空格
   %s/\s\+$//  
   %  每一行

s substitute 查找字符串 \s+$ 这个会查找行尾的一个或者多个空格

// 是要替换的内容 也就是空

还可以查找 一个文件列表/好几个文件 里的某个单词

对齐文本 命令行下

:{range}center [width]

:1,6center 40 1-6行 居中

right 右对齐 left 左对齐 后面的参数是指的留白宽度 和center 不一样

gv 选你上次选的 v 区域 让你重复修改

多项匹配

/one|two|three 匹配到 one two three

/[a-z] 匹配26个英文字母

/[0123adfd] 匹配单个的 多项

/[0-9a-g] 匹配 0123456789 等等

预定 字符集 比如/\a

历史记录是不能被修改的 历史就是历史 除非你有月光宝盒

使用技巧

普通模式和i 模式 不要强制去切换 可以相互磨合的

其实普通模式很强大的 修改不一定要进i模式的

u 一次 i 进入 到esc 退出的恢复 中间通过控制i 来控制u的 恢复粒度

最好一次思科 对应一次i esc

vim 完成一件事情 最有效的是按键最小的 这个基础上 选择能重复使用的那个操作

编辑文件

1 快速移动,准确定位很重要 浏览占非常多的时间 编辑反而是其次的东西

2 不要键入 重复的东西

实例:

3行字  每行后面都加上 ; 号
$a;     j.    j.   就好了

一行内 多个+ 号  要求每个加号 前后都加上 空格 :
f+     s空格+空格    ;.   ;.   
插入模式下 要临时去普通模式  ctrl+o  只能执行一个普通命令
自带计算器 ctrl + r   

插入 任意字   键盘上没有的字  去找相应的字符编码 输进去 一样的效果
 如 < C-v > 065  就出现A 
   用4位的16进制 表示也行的
   想知道某字的 编码  光标定位到字 按ga 就会显示出来了
假设你想把C++风格的注释中的所有"foobar"替换为"barfoo"(这些注 释将以"//"开始):

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

        该 命 令 以":g"开 始 , 它 是":global"的 缩 写 , 就 象":s"是":substitute"的缩写一样。
        接下来是以加号分隔的搜索 模式。因为我们要搜索的内容中包括有斜杠/,所以此处用前后两个加号来分隔命 令的不同部分。
        最后是将"foobar"替换为"barfoo"的命令。

vim : 编程序 做网页 .神一样的编辑器. 几乎所有文件 都是用 二进制 0 1 0 1 组成的. 通过编码系统 将 0 1 转换为 我们认识的文字.

ASCII 就是一种广泛使用的 文字编码系统. 编辑器有很多种: 比如 nano , vi . vim

所有unix 都会内建vi 编辑器. vim (vi的升级版) 则是编辑器里面的神. 强到 可以编辑程序.甚至建网站!!!

vim 可以 用字体颜色/底线 显示一些 特殊的资讯 .

比如 : 用vim 打开 c语言 / shell script 程序时 vim会根据 文件名 / 文件的开头内容 判断文件的内容.

自动呼出这相应程序的 语法判断式, 方便编辑程序文档.

终端打开vim方法: 终端输入 vim test.txt 回车 就进vim 编辑器了 注意 vim 后面一定跟的是文件名,如果文件不存在 他会在当前默认目录下新建这个文件.
如果权限不对, 可以用强制写入方式 :wq! 再不行 去修改你的权限吧.

 按下 : 光标移到最下一行  并打出:   编辑模式:    光标细.    左下角 有个 --insert--     一般模式按下以下按键进入.

i/I:  插入模式   i 输入内容在光标左侧    I  光标行第一个字开始插     
o/O:  插入模式   o 另起一行/下面插一行   O  光标上面插入一行
a/A:  插入模式   a 输入内容在光标后面.   A  光标行最后字开始插
r/R:  取代模式   r 取代光标那字一次      R  一直取代光标位置的字符 直到按esc. 指令模式:   一般模式   按下以下任意一个  :   /   ?   光标会移到最底下一行.

可以 找资料 保存文件 离开 等等    光标移动(一般模式下):  ↑ ↓ ← →        h 左  j 下 k 上  l  右  

数字 + ↑ ↓ / j k 多行快速移动. 数字 + 空格 后移若干字. 数字 + enter 向下 n行.

0 光标← 最前面. $ 光标 → 最后

⌘ + f 向下一页 front ⌘ + b 向上一页 back ⌘ + d 向下半页 下移 ⌘ + u 向上半页 上移

   光标上一列开头  shift +     光标下一列开头.

H 屏幕顶行 第一个字
M 屏幕中间行 第一个字 L 屏幕底行 第一个字 G 文件 最后一行 数字 + G 档案第n行 gg = 1G 文档第一行

搜寻

正常模式下: 也就是编辑模式 按下esc后

/word 游标之下 搜寻word 单词 (标准是退出正常时候的游标位置)

?word 游标之上 搜寻word 单词

n 重复之前搜索动作, 之前向下搜索 按下n 会继续搜索下一个word 向上也一样.

N 反向搜索 之前是向下搜索的,变成向上搜索.

代替

:x,ys/word1/word2/g x y 为数字 . xy行 之间 用word2 代替word1

:1,$s/word1/word2/g 第一行到最后一行 用word2 代替word1

:1.$s/word1/word2/gc 第一行到最后一行 用word2 代替word1 在取代前 提示是否取代.

删除 复制 粘贴 正常模式下.

x → 向后删除字 也就是删除光标闪烁字符.

X ← 向前删除字

nx 连续后删n字符

dd 删除游标所在行

ndd 删除游标下n行

dG 删除游标到文档最后一行 所有资料

d1G 删除游标到文档第一行 所有资料

d$ 删除游标到本行最后内容.

d0 删除游标到本行最前内容.

yy 复制游标所在行.

nyy 复制游标向下n行

y1G 复制游标到第一行 资料

yG 复制游标到尾行 资料

y0 复制游标到本行首

y$ 复制游标到本行末

p 小写 游标下一行粘贴.

P 大写 游标上一行粘贴.

J 将当前行和下一行内容合并 ,也就就去空格.

c 重复删除多个资料 例: 向下删除10行 10cj

u 复原前一个动作.

⌘ + r 重做上一个动作.

. 小数点 重复前一个动作. 重复删除粘贴等.

```

命令模式 只能从一般模式切换过来

```

:w 保存文档

:w! 强制保存文档

:q 离开vim

:q! 强制离开(不储存修改)

:wq 储存后离开

:wq! 强制储存后离开

ZZ 文档有修改 就保存后离开 没修改就直接离开

:w[filename] 另存为文件

:r[filename] 编辑中 读取另一个文档,并添加光标行后面.

x,yw[filename] xy行之间的内容储存为filename文件

:!command 暂时离开当前vi 显示命令下的vi文档

     :! is/home      查看home目录下 is 的文档

环境变量

:set nu 显示行号

:set nonu 取消行号

实例:

1 在 /tmp 这个目录下建立一个名为 vitest 的目录;

2 进入 vitest 这个目录当中;

3 将 /etc/man.config 复制到本目录底下

4 使用 vi 开启本目录下的 man.config 这个档案;

5 在 vi 中设定一下行号;

6 移动到第 58 行,向右移动 40 个字元,请问你看到的双引号内是什么目录?

7 移动到第一行,并且向下搜寻一下‘ bzip2 ’这个字串,请问他在第几行?

8 将 50 到 100 行之间的‘小写 man 字串’改为‘大写 MAN 字串’,并且一个一个挑选是否需要修改.

9 修改完之后,突然反悔了,要全部复原,有哪些方法?

10 我要复制 65 到 73 这九行的内容(含有MANPATH_MAP),并且贴到最后一行之后;

11 21 到 42 行之间的开头为 # 符号的注解资料我不要了,要如何删除?

12 将这个档案另存成一个 man.test.config 的档名;

13 去到第 27 行,并且删除 15 个字元,结果出现的第一个单字是什么?

14 在第一行新增一行,该行内容输入‘I am a student…’;

15 储存后离开吧!

1 mkdir /tmp/vitest

2 cd /tmp/vitest

3 cp /etc/man.config /tmp/vitest

4 vi man.config 先定位到vitest文件夹 不然他会新建man.conf文件 而不是打开

5 set nu

6 先按下‘58G’再按下‘40→’会看到‘/dir/bin/foo’这个字样在双引号内;

7 先执行‘1G’或‘gg’后,直接输入‘/bzip2’,则会去到第 118 行才对!

8 直接下达‘ :50,100s/man/MAN/gc ’即可!若一直按‘y’最终会出现‘在 23 行内置换 25 个字串’的说明。

9 (1)简单的方法可以一直按‘ u ’回复到原始状态,(2)使用不储存离开‘ :q! ’之后,再重新读取一次该档案;

10 ‘65G’ 然后再‘ 9yy ’之后最后一行会出现‘复制九行’之类的说明字样。 按下‘ G ’到最后一行,再给他‘ p ’贴上九行!

11 因为 21~42 22 行,因此‘ 21G ’→‘ 22dd ’就能删除 22 行

12 :w man.test.config ’,你会发现最后一行出现 “man.test.config” [New].. 的字样。

13 27G’ 之后,再给他‘ 15x ’即可删除 15 个字元,出现‘ you ’的字样;

14 先‘ 1G ’去到第一行,然后按下大写的‘ O ’便新增一行且在插入模式;开始输入‘I am a student…’后, 按下[Esc]15 :wq’

文件恢复 功能. 当你打开一个vim 文本时候 在相应的文件夹下面 会新建一个对应名字.swp的 备份文件

要显示隐藏功能才能看到. 当你不正常退出 下次进这个文档 它就会有提示 要你进行恢复 还是不恢复.

比如 打开man.conf 由于这个是系统文件,所有vim会进行语法校验.

文档中大多数内容是深蓝色显示 且有# 开头

vim 区域选择工具. visual block

一般模式下 光标定位

按下ctrl+v 左下角出现 visual block

方向键移动光标 进行区域选择了.

按下 y 来复制

再光标 移到你要粘贴的地方

键入空格(为了好看) 回到正常模式

按下 p 粘贴.

同时打开多个文件

```

shell/终端下 : vim file1 file2

```

```

vim中 打开多个文件.

```

多文件编辑

:n 编辑下一个档案

:N 编辑上一个档案

:files 列出开启的所有vim档案

比如:a文件里的某些东西 复制到b文件里面去

一般是通过开两个vim来解决. 通过鼠标选择复制粘贴.

由于 每个vim是独立的,一个文件中的nyy 命令 无法在另一个vim中使用. 只能使用系统自带的复制粘贴.

分割vim 窗口

一般模式下

:sp 回车 上下多窗口. 可重复添加

:vsp 回车 水平多窗口.

方便对照文档进行修改

:ls 显示当前vim 打开的文件列表.

一个vim下 打开多个文档

:open + 文件路径

```

当前窗口下 文档切换

```

:bn / ctrl + 6 当前窗口 显示为下一个文件.(ls列表里的下一个)

:bp 上一个

```

窗格切换

```

vim 环境伧俗设定 .vimrc 与记录 .viminfo

vim主动记录你的各种行为啊 方便你下次修改. 主要靠的就是 .viminfo

vimrc 最主要的配置文件. 有两个版本 全局版本 和 用户版本

:echo $home 可以确定用户安装目录

vim 全局配置文件位置. 设置系统显示隐藏文件 硬盘→ usr → share → vim → vimrc

```

个人配置文件 Mac电脑 需要手动建立.全局配置文件复制出一份到 用户根目录下

文件名改成 .vimrc 变成隐藏文件.

要修改配置都在这里改 , 不建议去修改全局配置文件.

```

```

~/ 用户主目录 相当于 /user/用户名.

```

配置:

Mac 下的vim 很多配置文件都是手动创建的.

.vim 下面 要加很多文件夹, 如下: 安装插件的话 把插件拷贝到下面相应的文件夹.

颜色文件 下载一个你喜欢的文件

http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search 下载链接 排名较高的都是

下载 解压文件 放到.vim colors 文件夹下

再用户配置文件 里面 颜色 改成相应的名字.colorscheme 后面改成下载色彩配置名,

vundle 帮助文档 :h vundle 就可以了

ctrl + w + s 上下分屏 当前文件.

:sp filename 上下分屏 打开新文件.

ctrl + w + v 左右分屏 当前文件

:vsp filename 左右分屏 新文件

屏幕间切换 ctrl + ww 左右切换 再hjkl 移动

ctrl w w 下一个屏幕.

移动分屏

ctrl + w + HJKL 大写的!

屏幕尺寸

ctrl + w = 所有分屏等高

ctrl + w + 增加高度

ctrl + w - 减少高度

默认窗口大小设置

全局.vinrc 下面设置的!!!!!!!!! set lines=50 columns=90 改数字就好了.

NERDTree

功能:方便目录操作.

列出当前路径的目录树,一般IDE都是有的。 方便浏览项目的总体的目录结构 方便创建删除重命名文件或文件名。 ```

```

开启方法: NERDTree

自动开启 NERDTree

.vimrc 添加: autocmd VimEnter * NERDTree

F3 作为快速调出和隐藏 NERDTree

.vimrc 添加: nmap :NERDTreeToggle

使用方法:

方向键 选择目录. 回车键 打开和收起目录. 或者直接vim中打开文件(覆盖当前窗口) ctrl + w + w 光标自动左右切换. ★★★★★ ctrl + w + h 光标定位到左侧的目录 ctrl + w + l 光标定位到右侧的文件 ctrl + w + r 移动窗口布局(默认目录在左,这个可以左右切换)

详细教程

```

英文状态输入.

o : 目录下:单纯展开目录,相当于回车键

``` 文件下:打开文件 光标定位到打开的文件中 ```

go: 目录下:窗口中新建水平小窗口 光标不定位过去 .

``` 文件下:窗口中新建水平小窗口 光标不定位过去. ```

t 新tab 打开选中文件/选中的书签目录. 光标跳过去

T 新tab 打开选中文件/选中的书签目录. 光标不跳过去

shift + i 隐藏文件开关.

i / gi 加水平窗口 打开文件/目录 光标 跳/不跳

s /gs 加垂直窗口 打开文件/目录 光标 跳/不跳

```

R 刷新选中目录

``` 比如桌面新加了文件 nerdtree 选中桌面文件夹 再按R 刷新桌面目录后 才能显示新加的文件

p 小写 光标定位到 展开文件夹的 上一级

P 大写 光标定位到 用户目录/父目录

h k j l 光标上下左右 移动.

H J 光标 当前目录下 定位到 最上/最下 文件.

C 大写 将选中的目录 / 文件的目录 设置为根目录

也就是nerdtree 目录 只显示你选择的根目录.

m 显示nerdtree 文件系统菜单 esc退回. node 节点的意思

a  add a childhood  
创建文件/文件夹  直接输入名文件字.  要创建文件夹的话用 /结尾.

m move the current node 其实是重命名文件!! 直接修改成你要得文件名.

d delete the current node 删除文件 接下来 y/n 确认删除.

r reveal in finder the current node 在finder中预览.

o open the current node with system editor 就是用系统默认应用打开文件的意思.

q  quickly the current node    预览文件

c copy the current node 复制文件到

F 显示文件夹+文件 还是 单独显示文件夹不显示文件.

f ???????????

B 目录收藏书签??? 开关

q 关闭nerdtree 以及用F3 快捷键替代了.

? nerdtree 帮助文档 开关

:tabc 关闭当前tab

:tabo 关闭其他tab

cmd w 关闭当前tab

cmd { } 前后tab

! 执行当前文件 O 递归打开节点下 所有目录 x合并父目录 X 递归 合并节点下所有目录 e 编辑当前dif? D 删除当前书签 ???
u 当前根节点的父目录 设为根目录 合拢原根节点 U 展开 r 递归刷新选中目录 cd 将cwd 设为选中目录 切换标签页: :tabnew 指定文件新建tab

Vundle

功能: 插件管理. ★★★★★ 能自动更新插件,任意备份.

官方Git 主页 https://github.com/gmarik/Vundle.vim

安装教程:

  1. 先安装 git
  2. 安装 Vundle git clone https://github.com/gmarik/Vundle.vim.git /.vim/bundle/Vundle.vim
  3. 等待软件自带安装完成.
  4. 打开用户配置文件.vimrc //
  5. 复制别人的(高手的)vim配置代码 到用户配置文件最上面进行粘贴.

Vundle插件形式:

  1. 官方移植的Vim Script,只需写脚本的名字, Bundle ‘neocomplcache’
  2. Github 插件, 以作者/项目的形式 Bundle ‘gmarik/vundle’
    ``` Git具体插件信息里面一般会有两行网址链接.一行是github.com 开始的
    那行的最后 就是作者/和项目名了 ```
  3. 指定一个完整的git repos地址 Bundle ‘git://git.wincent.com/command-t.git’
操作 区分大小写 备注
插件安装: BundleInstall 配置文件加入插件代码 → vim运行命令
插件删除: BundleClean 配置文件删除插件代码 → vim运行命令
插件更新 BundleUpdate  
列出插件 BundleList  
查找插件 BundleSearch