使用unzip的时候 指定 -d选项, 是说明解压到的 目标地址. 这个参数还是比较方便的, 比直接unzip到当前目录, 然后在去拷贝到目标目录, 然后再删除当前目录中的解压文件夹, 方便多了.
使用:x命令, 方便直接; 因为它就类似于(注意不是等于same):wq, 而且, "只有当发生改变时才写入": "only when changes have been made".
like和same as. like是类似, 而same是等同于, 所以这里的:x是用的 like 而不是same.
用unzip解压时, 是 从 archive inflating 到目标文件夹, 解压是膨胀, zip才是deflating.
vim在跳转到行首时, 不能使用 s-i 来实现, 因为这样的话, 就不能输入大写的I 了. 同样的道理, 其他映射都不能使用 s-字母了.
vim的帮助还是很有用的. 使用帮助时, 键入: :help :x(等命令)
, 要查询的内容可以是整个命令, 包括 (冒号), 那么首先要建立帮助: 使用命令: :helptags 插件所在的doc目录
如: :helptags ~/.vim/doc
当然是在vim中来执行的. 这时候, 会在doc目录中生成一个tag 文件. 这个文件就是vim帮助命令 所要搜索的文件....
vim中set hidden的含义?
tmux? 是linux的终端复合器
在 CentOS 和 RHEL 中,它不存在于官方的软件源中,所以需要添加 EPEL 库。添加命令: [root@server ~]# rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 添加完毕后,可以用下面的命令来安装它: [root@server ~]# yum install tmux 安装完毕后,只需要执行如下命令就可以使用它了: [root@server ~]# tmux
执行这个命令后,您将会被转移到 Tmux 的会话中。转移到会话中后,您需要先按下 Ctrl+B ((ctrl -b 叫做 命令前缀~ )才能执行其他的命令。您可以先按下 Ctrl+B 后按 "?" 来查看所有支持的命令。
vim中的快捷方式的设置? 以前总是习惯于 跟其他控制键, 如cttrl, shift, alt等等结合添加在一起使用, 现在看来, 尽量对于自己定义的映射键, 尽量不要使用 其他控制键, 尽量使用 普通的 "双字母/三字母"按键 来映射, 比如: jk, jj, kk, hh ll 等就是很好的例子. 所以这样看来 , vim的自定义键映射就是无穷无尽的了. 而且, 控制键ctrl,shift,alt等通常是一些 官方的, 比较nb的插件的 配置 会使用这些辅助控制键!
vim插件的安装方式:
step 1. 下载解压
step2. 两种安装方式,
一是, 直接将 plugin.zip解压到 ~/.vim目录中就好. 这时候, 解压出来会自带目录 doc/NERD_commenter.txt, plugin/NERD_commenter.vim, 然后就可以使用了
二是, 不解压到 ~/.vim目录中 , 而是放到 vimfiles中, 比如: /usr/share/vim/vimfiles/ 中对应的doc, plugin目录中.
step3. 但是这个时候, 还不能使用, 还要在vimrc中对 插件 进行相关的 配置
比如:
let NERDSpaceDelims=1 " 让注释符与语句之间留一个空格
let NERDCompactSexyComs=1 " 多行注释时样子更好看
let g:NERDDefaultAlign = ‘left‘ "将行注释符左对齐
--------
最常用的操作命令:
,cc 单行注释 注释方式//
,cm 对选中的范围多行注释 注释方式为 /* ... */
,cs 以”性感”的方式注释
,cu 取消注释
,ca 切换// 与/**/注释方式 这个只是切换, 并不注释
**DoxgenToolkit 的使用, 下载地址: http://www.vim.org/scripts/script.php?script_id=987 ** 但是, 如果用vundle安装的话, 直接就是: Bundle 'DoxygenToolkit.vim'
参考: c/c++的注释风格: http://guqian110.github.io/pages/2015/01/12/learning_vim_doxygentoolkit.html
map fg : Dox<cr>
let g:DoxygenToolkit_authorName="citongke1"
let g:DoxygenToolkit_licenseTag="My ownlicense<enter>"
let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK"
let g:DoxygenToolkit_briefTag_pre = "@brief "
let g:DoxygenToolkit_paramTag_pre = "@param "
let g:DoxygenToolkit_returnTag = "@return "
let g:DoxygenToolkit_briefTag_funcName = "yes 或者no" // 这个是指, 是否在注释中 自动 包含函数名称
let g:DoxygenToolkit_maxFunctionProtoLines = 30
====================
使用 DoxygenToolkit的限制条件:
对函数生成注释的限制:
1. 假设函数名(后面的左括号)至少在当前光标位置后的第三行;(即: 当前光标行和函数定义行中间最多隔 2个空行, 否则就不能生成函数注释 ,此时 函数前用:Dox, 则不会生成注释,tip: nothing to document here)... 注意, 生成函数注释时, 会自动将注释和函数名称之间的 空行 给删除掉!
2. 在注释块在写入之前不能再次更新;
3. 块分隔符(头部和尾部)只包含函数注释(就是只有函数注释才生成块header和 block footer, 其他像 license, author则没有块头部和脚部注释);
4. 假设已经使用了缩进;
5. 函数参数中得到注释还不支持;(像void foo(int bar /* ... */))
6. 定制输出脚本,在脚本文件中,在.vimrc中设置g: DoxygenToolkit_*变量:
**Doxgen的主要命令, 就是有三个: 一个是全文的 license, 使用命令: DoxLic, 二个 是全文的author作者信息. 使用命令: DoxAuthor, 三个 是单个单个的 函数 的注释 直接就是 :Dox **
关于 vim配置文件的更新 生效问题?
- 配置文件本身 vimrc, 一旦修改保存后就生效.
- 这个问题的关键是 指, 当一个普通文件用vim打开后, 这时候, 会首先processing /etc/vimrc处理 载入配置文件, 后才打开本文件, 所以 打开一个普通文件后, 再去修改vimrc这时被修改 的配置是不会生效的, 要 重新启动 这个普通文件后, 让修改后的配置文件重新载入后, 才能使新的配置生效.
- 所以说, 在修改配置的时候, 观察配置的效果时, 需要重启的是, 普通文件, 而 配置文件 只管修改它 保存就是了. 不必关闭..
关于在各个模式下都能生效的 键映射
- 好像map只能在noral下生效(不是传说中 的所有模式下..), 而imap只能在插入模式下生效. 两者不能呼唤.
- 同样的键映射在不同的模式下, 所起的作用是不同的. 特别是对于 冒号命令. 冒号命令应该是 只能在 normal下生效 "执行命令", 如果是在insert模式下, 它将不会执行命令, 而只是机械的按 原样的 替换成 映射的 按键. 如:
imap cm :Dox<CR>
在插入模式下, 按cm将只会在 文档中, 插入 'literal'的:Dox<cr>
, 只是这样的文本, 但是不会作为 冒号命令来执行. - 所以, 在插入模式下, 要将键映射为可以执行的命令, 应该 先用esc退回到 normal模式下, 然后再执行 冒号命令, 即:
imap cm <esc>:Dox<CR>
在冒号前面有 esc - 要使doxygen在插入和normal模式下, 都能够起作用, 就应该 配置 两条这样的命令:
imap cm <esc>:Dox<CR>
map cm :Dox<CR>
vim下的模糊搜索插件ctrlp.vim? 注意这里的名字就是 ctrlp, 不是一个组合键.
- 是使用频率最高的插件之一, 作用: 模糊搜索, 可以搜索的对象是: 普通文件 / buffer / mru / tag 等等, github: 原始的是 kien/ctrlp, 也可使用的国人改进版本 ctrlpvim/ctrlp.vim
- 下载地址: 在github上的: https://github.com/ctrlpvim/ctrlp.vim 和bundle条目 :
Bundle 'ctrlpvim/ctrlp.vim'
- 将下载下来的zip解压后, 放入相应的位置即可. 比如, 这里 将 解压后的 autoload/ , doc/, plugin/ 目录放入到 ~/.vim/ 目录中.
- 相应的配置:
最基本的用法:
通常有三种搜索模式, 即三种搜索地方: 搜索普通文件和目录: CtrlP (Files finder mode); 搜索buffers: CtrlPBuffer; 搜索最近使用的文档: CtrlPMRU;
在 files, buffers, MRU中 混合搜索: CtrlPMixed : to search in Files, Buffers, MRU files at the same time
purge: 清除, 清洗, purge the cache of the current file : 清除当前文件的缓存...
梗概ctrlp的搜索目录和路径: 打开GVIM之后,首先"cd 【path】",然后再在此路径中使用CtrlP,就可以一直保持路径为当前路径了。
**md的 反引号 匹配, 总是 "贪婪匹配", 当有三个反引号的时候, 中间的那一个反引号被忽略, 贪婪匹配到最后一个 反引号! **
不让vim生成备份文件?
set nobackup
set noswapfile
要使用这两条 命令才行!
ctrlp为什么不搜索?
记住, 所谓的 ctrl-x, ctrl-v, ctrl-t 是指 ctrlp搜索后, 在搜索结果中打开的方式....
**使用vim-multiple-cursor 可以实现一处输入, 多处修改的 功能 **
Plugin 'terryma/vim-multiple-cursors'
let g:multi_cursor_use_default_mapping=0
let g:multi_cursor_next_key='<C-n>'
let g:multi_cursor_prev_key='<C-b>'
let g:multi_cursor_skip_key='<C-x>'
let g:multi_cursor_quit_key='<Esc>'
用法是: 先按v, 配合其他w, b等选择内容, 然后按ctrl-n, ctrl-b, ctrl-x, 进行多处选中, 然后使用vim的命令进行编辑, 完成后, 按esc退出.
但是, 要注意, multiple-cursor的操作, 并不是vim中的所有命令, 比如 "r" 命令, 会报错说: key "r" cannot be replayed at 4 cursor locations. replay(重播, 重放, 重复出现的事物)
好像, 一定要经过插入模式 , 也就是 可以有两种操作方法, 一种是 先d, 然后i, 另一种是s. 要能出现: -- ( insert ) --
ctrlp是搜索; 输入想要打开的文件名,或者文件名的一部分,或者路径
但是不能搜索 "文件中的内容字符串???"
难道, ctrlp必须使用 .git目录???
好像是的! ctrlp的中文参考: http://blog.codepiano.com/pages/ctrlp-cn.light.html
vim插件脚本的位置?
- vim.org是主要 关注/ 关于vim这个程序软件 本身的站点, 虽然里面也有 vim scripts插件脚本, 但是不是很全很好.
- vim的插件的脚本 站点, 主要还是: bronson(布朗森) 创建的 vim-scripts.org , 这个里面的插件很多很全很丰富. vundle,bundle, plugin 默认的安装插件的地方就是这个 vim-scripts.org, 所以vundle中凡是vim-scripts.org中的插件都直接写插件名称就好了.
- 而vim-scripts.org实际上是建立在 github page中 的. 所以vim-scripts和github有非常密切的关联. github上的非vim-scripts的插件, 要使用 Plugin "author/plugin-script-name"
- 而其他非github - vimscript 的插件, 则写 git的完整地址
vim搜索 任意文本? 参考: http://ikuduku.com/blog/find-text-in-project-within-vim
easygrep?
安装vim wiki: 好像本身不是用来搜索的, 而是用来写 个人 wiki的. pedion[pedi2n], 晶体, 细小的东西, 它的复数是: pedia. [pedi2]. 表示很多的细小的东西, 即 "百科".
vim 安装 tabular. 等号对齐的插件?
关于git
- 初始化一个git仓库的时候, 使用 git init /git clone. 当然是在你的工作目录下进行初始化; 然后 进行添加到index: git add ... (添加后成为 tracked , 未add的叫做 untracked present); 然后是提交: git commit -m
(msg是必须的, 否则会abort提交); - 然后是查看仓库, git log; git show(查看仓库中的各种对象); git status(查看工作区) 在仓库的维护中, 是通过 commit id 来区分每一次commit的.
- git的结构: 你所在的/进行编码的目录, 就是你的workspace, => index 暂存区 => 仓库repository. 之所以这样设计, 是为了进行一个 缓冲, 从工作区到 index再到repos, 从workspace 到 index你还可以该动, 不至于 去频繁改动仓库, 不至于频繁地生成 commit id. 和各种仓库的维护信息, 降低成本.
-
git 的设计思想, 其实并不复杂, 也不陌生: 就是我们常常使用的版本迭代: 必然我们在修改一篇很重要的文章时, 可能需要进行大量的增删, 为了防止丢失, 和能够保留之前的历史中的内容, 以便于以后的编辑中, 还能 '引用' 到之前的内容. 这时候, 就需要建一个文件夹, 将每次修改的文章都保存下来, 然后, 编辑一次, 就保留一次, 这样将每一次编辑保留的文章都放在文件夹中, 这样的话, 这个文件夹就是一个仓库. 里面的每一个文件, 就是一次 commit提交. 这就是 git的思想. git就是将每一次编辑的东西都保存下来. ...只不过, git的附加功能要多一点, 但是这些所谓的附加功能其实也是linux本身就有的命令, 比如 仓库中的同一个文件在多个人提交时发生冲突时的 比较diff和合并merge. 然后git可能要多一些浏览和统计的功能, 如git log, show, git status等命令就是这样的.
over- 前缀, 表示 "完了的, game is over, 大于的, 翻越的, 过多的, 过度的.." 通常具有否定和不好的意味.
如: overrule: 否决, 否定, 驳回 . 用rule权力表示完了, 就是否决的意思
put: 放, 放置, 安装... when a number is put before this command this is used as the maximum number of match to find (when for while等前置从句不一定在主句之间加逗号)
quickfix
- quickfix: 快修, 快速恢复, 原本是c/vim 编译器中的一个编译选项. 目的是 :
Quickfix模式的主要思想是保存一个位置列表,然后提供一系列命令,实现在这个位置列表中跳转。 位置列表的产生可以从编译器的编译输出信息中获得,也可以由grep命令的输出信息中获得,
- quickfix主要是在vim中, 在编译链接 c/c++程序时, 提高修正bug的效率, 将编译后的错误 重定向到一个 临时文件中, 然后你可以使用命令 在这些错误 的条目间 进行跳转....跟quickfix命令同时使用的命令主要有: make, makeprg, 即: 在vim中, 先设置编译选项: set makeprg=gcc -Wall -ohello hello.c 将hello.c文件编译成hello目标文件, -Wall= warning all打开所有的警告信息. 由于vim的选项命令中 不允许使用空格, 所以要转义. 然后使用命令将编译错误的临时文件中的条目 提取出来进行修改, 包括 :cc, :cw :cn, :cp, :cl (作为一个比较完整的,全面的列表显示出来.) 等等, 其中 cw就是打开quickfix 快速修正窗口, 以便于查看和快速定位错误位置...
**vimgrep lvimgrep在目录中查找字符串? ** 参考: http://easwy.com/blog/archives/advanced-vim-skills-quickfix-mode/
- 虽然ctrlp号称杀手级插件, 但是, 它只能是搜索" 文件名称", 但是不能进入到文件内部 去查找 文件的内容(文件内容包含的字符串). 而 vim使用的grep, lgrep, vimgrep, lvimgrep则可以进入到文件内部进行内容的搜索..., 这正是我所需要的. ctrlp只是查找文件名. ???grep?? 的grep是正则表达式搜索文件内容!
- vim中使用grep, lgrep是借助于外部的命令, 而vimgrep和lvimgrep本身就是vim的内部命令.
- grep和vimgrep(可以简写为vimg) 的搜索结果是放在 quickfix list中的, 所以, 使用:cw , 或copen(c表示quickfix)打开; 而lgrep和lvimgrp中的l表所是Location, 本地的. 表示其搜索结果放入到location list本地列表, 结果用 :lw, 或 lopen 来打开. w和open都是打开的意思.
- grep和vimgrep等都是用正则表达式来搜索的, 所以命令后面就要接regexp, 要搜索 的文件和目录可以是多个, 而且最重要的是, 可以使用wildchar同配符, 如:
vimg /<(DEDEINC|dedeinc)>/gj **/*.php
- 将lvimgrep进行键映射:
map sr :noautocmd execute "lvimgrep /" . expand("<cword>") . "/gj **/*" <Bar> lw<CR>
vim可以同时记住最新的10个错误列表,也就是说你最近10次使用”:make“命令编译所遇到的错误都保存着,可以使用”:colder“和”:cnewer“命令,回到旧的错误列表,或者到更新的错误列表。 colder: 不是cold , 而是 c -older 和 c-newer.
映射快捷键 tip: 使用cword取当前文件光标所在出的文字,.vimrc配置如下:
map <F3> :execute "lvimgrep /" . expand("<cword>") . "/gj **/*" <Bar> lw<CR>
这里将 <f3> 换成 sr: search的意思. 因为f3 是全局搜索的意思.
上述配置完成后,在vim中当前光标下,按下F3就会在vim的当前目录下搜索所有的文件及其子文件夹的文件,并显示出来,还可以使用 %:e 来做,意思是当前目录(%)下的同类型文件(e),如下:
map <F3> :execute "lvimgrep /" . expand("<cword>") . "/gj " . expand("%:e") <Bar> lw<CR>
这里的 <cword> 就是 current word 当前单词, 用 expand("<cword>") 函数处理后, 就表示, 扩展 .连接当前光标所在的字符串...
因为vimgrep 在搜索时, 要执行vim的时序, 所以速度较慢, 为了提高速度, 可以关闭 autocmd: 即: noautocmd.
因此总的配置命令就是:
map sr :noautocmd execute "vimgrep /" . expand("<cword>") . "/gj **/*" <Bar> cw<CR>
### 注意这里, 最好是, 用 vimgrep和cw, 来操作 quickfix窗口, 就可以使用quickfix的跳转命令cn, cp cl, cc, cw等, 而如果使用lvimgrep的话, 就不好跳转....
使用vundle的好处是:
- .vim下就只有三个: vimrc, bundle, after. 一般只有after(autoload), 没有before. after主要是用来执行插件在执行后的一些动作. 所有的 安装的插件, 都集中放在bundle目录下, 而且是分门别类的, 按一个插件一个目录的方式来组织的. 这样就不会因为 多个插件, 都有autoload, after, 都有相同的文件名或子目录, 当他们放到vimfiles的autoload, plugins中时, 发生混乱和混淆.
搜索文件和搜索内容的区别
搜索文件, 是按文件名/文件类型来搜索的, 搜索结果和目的是, 要找到我们所需要的文件. 常用的命令是find, fuzzyfinder, ctrlp, unite等插件
而搜索内容, 则是进入到文件内, (仅限于文本 行 文件), 使用grep( gnu, regular print) 正则表达式 对文件内容进行搜索. 它的目的是搜索文件内容, 搜索字符串.
vim tabular插件的使用
- 由于tabular是放在github上的, 而且有作者 , godlygeek/tabular, 所以 vundle的安装方式, 就是: Plugin 'godlygeek/tabular'
- tabular的命令是: Tab /{对齐的符合} , 比如按照等号对齐, 就是 :Tab /=, 按照大括号拉对齐就是: Tab /{ , 但是通常来说, 对齐都是针对 等号的. 所以, 可以把等号对齐映射为快捷键, 遇到其他对齐符号的时候, 再输入一次就好了
- 在映射的时候, 不要忘了 最后的 回车
<CR> 或 <cr>