----------------------------------------------------------------------------------------------------------------------------------------------------------
SpaceVim
windows下安装gvim的spacevim,spacevim是一个集合的IDE神器。可以更方便配置vim,更像IDE。
可以参考:https://github.com/Gabirel/Hack-SpaceVim
基本步骤如下:
1.在c:\user\(username)的目录下,mkdir .cache, 然后 git clone https://github.com/SpaceVim/SpaceVim.git vimfiles
2.随后打开gvim,会自动显示安装过程,一定要保证上面的git路径,要不然不会出现的
3,完成后再次打开gvim会自动显示安装插件,若由于网速原因没有安装成功, 可以将上面创建的 .cache文件夹下面的内容删除,重新来一边或者 使用 :SPUpdate
这一命令将会更新所有插件
也可以设置离线下载,离线下载需要的内容是 需要打包的位置是:~/.cache/vimfiles
这个是其他电脑上安装过的产生的文件夹,进行打包,然后放到你需要的电脑上。
其他的一下问题可以参考上面的文章链接
GUN Global windows是下载后,将bin路径添加到environment path中
我鼓捣了半天,gtags生成GPATH的时候总是会报错,就不管了, 直接用cscope代替了,也一样可以搜索代码。
命令行下粘贴复制的内容: ctrl+r, 然后按相应的剪切板如1,2 ,", 或者*代表系统剪切板, 可以粘贴内容到命令行内。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
在linux 中执行shell脚本,有时候会出现如下错误:
/bin/bash^M: bad interpreter: No such file or directory
这是由于文件换行符格式是dos格式的,bash无法解析。
在vi修改文件换行符格式为UNIX格式
:set ff=unix
正规的正则表达式如下
^(?!.*hello) :匹配不包含hello字符串
^((?!33333).)*$
但是在vim中,匹配不包含某个字符串的形式:
^\(.*keyword\)\@!.*$ ,keyword为不包含的字符
^\(.*include\)\@!.*
VIM 正则参考: https://www.jianshu.com/p/3abd6fbc3322
关于buffer的几个常用的操作指令。现在用MiniBufExpl插件,用起来比较方便。
Vim正则表达式:
简单替换表达式
:[range]s/from/to/[flags]
range:搜索范围,如果没有指定范围,则作用于但前行。
flags 有如下四个选项:
这些选项可以合并使用,如cgi表示不区分大小写,整行替换,替换前询问。
正则表达式
1、元字符
元字符
元字符 | 说明 |
---|---|
. | 匹配任意字符 |
[abc] | 匹配方括号中的任意一个字符,可用-表示字符范围。如[a-z0-9]匹配小写字母和数字 |
[^abc] | 匹配除方括号中字符之外的任意字符 |
\d | 匹配阿拉伯数字,等同于[0-9] |
\D | 匹配阿拉伯数字之外的任意字符,等同于[^0-9] |
\x | 匹配十六进制数字,等同于[0-9A-Fa-f] |
\X | 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f] |
\l | 匹配[a-z] |
\L | 匹配[^a-z] |
\u | 匹配[A-Z] |
\U | 匹配[^A-Z] |
\w | 匹配单词字母,等同于[0-9A-Za-z_] |
\W | 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_] |
\t | 匹配 |
\s | 匹配空白字符,等同于[\t] |
\S | 匹配非空白字符,等同于[^\t] |
一些普通字符需转意
元字符 | 说明 |
---|---|
\* | 匹配* 字符 |
. | 匹配. 字符 |
\/ | 匹配 / 字符 |
\ | 匹配 \ 字符 |
\[ | 匹配 [ 字符 |
\] | 匹配 ] 字符 |
表示数量的元字符
元字符 | 说明 |
---|---|
* | 匹配0-任意个 |
\+ | 匹配1-任意个 |
\? | 匹配0-1个 |
\{n,m} | 匹配n-m个 |
\{n} | 匹配n个 |
\{n,} | 匹配n-任意个 |
\{,m} | 匹配0-m个 |
表示位置的元字符
元字符 | 说明 |
---|---|
$ | 匹配行尾 |
^ | 匹配行首 |
\< | 匹配单词词首 |
\> | 匹配单词词尾 |
2、替换变量
在正则式中以\(和\)括起来的正则表达式,在后面使用的时候可以用\1、\2等变量来访问\(和\)中的内容。
看下面最后一个例子
例子
:%s
/abc
\(.*\)xyz
/xyz
\1abc
/g
:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1
/g
可以限定/ 查找数据的范围,如下: 输入 :help / 可以查看查找的help
You can limit the search command "/" to a certain range of lines by including
\%>l items. For example, to match the word "limit" below line 199 and above
line 300: >
/\%>199l\%<300llimit
Also see |/\%>l|
在vim模式下对文本 进行对齐操作
从其他地方复制了一个格式很乱的代码到 vi 文本中,想让代码左对齐怎么办?直接在“命令行模式”下使用:
:{range}left [margin]
解释:
{range}指需要对那些行进行操作;
[margin]指最终该行首字符据屏幕左边缘的距离,若不指定,则默认紧靠屏幕左边缘。
例如:
:1,3 left 5
关于ctags的使用
可以参考文章
https://blog.csdn.net/gangyanliang/article/details/6889860
ctags有更多的使用方法来满足不同的使用情况,例如源文件不在同一目录下,或者能不能从一个文件list中加入文件?
需要查看一下。
-L c:\a\list.txt 可以从指定的list文件加载需要的文件
超详细的cscope和其他的一些插件
https://blog.csdn.net/Listening_music/article/details/7428940
首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:
$ find ~/work/..Project/ -name "*.h" -o -name "*.cpp" > cscope.files
$ cscope -bkq -i cscope.files
如果是在windows环境中, 则换成如下命令:
dir /s /b *.cpp *.h > cscope.files
cscope -b -q -k -i cscope.files
TagHighlight的用法:
:UpdateTypesFileOnly *:UpdateTypesFileOnly*
This command operates in the same manner as |UpdateTypesFile|, but
it uses the current tags file rather than generating a new one
(useful if you're generating tags files as part of your build
process
find中的分别找寻文件:
find ./ -name '*.c' -or -name '*.h' -or -name '*.S' -or -name ' *.cpp'
自动补全代码的 YouCompleteMe,可以尝试安装一下。
NERDTree的各种操作指令
命令中输入 :let NERDTreeIgnore=['\.txt$','\.py$'] 可以过滤.txt 和.py文件。 在nerdtree中 按 f 来打开或关闭过滤
?: 快速帮助文档
o: 打开一个目录或者打开文件,创建的是buffer,也可以用来打开书签
go: 打开一个文件,但是光标仍然留在NERDTree,创建的是buffer
t: 打开一个文件,创建的是Tab,对书签同样生效
T: 打开一个文件,但是光标仍然留在NERDTree,创建的是Tab,对书签同样生效
i: 水平分割创建文件的窗口,创建的是buffer
gi: 水平分割创建文件的窗口,但是光标仍然留在NERDTree
s: 垂直分割创建文件的窗口,创建的是buffer
gs: 和gi,go类似
x: 收起当前打开的目录
X: 收起所有打开的目录
e: 以文件管理的方式打开选中的目录
D: 删除书签
P: 大写,跳转到当前根路径
p: 小写,跳转到光标所在的上一级路径
K: 跳转到第一个子路径
J: 跳转到最后一个子路径
和: 在同级目录和文件间移动,忽略子目录和子文件
C: 将根路径设置为光标所在的目录
u: 设置上级目录为根路径
U: 设置上级目录为跟路径,但是维持原来目录打开的状态
r: 刷新光标所在的目录
R: 刷新当前根路径
I: 显示或者不显示隐藏文件
f: 打开和关闭文件过滤器
q: 关闭NERDTree
A: 全屏显示NERDTree,或者关闭全屏