vim 相关
来源:互联网 发布:声学模拟软件 编辑:程序博客网 时间:2024/06/05 20:46
1. 我的vim配置
1 "======================================================
2 " 我的vimrc 配置
3 "======================================================
4 set helplang=cn
5 set tags=tags
6 cs add ./cscope.out /home/sundh/temp
7
8
9 set nocompatible " 关闭 vi 兼容模式
10 syntax on " 自动语法高亮
11 colorscheme molokai " 设定配色方案
12 set number " 显示行号
13 set cursorline " 突出显示当前行
14 set ruler " 打开状态栏标尺
15 set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
16 set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
17 set tabstop=4 " 设定 tab 长度为 4
18 set nobackup " 覆盖文件时不备份
19 set autochdir " 自动切换当前目录为当前文件所在的目录
20 filetype plugin indent on " 开启插件
21 set backupcopy=yes " 设置备份时的行为为覆盖
22 set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
23 set nowrapscan " 禁止在搜索到文件两端时重新搜索
24 set incsearch " 输入搜索内容时就显示搜索结果
25 set hlsearch " 搜索时高亮显示被找到的文本
26 set noerrorbells " 关闭错误信息响铃
27 set novisualbell " 关闭使用可视响铃代替呼叫
28 set t_vb= " 置空错误铃声的终端代码
29 " set showmatch " 插入括号时,短暂地跳转到匹配的对应括号
30 " set matchtime=2 " 短暂跳转到匹配括号的时间
31 set magic " 设置魔术
32 set hidden " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
33 set guioptions-=T " 隐藏工具栏
34 set guioptions-=m " 隐藏菜单栏
35 set smartindent " 开启新行时使用智能自动缩进
36 set backspace=indent,eol,start
37 " 不设定在插入状态无法用退格键和 Delete 键删除回车符
38 set cmdheight=1 " 设定命令行的行数为 1
39 set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
40 set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ "设置在状态栏显示的信息
41 set foldenable " 开始折叠
42 set foldmethod=syntax " 设置语法折叠
43 set foldcolumn=0 " 设置折叠区域的宽度
44 setlocal foldlevel=1 " 设置折叠层数为
45 " set foldclose=all " 设置为自动关闭折叠
46 nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> " 用空格键来开关折叠
47 set history=100 "设置在命令行显示多少历史记录
48 "set mouse=a
49 set iskeyword+=_,$,@,%,#,-
50 set so=7 " set 7 lines to the cursors( when moving vertical...) 光标距文本框下端有7行的距离
51
52
53 "设置leader伟,
54 let mapleader=","
55 let g:mapleader=","
56
57 "配置多语言系统
58 if has("multi_byte")
59 " UTF-8 编码
60 set encoding=utf-8
61 set termencoding=utf-8
62 set formatoptions+=mM
63 set fencs=utf-8,gbk
64
65 if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
66 set ambiwidth=double
67 endif
68
69 if has("win32")
70 source $VIMRUNTIME/delmenu.vim
71 source $VIMRUNTIME/menu.vim
72 languag messages zh_CN.utf-8
73 endif
74 else
75 echoerr "Sorry,this version of (g)vim was not compiled with +multi_byte"
76 endif
77
78
79
80 " Buffers操作快捷方式!(多文件切换)
81 nnoremap <C-RETURN> :bnext<CR>
82 nnoremap <C-S-RETURN> :bprevious<CR>
83
84 " " Tab操作快捷方式!
85 nnoremap <C-TAB> :tabnext<CR>
86 nnoremap <C-S-TAB> :tabprev<CR>
87 "关于tab的快捷键
88 " map tn :tabnext<cr>
89 " map tp :tabprevious<cr>
90 " map td :tabnew .<cr>
91 " map te :tabedit
92 " map tc :tabclose<cr>
93
94 set completeopt=longest,menu
95
96
97 ""-----------------------------------------------------------------
98 " plugin - taglist.vim
99 " "-----------------------------------------------------------------
100 let Tlist_Show_One_File = 1
101 let Tlist_Use_Right_Window = 1
102 let Tlist_Exit_OnlyWindow=1
103 let Tlist_Auto_Open=1
104 let Tlist_File_Fold_Auto_Close=1 " 自动折叠当前非编辑文件的方法列表
105 let Tlist_Auto_Update = 1
106 let Tlist_Hightlight_Tag_On_BufEnter = 1
107 let Tlist_Enable_Fold_Column = 0
108 let Tlist_Process_File_Always = 1
109 let Tlist_Display_Prototype = 0
110 let Tlist_Compact_Format = 1
111 " silent 的作用是在命令行输入栏中不显示对应的命令,即Tlist
112 nmap <silent> tl :Tlist<cr>
113
114 ""-----------------------------------------------------------------
115 " plugin - winmanager.vim
116 " "-----------------------------------------------------------------
117 let g:winManagerWindowLayout='FileExplorer|Taglist'
118 nmap wm :WMToggle<cr>
119
120
121 ""-----------------------------------------------------------------
122 " plugin - cscope.vim
123 " "-----------------------------------------------------------------
124 set cscopequickfix=s-,c-,d-,i-,t-,e- "设定是否使用 quickfix 窗口来显示 cscope 结果
125 nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
126 nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
127 nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
128 nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
129 nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
130 nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
131 nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
132 nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>
133 nmap <F4> :cw<cr>
134
135
136 ""-----------------------------------------------------------------
137 " plugin - minibufexpl.vim
138 " "-----------------------------------------------------------------
139 "minibufexpl 插件的一般设置
140 let g:miniBufExplMapCTabSwitchBufs = 1 "<C-Tab> <C-S-Tab> 切换buffer
141 let g:miniBufExplMapWindowNavVim = 1 "<C-h,j,k,l> 切换上下左右的窗口
142 let g:miniBufExplMapWindowNavArrows = 1 "<c-箭头键> 切换到上下左右窗口
143 let g:miniBufExplModSelTarget=1
144 "let g:miniBufExplorerMoreThanOne=0
145
146
147
148 ""-----------------------------------------------------------------
149 " plugin - a.vim c/h文件间相互切换
150 " "-----------------------------------------------------------------
151 " :A 在新Buffer 中切换到c\h 文件
152 " :AS 横向分割窗口并打开c\h 文件
153 " :AV 纵向分割窗口并打开c\h 文件
154 " :AT 新建一个标签页并打开c\h 文件
155
156
157 ""-----------------------------------------------------------------
158 " plugin - grep.vim 在工程中查找字符串
159 " "-----------------------------------------------------------------
160 " 在要查找字符串上面按F3就可以查找了。
161 nnoremap <silent> <F3> :Grep<CR>
2.vim快捷键
常用命令:
To undo previousactions, type: u (lowercase u)
To undo all thechanges on a line, type: U (capital U)
To undo the undo's,type: CTRL-R
y 复制(copy)
p 粘贴(paste)
Ctrl-g 在下面命令栏显示文件名,行号,
G 光标移动到最底端
gg 光标移动到最前面
行号+G 跳转到你指定的行
/+字符串 或者 ?+字符串 搜索字符串
% 在 (,[,{ 上按下 % 可以跳转到 },],)
:s/old/new <enter> 某行old匹配的第一个字符串替换
:s/old/new/g <enter> 某行所有字符串替换
:%s/old/new/g <enter> 某个文件所有字符串替换
:!+非vim的命令 Vim编辑器中可以用这样的方式执行非vim的命令。 例如:!ls, :!dir等。 :make这个命令是vim可以识别的。
Ctrl+w两次 可以实现窗口间的跳转
CTRL-O 和 CTRL-I 来回跳转
Ctrl+] 当光标在某个函数或变量上时, 按下" Ctrl+]", 光标会自动跳转到其定义处
Ctrl-T 正好与ctrl+] 相反
% 跳转到配对的括号去
[[ 跳转到代码块的开头去(但要求代码块中'{'必须单独占一行)
gD 跳转到局部变量的定义处
'' 跳转到光标上次停靠的地方, 是两个', 而不是一个"
mx 设置书签,x 只能是a-z 的26 个字母
`x 跳转到书签处("`"是1 左边的键)
> 增加缩进,"x>"表示增加以下x 行的缩进
< 减少缩进,"x<"表示减少以下x 行的缩进
浏览TagList窗口时,如果还不想让源码跳转, 但是想看看tag 在源码中完整的表达, 可以将光标移到你想要看的tag 上,如图中上边黄色的方框, 然后按下空格键, 在下面的命令栏会显示该tag 在源码中完整的写法, 而不会跳转到源码处。
vim项目创建添加命令:
$cd /home/wooin/vim71
$ctags -R
l $cscope -Rbq
l :csadd /home/wooin/vim71/cscope.out /home/wooin/vim71
<cr>表示回车符
通过vim打开项目文件后,按tl可以显示taglist。
Ctrl-w,hj k l 向"左,下,上,右"切换窗口.
cscope的主要功能是通过同的子命令"find"来实现的 (ctrl + shift + -)g/s/d/c/t
"cscopefind"的用法:
csfind c|d|e|f|g|i|s|t name
0或 s 查找本 C 符号(可以跳过注释)
1或 g 查找本定义
2或 d 查找本函数调用的函数
3或 c 查找调用本函数的函数
4或 t 查找本字符串
6或 e 查找本 egrep 模式
7或 f 查找本文件
8或 i 查找包含本文件的文件
's' symbol: find all references to the token under cursor
'g' global: find global definition(s) of the token undercursor
'c' calls: find allcalls to the function name under cursor
't' text: find allinstances of the text under cursor
'e' egrep: egrepsearch for the word under cursor
'f' file: open thefilename under cursor
'i' includes: find files that include the filename undercursor
'd' called: find functions that function under cursorcalls
:cw打开QuickFix窗口 (或者是F4)
:ccl 关闭QucikFix 窗口
F3 可以用正则表达式的查找,功能比vim自带的grep功能强大。
Vim 程序在 /usr/share 文件夹下。
删除多列:
进入vi命令模式,将光标定位在第1行第1列位置,按ctrl+v键进入visiual block模式,将光标移动到第10行第10列,按x键删除。
缩进缩出
按v进入visual状态,选择多行,用shift+>或shift+< 缩进或缩出。或者不
进入visual,在当前行用shift+>> 或者 shift+<<
在命令状态下对当前行用==(连按=两次),或对多行用n==(n是自然数)表示自动
缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一
般IDE里的codeformat。
使用gg=G可对整篇代码进行排版。
ctrl+s可以暂停终端运行,
ctrl+q后恢复继续运行。
Ctrl+d 相当于exit命令,退出当前会话。
Ctrl+c 中止当前正在执行的程序。
Ctrl+z 将当前运行的程序放到后台运行。与运行时加 &类似。
折叠命令:
zm 关闭折叠
zM 关闭所有
zr 打开
zR 打开所有
3. vim技巧
http://linux.chinaunix.net/techdoc/desktop/2009/07/06/1122020.shtml
1.全字匹配:\< 匹配单词词首 \> 匹配单词词尾
例如: 查询 four 字符串 输入: /\<four\>
--------------------------------------------------------------------------------
2.将注释替换成一个空行
:%s/\/\*\_.\{-}\*\///g
--------------------------------------------------------------------------------
每行输入到70个字符就自动换行
在VIM配置文件 _vimrc 中添加
set textwidth = 70
对于已有文本,在normal mode输入
:set textwidth=70
gqG
对全文本自动进行70字符后换行处理。
r
--------------------------------------------------------------------------------
在vim中输入/ 或者 : 后,
CTR+R CTR+W 可以直接复制当前光标下的单词到命令行
--------------------------------------------------------------------------------
如果粘贴一个代码,前面多出了// 注释符。 可以这样解决:
先在vim中输入 :set paste, 然后把代码粘贴过来, 之后再 :set nopaste
--------------------------------------------------------------------------------
窗口大小调整
纵向调整
:ctrl+w + 纵向扩大(行数增加)
:ctrl+w - 纵向缩小 (行数减少)
:res(ize) num 例如::res 5,显示行数调整为5行
:res(ize)+num 把当前窗口高度增加num行
:res(ize)-num 把当前窗口高度减少num行
横向调整
:vertical res(ize) num 指定当前窗口为num列
:vertical res(ize)+num 把当前窗口增加num列
:vertical res(ize)-num 把当前窗口减少num列
--------------------------------------------------------------------------------
*(#) 当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的
下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方
向查找.
g*(g#) 此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而
是匹配包含该单词的所有字符串.
gd 本命令查找与光标所在单词相匹配的单词, 并将光标停留在文档的非
注释段中第一次出现这个单词的地方.
--------------------------------------------------------------------------------
c-f (即 ctrl 键与 f 键一同按下) 本命令即 page down.
c-b (即 ctrl 键与 b 键一同按下, 后同) 本命令即 page up.
'' (两个') 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查
找到某个单词后, 再输入此命令则回到上次停留的位置.
'. 此命令相当好使, 它移动光标到上一次的修改行.
`. 此命令相当强大, 它移动光标到上一次的修改点.
--------------------------------------------------------------------------------
:12,23s/^/#/ 将从12行到23行的行首加入 # 字符
:%s= *$== 将所有行尾多余的空格删除
:g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除.
--------------------------------------------------------------------------------
vim 鼠标右键无法复制
配置文件中的set mouse=a启动了所有模式, vim接管了鼠标的控制。
鼠标事件有两种处理方式,程序处理和 X 处理。
如果 X 负责处理,则是左键选择,中间粘贴。
要让 vim 中由 X 负责处理,有两个方法:
1. 按住 shift 键,然后选择,此时由 X 处理该选择,copy 选项就 enable 了。如果放掉shift键,则由 vim 处理该选择。
2. 在 .vimrc 中设置 set mouse= (就是说清空),此时vim永远不再干涉鼠标选择,永远把处理权交给 X,这个时候鼠标就处于无模式编辑状态,
当然也能用鼠标来切换vim里面的tab窗口了,vim中的编辑光标也不会跟随鼠标了。
--------------------------------------------------------------------------------
4.spf-vim 运行
1.执行命令: sudo curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh 或者从https://github.com/spf13/spf13-vim下载spf13-vim-3文件夹, 直接点击运行 ./bootstrap.sh。 ( spf13-vim.sh 和 bootstrap.sh里面的内容是一样的。
2. 修改spf13-vim.sh 文件,REPO_URI='https://github.com/spf13/spf13-vim.git' 改为 REPO_URI='git://github.com/spf13/spf13-vim.git'
VUNDLE_URI="https://github.com/gmarik/vundle.git" 改为 VUNDLE_URI="git://github.com/gmarik/vundle.git"
2. sh spf13-vim.sh 运行脚本, 开始下载插件,会出现插件下载不动,程序卡死的情况。
3.点击ctrl+C, 点击回车键,退出VI。
4.需要单独执行 vim +BundleUpdate 就可以继续下载插件了。它会读取$HOME/.vimrc.bundles 文件,并下载相应的插件 (可以重复多执行步骤3和4)
建议:
删除~/.vimrc中的spell on,这玩意注释掉都没用,用起来很狗血
在~/.vimrc.local中加入color molokai
搜索tree,找到C-e,改成C-t, 否则与原来快捷键冲突
BTW, gg=G 可以自动整理代码格式
5.
spf13默认配置少了一个buffer管理器,当需要打开历史文件时很麻烦,这里推荐TabBar(也可以使用minibufferexplorer??)
另外,gnome的终端颜色个数也需要配置下,插件csapprox-terminal只支持88/256两种颜色.
CSApprox skipped; terminal only has 8 colors, not 88/256
Try checking :help csapprox-terminal for workarounds
Undotree <leader>u
NERDTree <c-e> 开启/关闭
<leader>e或者<leader>nt 开启,并显示当前文件所在目录树
ctrlp <c-p> 显示匹配找过的文件或者已经打开的文件或者最近使用过的文件
NERDCommenter <leader>c<space> 在正常模式下后者visual模式下给代码前加 // , 注释代码
neocomplcache 自动显示剩余字符串。 按 tab 进行切换, 点击<c-k>显示可能的snippet。
Fugitive 这个命令只有在目录设置了git,才有用。 版本控制
Tabularize 代码格式排列 <leader>a= / <leader>a: / <leader>a:: / <leader>a,
Tagbar 在右侧显示tag <leader>tt
EasyMotion <leader><leader>w 把第一个word字母标记成"abcdefghijklmnopqrstuvwxyz"
0 0
- vim相关
- vim 相关
- vim相关
- VIM相关
- VIM相关
- Vim相关
- vim相关
- vim 相关
- vim相关
- vim相关
- vim相关
- Vim相关
- VIM相关
- VIM 相关
- vim相关
- vim相关指令
- vim 窗口相关
- vim相关命令
- hdu 1560(IDA*)
- hdu 1813(IDA*)
- hdu 2918(IDA*)
- hdu 1430+hdu 3567(预处理)
- hdu 4640(状压dp)
- vim 相关
- uva 11380(最大流+拆点)
- 乎下的早也下得冷,这种天气人们
- uva 10246(最短路变形)
- uva 10972(边双连通分量)
- hdu 2545(并查集求节点到根节点的距离)
- hdu 4751(dfs染色)
- loj 1251(2-sat + 输出一组可行解)
- loj 1407(2-sat + 枚举 + 输出一组可行解 )