网站维护的要求包括哪些,ppt模板简约 淡雅 大气,wordpress首页调用文章缩略图,厦门购买域名以后搭建网站Linux编辑器——vim的使用 一、什么是集成开发环境#xff1f;二、什么是vim#xff1f;三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift#xff1b;进入末行模式。… Linux编辑器——vim的使用 一、什么是集成开发环境二、什么是vim三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift进入末行模式。6.2 进行多文本编辑6.3 vim的分屏模式 七、简单vim配置 一、什么是集成开发环境
如vs 就是整个开发的生命周期建立项目写代码编写代码编译代码调试代码发布项目这种环境集就是集成开发环境编写、编译、运行、调试为一体。 Linux中指令级别操作 在linux当中它的一个一个工具都是各自独立得。 编写代码vim 编译代码gcc / g 调试代码gdb 维护项目结构自动化编译make / makefile 二、什么是vim vim是一款多模式的编辑器。 vim的前身是vivim是vi的升级版本vim兼容vi中大多数指令集并且vim还有一些新的特性在里面。 例如语法高亮可视化操作不仅可以在终端运行也可以运行于x windowmac oswindows。 三、vim的概念
vim有很多模式初学者只需要掌握三个就可以 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动字符、字或行的删除移动复制某区段及进入Insert mode下或者到 last line mode。 插入模式Insert mode 只有在Insert mode下才可以做文字输入按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。 末行模式(last line mode) 文件保存或退出也可以进行文件替换找字符串列出行号等操作。 在命令模式下shift:即可进入该模式。要查看你的所有模式打开vim底行模式直接输入 :help vim-modes 一共12种模式six BASIC modes和six ADDIYIONAL modes 打开、关闭、查看、查询、插入、删除、替换、撤销、复制等操作。 补充vim编写代码异常退出或者系统崩溃等问题时当我们再次打开那个文件该文件内容就变了。因为我们不正常退出时vim会将我们上次编写的代码保存在了一个.与原文件同名的.swp的隐藏文件里。 1.可以输入R命令恢复也可以输入D命令删除删除异常情况下的临时文件 2.输入:
ls -al 把swp文件删掉四、vim的基本操作
三种常用模式之间的关系 vim中的模式很多当使用者不知道当前所处的模式是处于一种什么样的状态万能的Esc键可以将使用者带回命令模式该模式也可以认为其他任意模式的入口。 打开vim 该目录下如果有test.c文件就会直接打开test.c没有就会创建一个test.c文件然后打开
vim test.c打开后就是命令模式 命令模式下按a/i/o就是插入模式 命令模式下按shift;就是底行模式 底行模式按 w保存当前文件 wq存盘并且退出 q!不存盘强制退出vim 插入模式 i, I 进入输入模式(Insert mode) i 为【从目前光标所在处输入】 I 为【在目前所在行的第一个非空格符处开始输入】。 a, A 进入输入模式(Insert mode) a 为【从目前光标所在的下一个字符处开始输入】 A 为【从光标所在行的最后一个字符处开始输入】。 o, O 进入输入模式(Insert mode) 这是英文字母 o 的大小写。o 为【在目前光标所在的下一行处输入新的一行】 O 为在目前光标所在处的上一行输入新的一行 五、vim命令模式命令集
5.1 移动光标
在命令模式下对光标进行上下左右移动这里指代都是小写上移k下移j左移h右移l都是移动一格。 当然我们也可以使用键盘右侧的上下左右但是键盘离手就慢了字母移动的光标可能对我们操作更加方便。 行内移动左移一个字符h 右移一个字符l移动到下一个单词的开头w移动到上一个单词的开头b移动到当前单词的结尾e移动到行首shift^移动到行尾shift$替换模式shiftr跨行移动下移一行j上移一行k移动到文件末尾G移动到文件开头gg移动到第n行nG移动到屏幕顶部H移动到屏幕中间M移动到屏幕底部L向前翻页Ctrlf向后翻页Ctrlb向前翻半页Ctrlu向后翻半页Ctrld查找移动 查找word并移动到第一个匹配处/word移动到下一个匹配处n移动到上一个匹配处N查找光标所在单词并移动到第一个匹配处*查找光标所在单词并移动到上一个匹配处#查找匹配的括号并移动到对应位置%高亮要查找的函数名shift3#按n的意思是下一个查找到的函数/字符串名 5.2 删除文字 删除文字每按一次删除光标所在位置的一个字符x指定删除所在位置后面包括自己在内的#个字符 #x大写的X每按一次可以删除光标所在位置前面的一个字符X#X表示删除光标所在的位置前面的#个字符#X删除光标所在行dd从光标所在位置向后面删除#行#dd5.3 复制粘贴 将光标所在之处到字尾的字符复制到缓冲区yw复制#个字符到缓冲区#yw复制光标所在行到缓冲区yy拷贝从光标所在行往下数#行文字#yy粘贴缓冲区内容到光标所在行p5.4 其他操作 替换替换光标所在位置的字符r替换光标所在之处的字符知道按下ESC键停止R撤销上一次操作如果您误执行一个命令可以马上按下u撤销上一个操作多次按u可以多次撤销u撤销的恢复对于错误撤销可以执行对撤销操作的撤销crtlr更改更改光标所在处的字到字尾处cw表示可以更改光标所在位往后的#个字符c#w跳至到指定的行列举处光标所在行的行号crtlg移动光标至文章的第#行的行首#G六、vim底行模式命令集
6.1 首先在命令模式下shift进入末行模式。 保存并退出vim保存文件w退出 Vim 编辑器q保存文件并退出 Vim 编辑器wq强制退出 Vim 编辑器不保存修改q!列出行号显示行号set nu隐藏行号set nonu搜索相关字符关键字向下搜索 word 这个字符串/word向上搜索 word 这个字符串?word重复上一次的搜索 n修改字符内容替换当前行第一个 old 为 new s/old/new替换当前行所有的 old 为 new s/old/new/g替换整个文件中所有的 old 为 new %s/old/new/g在这里输入指令需要注意的是%s///g第一个/后面输入的是想要修改的字符第二个/后面输入的是新的字符
6.2 进行多文本编辑
进入底行模式shift ;输入vs后面加想要打开的文件名称注意:vs后跟的文件名在该目录下不存在vim会默认帮你创建该文件该文件若是没有进行内容编写保存文件会销毁 如果你的电脑屏幕足够大可以创建多个文件进行编辑。 在vim进行多个文件编辑的时候底行模式退回命令模式输入Ctrl ww可以进行文件之间进行切换通过光标所在的位置来判断你所在文件的位置。 保存退出的时候退出的是光标所在的文件并不会说一下子退出vim直到退出最后一个文件才会真正退出vim 6.3 vim的分屏模式
先要进入底行模式才能输入分屏命令
sp水平分屏
vsp垂直分屏
ctrlww多屏之间切换
qall退出所有屏以此内推有wall、wqall
vim -o aa.txt bb.txt进入的时候就进行分屏o水平O垂直补充 批量化注释 1ctrlv 2.hjkl区域选择j 3.shiftil 4.// 5. Esc 批量化去注释 1.ctrlv 2…hjkl区域选择 3.d
七、简单vim配置
vim在启动文件的时候会读取当前用户工作目录下的特定的配置文件
cd ~进入自己账号的家目录
ls -al(查看是否有配置文件.vimrc没有就新建touch .vimrc)
因为我的是配置好得是一个软连接文件
打开.vimrc,就可以在里面配置各自效果 配置是个体力活为了不这么麻烦我教大家一种方法 该方法目前只支持 Centos7 x86_64. 安装方法 在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 “不推荐” 直接在 root 下执行): curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh bash ./install.sh需要按照提示输入 root 密码. 您的 root 密码不会被上传, 请放心输入. 注意curl指令需要安装sudo yum install curl 卸载方法: 在安装了 VimForCpp 的用户下执行: bash ~/.VimForCpp/uninstall.sh打开.vimrc看看里面的配置 vim-plug 插件管理器2 PlugInstall 安装插件3 PlugUpgrade 更新 vim-plug 自身4 call plug#begin(~/.vim/bundle)5 Plug Valloric/YouCompleteMe6 Plug bling/vim-airline7 Plug vim-airline/vim-airline-themes8 Plug morhetz/gruvbox9 Plug octol/vim-cpp-enhanced-highlight10 Plug SirVer/ultisnips11 Plug tpope/vim-surround12 Plug flazz/vim-colorschemes13 Plug scrooloose/nerdtree14 Plug python-mode/python-mode15 Plug scrooloose/nerdcommenter16 Plug Yggdroot/LeaderF17 Plug cpiger/NeoDebug18 Plug ryanoasis/vim-devicons19 Plug autozimu/LanguageClient-neovim, {20 \ branch: next,21 \ do: bash install.sh,22 \ }23 Plug fatih/vim-go24 call plug#end()25 26 27 主题28 colorscheme atom29 colorscheme molokai30 colorscheme luna-term31 32 以下为 gruvbox 主题专用 33 colorscheme gruvbox34 let g:gruvbox_contrast_lightlight 35 let g:gruvbox_contrast_darkhard36 let g:gruvbox_improved_warnings137 38 39 零碎配置40 set hlsearch41 let mapleader ; 42 set nu43 behave mswin44 syntax on45 set si46 set ai 47 set nowritebackup48 set backspaceindent,eol,start49 set expandtab50 set tabstop251 set softtabstop252 set shiftwidth253 set fileencodingsutf-8,gbk,cp936,cp950,latin154 set encodingutf-855 set ruler56 set showcmd57 set incsearch58 set ruler59 set foldmethodmarker60 filetype plugin on61 不吱吱叫62 set noeb vb t_vb63 set cursorline64 文件修改之后自动载入65 set autoread66 在上下移动光标时光标的上方或下方至少会保留显示的行数67 set scrolloff568 左下角不显示当前vim模式69 set noshowmode70 71 if has(autocmd)72 au BufReadPost * if line(\) 1 line(\) line($) | exe normal! g\ | endif 73 endif74 75 76 airline 彩色状态栏/标签页77 这几个是挑选的还不错的几个 airline 主题78 let g:airline_themeravenpower79 let g:airline_thememinimalist80 let g:airline_themekolor81 let g:airline_themejellybeans82 let g:airline_themedistinguished83 let g:airline_themebase16_google84 let g:airline_themebehelit85 86 set helplangcn87 set ambiwidthdouble88 let g:airline_powerline_fonts 189 let g:airline#extensions#tabline#enabled 190 let g:airline#extensions#tabline#buffer_nr_show 191 关闭状态显示空白符号计数92 let g:airline#extensions#whitespace#enabled 093 let g:airline#extensions#whitespace#symbol !94 设置consolas字体95 set guifontConsolas\ for\ Powerline\ FixedD:h1196 if !exists(g:airline_symbols)97 let g:airline_symbols {}98 endif99 unicode symbols
100 let g:airline_left_sep »
101 let g:airline_left_sep ▶
102 let g:airline_right_sep «
103 let g:airline_right_sep ◀
104 let g:airline_symbols.crypt
105 let g:airline_symbols.linenr ☰
106 let g:airline_symbols.linenr ␊
107 let g:airline_symbols.linenr
108 let g:airline_symbols.linenr ¶
109 let g:airline_symbols.maxlinenr
110 let g:airline_symbols.maxlinenr ㏑
111 let g:airline_symbols.branch ⎇
112 let g:airline_symbols.paste ρ
113 let g:airline_symbols.paste Þ
114 let g:airline_symbols.paste ∥
115 let g:airline_symbols.spell Ꞩ
116 let g:airline_symbols.notexists ∄
117 let g:airline_symbols.whitespace Ξ
118
119 powerline symbols
120 let g:airline_left_sep
121 let g:airline_left_alt_sep
122 let g:airline_right_sep
123 let g:airline_right_alt_sep
124 let g:airline_symbols.branch
125 let g:airline_symbols.readonly
126 let g:airline_symbols.linenr ☰
127 let g:airline_symbols.maxlinenr
128 let g:airline_symbols.maxlinenr
129
130 old vim-powerline symbols
131 let g:airline_left_sep ⮀
132 let g:airline_left_alt_sep ⮁
133 let g:airline_right_sep ⮂
134 let g:airline_right_alt_sep ⮃
135 let g:airline_symbols.branch ⭠
136 let g:airline_symbols.readonly ⭤
137 let g:airline_symbols.linenr ⭡
138 let g:airline_symbols.linenr
139
140
141 代码折叠
142 set foldenable
143 折叠方法
144 manual 手工折叠
145 indent 使用缩进表示折叠
146 expr 使用表达式定义折叠
147 syntax 使用语法定义折叠
148 diff 对没有更改的文本进行折叠
149 marker 使用标记进行折叠, 默认标记是 {{{ 和 }}}
150 set foldmethodindent
151 set foldlevel99
152 代码折叠自定义快捷键 zz
153 let g:FoldMethod 0
154 fun! ToggleFold()
155 if g:FoldMethod 0
156 exe normal! zM
157 let g:FoldMethod 1
158 else
159 exe normal! zR
160 let g:FoldMethod 0
161 endif
162 endfun
163
164
165 快速运行
166 func! Compile()
167 exec w
168 if filetype c
169 exec !gcc -g % -o % ./%
170 elseif filetype cpp
171 exec !g -g % -o % ./%
172 elseif filetype cc
173 exec !g -g % -o % ./%
174 elseif filetype python
175 exec !python %
176 elseif filetype sh
177 exec !sh %
178 endif
179 endfunc
180
181
182 YouCompleteMe
183 set completeoptlongest,menu
184 autocmd InsertLeave * if pumvisible() 0|pclose|endif
185 inoremap expr CR pumvisible() ? \C-y : \CR
186
187 let g:ycm_global_ycm_extra_conf ~/.ycm_extra_conf.py
188 let g:ycm_confirm_extra_conf 0
189 let g:ycm_key_invoke_completionC-j
190 let g:ycm_error_symbol E
191 let g:ycm_warning_symbol W
192 使用 NerdFont 中的图标表示错误和警告
193 let g:ycm_error_symbol
194 let g:ycm_warning_symbol 卵
195 let g:ycm_enable_diagnostic_signs 1
196 let g:ycm_enable_diagnostic_highlighting 1
197 let g:ycm_collect_identifiers_from_comments_and_strings 0
198 let g:ycm_complete_in_comments 1
199 let g:ycm_complete_in_strings 1
200 let g:ycm_min_num_of_chars_for_completion 2
201 let g:ycm_python_binary_path python
202 let g:ycm_semantic_triggers {
203 \ c,cpp,python,java,go,erlang,perl: [re!\w{2}],
204 \ cs,lua,javascript: [re!\w{2}],
205 \}
206
207
208 Tagbar(函数列表)
209 let g:tagbar_ctags_bin/usr/bin/ctags
210 let g:tagbar_width20
211 let g:tagbar_left1
212 let g:tagbar_sort 0
213
214
215 NERDTree(文件列表)
216 let g:NERDTreeWinPosright
217 let g:NERDTreeWinSize20
218
219
220 CtrlP(快速查找文件)
221 let g:ctrlp_working_path_modea
222
223
224 cpp-enhanced-highlight(c 语法高亮)
225 高亮类成员函数标准库和模板
226 let g:cpp_class_scope_highlight 1
227 let g:cpp_member_variable_highlight 1
228 let g:cpp_concepts_highlight 1
229 let g:cpp_experimental_simple_template_highlight 1
230 文件较大时使用下面的设置高亮模板速度较快但会有一些小错误
231 let g:cpp_experimental_template_highlight 1
232
233
234 UltiSnips(代码模板)
235 let g:UltiSnipsExpandTriggerC-j
236 let g:UltiSnipsListSnippetsC-e
237 let g:UltiSnipsJumpForwardTriggerC-j
238 let g:UltiSnipsJumpBackwardTrggerC-k
239
240
241 LeaderF
242 let g:Lf_WindowHeight 0.30
243
244
245 cquery
246 let g:LanguageClient_serverCommands {
247 \ cpp: [~/.VimForCpp/cquery/bin/cquery, --log-file/tmp/cquery/cq.log],
248 \ cxx: [~/.VimForCpp/cquery/bin/cquery, --log-file/tmp/cquery/cq.log],
249 \ hpp: [~/.VimForCpp/cquery/bin/cquery, --log-file/tmp/cquery/cq.log],
250 \ cc: [~/.VimForCpp/cquery/bin/cquery, --log-file/tmp/cquery/cq.log],
251 \ c: [~/.VimForCpp/cquery/bin/cquery, --log-file/tmp/cquery/cq.log],
252 \ h: [~/.VimForCpp/cquery/bin/cquery, --log-file/tmp/cquery/cq.log],
253 \ }
254
255 let g:LanguageClient_loadSettings 1
256 let g:LanguageClient_settingsPath /tmp/cquery/settings.json
257
258 关闭 cquery 的诊断信息, 使用 Ycm 的足矣
259 let g:LanguageClient_diagnosticsEnable0
260
261 指定项目的根目录标记.
262 let g:LanguageClient_rootMarkers [.root, .svn, .git]
263
264
265 PyMode
266 let g:pymode_lint_cwindow 0
267 let g:pymode_lint_ignore [E305, E501, E302, E391, W391, W605,]
268
269
270 按键映射和快捷键提示
271 跳转到定义
272 nnoremap c-k :YcmCompleter GoToDefinitionElseDeclarationCR
273 返回到跳转前的位置
274 nnoremap c-l c-o
275
276 切换鼠标状态
277 function! MouseToggle()
278 if mouse #
279 set mousea
280 else
281 set mouse
282 endif
283 endfunction
284
285 切换绝对行号和相对行号
286 function! NumToggle()
287 if relativenumber # norelativenumber
288 set relativenumber
289 else
290 set norelativenumber
291 endif
292 endfunction
293
294 function GuideEsc()
295 unmap a
296 unmap s
297 unmap d
298 unmap f
299 unmap g
300 unmap w
301 unmap q
302 unmap esc
303 echo
304 endfunction
305 function Terminal()
306 sp
307 terminal
308 endfunction
309
310 function MenuA()
311 echo [a] 跳转定义 [s] 查找引用 [d] 重命名 [f] 修正错误 [g] 函数签名 [q] 取消
312 nnoremap silentnowait a :call GuideEsc()cr:call LanguageClient_textDocument_definition()CR
313 nnoremap silentnowait s :call GuideEsc()cr:call LanguageClient_textDocument_references()CR:lopenCR:lopenCR
314 nnoremap silentnowait d :call GuideEsc()cr:call LanguageClient_textDocument_rename()CR
315 nnoremap silentnowait f :call GuideEsc()cr:YcmCompleter FixItCR
316 nnoremap silentnowait g :call GuideEsc()cr:call LanguageClient_textDocument_hover()CR
317 nnoremap silentnowait w nop
318 nnoremap silentnowait q :call GuideEsc()cr
319 nnoremap silentnowait esc :call GuideEsc()cr
320 endfunction
321
322 function MenuS()
323 echo [a] 查找函数 [s] 打开文件 [d] buffer查找 [f] 最近文件 [q] 取消
324 nnoremap silentnowait a :call GuideEsc()cr:LeaderfFunctioncr
325 nnoremap silentnowait s :call GuideEsc()cr:LeaderfFilecr
326 nnoremap silentnowait d :call GuideEsc()cr:LeaderfBuffercr
327 nnoremap silentnowait f :call GuideEsc()cr:LeaderfMrucr
328 nnoremap silentnowait g nop
329 nnoremap silentnowait w nop
330 nnoremap silentnowait q :call GuideEsc()cr
331 nnoremap silentnowait esc :call GuideEsc()cr
332 endfunction
333
334 function MenuD()
335 echo [a] 编译运行 [s] 编译检查 [q] 取消
336 nnoremap silentnowait a :call GuideEsc()cr:call Compile()cr
337 nnoremap silentnowait s :call GuideEsc()cr:YcmDiagsCR
338 nnoremap silentnowait d nop
339 nnoremap silentnowait f nop
340 nnoremap silentnowait g nop
341 nnoremap silentnowait w nop
342 endfunction
343
344 function MenuF()
345 echo [a] 函数列表 [s] 文件列表 [d] .h/.c [f] 标签页 [q] 取消
346 nnoremap silentnowait a :call GuideEsc()cr:TagbarTogglecr
347 nnoremap silentnowait s :call GuideEsc()cr:NERDTreeTogglecr
348 nnoremap silentnowait d :call GuideEsc()cr:ATcr
349 nnoremap nowait f :call GuideEsc()cr:tabe
350 nnoremap silentnowait g nop
351 nnoremap silentnowait w nop
352 nnoremap silentnowait q :call GuideEsc()cr
353 nnoremap silentnowait esc :call GuideEsc()cr
354 endfunction
355
356 function MenuWA()
357 echo [a] 切换鼠标 [s] 切换粘贴 [d] 切换行号 [f] 不可见字符 [q] 取消
358 nnoremap silentnowait a :call GuideEsc()cr:call MouseToggle()cr
359 nnoremap silentnowait s :call GuideEsc()cr:set paste!cr
360 nnoremap silentnowait d :call GuideEsc()cr:call NumToggle()cr
361 nnoremap silentnowait f :call GuideEsc()cr:set list!cr
362 nnoremap silentnowait g nop
363 nnoremap silentnowait w nop
364 nnoremap silentnowait q :call GuideEsc()cr
365 nnoremap silentnowait esc :call GuideEsc()cr
366 endfunction
367
368 function MenuWS()
369 echo [a] 文档注释 [s] 折叠/展开 [q] 取消
370 nnoremap silentnowait a :call GuideEsc()cr:Doxcresc
371 nnoremap silentnowait s :call GuideEsc()cr:call ToggleFold()cr
372 nnoremap silentnowait d nop
373 nnoremap silentnowait f nop
374 nnoremap silentnowait g nop
375 nnoremap silentnowait w nop
376 nnoremap silentnowait q :call GuideEsc()cr
377 nnoremap silentnowait esc :call GuideEsc()cr
378 TODO 快速注释和格式整理
379 endfunction
380
381 function MenuW()
382 echo [a] 切换选项 [s] 代码格式 [q] 取消
383 nnoremap silentnowait a :call GuideEsc()cr:call MenuWA()cr
384 nnoremap silentnowait s :call GuideEsc()cr:call MenuWS()cr
385 nnoremap silentnowait d nop
386 nnoremap silentnowait f nop
387 nnoremap silentnowait g nop
388 nnoremap silentnowait w nop
389 nnoremap silentnowait q :call GuideEsc()cr
390 nnoremap silentnowait esc :call GuideEsc()cr
391 endfunction
392
393 function GuideMapTopMenu()
394 nnoremap silentnowait a :call MenuA()cr
395 nnoremap silentnowait s :call MenuS()cr
396 nnoremap silentnowait d :call MenuD()cr
397 nnoremap silentnowait f :call MenuF()cr
398 nnoremap silentnowait t :call Terminal()cr
399 nnoremap silentnowait g nop
400 nnoremap silentnowait w :call MenuW()cr
401 nnoremap silentnowait q :call GuideEsc()cr
402 nnoremap silentnowait esc :call GuideEsc()cr
403 endfunction
404
405 nnoremap silentnowait space :call GuideEntry()cr
406 function GuideEntry()
407 1. 重新映射相关快捷键到 space
408 call GuideMapTopMenu()
409 2. 打印菜单
410 echo [a] 语义 [s] 查找 [d] 调试 [f] 窗口 [w] 其他 [q] 取消 [t] 终端
411 endfunction
412
413
414 其他
415 调整窗口移动
416 nnoremap H C-wh
417 nnoremap J C-wj
418 nnoremap K C-wk
419 nnoremap L C-wl
420 快速保存
421 inoremap jk esc:wcr
422 nnoremap esc :wcr
423 inoremap esc esc:wcr
424 快速缩进
425 vnoremap gv
426 vnoremap gv