【VIM配置】

本文详细介绍了如何个性化配置vim以提升编程效率,包括文本字体、大小调整、历史记录管理、行号显示、软硬制表符设置、自动缩进、C/C++语言特定的缩进方式、编译与运行快捷键、文件类型特定的操作等功能,以及vim的基本快捷键操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接修改_vimrc 文件

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set guifont=courier_new:h16"修改文本字体和大小
set nu  "显示行号
set history=1000000  "修改历史记录数量
set tabstop=4  	"设置(软)制表符宽度为4
set softtabstop=4
set shiftwidth=4  "设置缩进的空格数为4

set autoindent "设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置
set cindent  "设置使用 C/C++ 语言的自动缩进方式
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s "设置C/C++语言的具体缩进方式(以我的windows风格为例)
if &term=="xterm"
    set t_Co=8
             set t_Sb=^[[4%dm
    set t_Sf=^[[3%dm
endif
colo evening  
set showcmd  
set nobackup  
set noswapfile
set mouse=v "鼠标使用范围
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
    else
        return a:char
    endif
endfunction
map <F5> :call CR()<CR>  "映射编译并运行为F5
imap <F5> <ESC>:call CR()<CR>  
function! CR()
    if &filetype is 'java'
	    exec "w"
        exec "!javac\ -d\ .\ %"
        exec "!java\ %<"
    elseif &filetype is 'cpp'|| &filetype == 'c'
        exec "w"    
        exec "!g++ -DSHY -O2 -g % -o %<"    
        exec "! %<" 
    endif
endfunction
"-DSHY 表示预定义宏 SHY
func Debug()  
exec "w"    

    if &filetype == 'c'  
        exec "!gcc % -g -DSHY -o %<.exe"  
        exec "!gdb %<.exe"  
    elseif &filetype == 'cpp'  
        exec "!g++ % -g -DSHY -o %<.exe"  
        exec "!gdb %<.exe"  
    elseif &filetype == 'java'  
        exec "!javac %"  
        exec "!jdb %<"
    endif  
endfunc
map <F6> :call Debug()<CR>  "映射调试快捷键
map <C-A> ggVG"+y    "映射全选直接复制
imap <c-]> {<cr>}<c-o>O<left><right>  
map <F2> :call SetTitle()<CR> "重置为下面内容
func SetTitle()
let l = 0
let l = l + 1 | call setline(l,'/* ***********************************************')
let l = l + 1 | call setline(l,'Author :Darkangelwings  ')
let l = l + 1 | call setline(l,'Created Time :'.strftime('%c'))
let l = l + 1 | call setline(l,'File Name :'.expand('%'))
let l = l + 1 | call setline(l,'************************************************ */')
let l = l + 1 | call setline(l,'#pragma comment(linker, "/STACK:102400000,102400000")')
let l = l + 1 | call setline(l,'#include <cstdio>')
let l = l + 1 | call setline(l,'#include <cstring>')
let l = l + 1 | call setline(l,'#include <cmath>')
let l = l + 1 | call setline(l,'#include <map>')
let l = l + 1 | call setline(l,'#include <queue>')
let l = l + 1 | call setline(l,'#include <stack>')
let l = l + 1 | call setline(l,'#include <vector>')
let l = l + 1 | call setline(l,'#include <string>')
let l = l + 1 | call setline(l,'#include <algorithm>')
let l = l + 1 | call setline(l,'using namespace std;')
let l = l + 1 | call setline(l,'#define rep(i,a,n) for(int i = a; i < n; i++)')
let l = l + 1 | call setline(l,'#define repe(i,a,n) for(int i = a; i <= n; i++)')
let l = l + 1 | call setline(l,'#define per(i,n,a) for(int i = n; i >= a; i--)')
let l = l + 1 | call setline(l,'#define clc(a,b) memset(a,b,sizeof(a))')
let l = l + 1 | call setline(l,'#define INF 0x3f3f3f3f')
let l = l + 1 | call setline(l,'#define eps 1e-8')
let l = l + 1 | call setline(l,'#define pi acos(-1.0)')
let l = l + 1 | call setline(l,'typedef long long LL;')
let l = l + 1 | call setline(l,'int main()')
let l = l + 1 | call setline(l,'{')
let l = l + 1 | call setline(l,'#ifdef SHY')
let l = l + 1 | call setline(l,'    freopen("e:\\1.txt","r",stdin);')
let l = l + 1 | call setline(l,'#endif')
let l = l + 1 | call setline(l,'     ')
let l = l + 1 | call setline(l,'    return 0;')
let l = l + 1 | call setline(l,'}')
endfunc


 


vim配置 配置链接

 

vim快捷键

【MYADD 】

viw  选中当前鼠标停留的整个单词

vw 只选中当前光标停留位置之后的整个单词

一、移动光标
1、左移h、右移l、下移j、上移k
2、向下翻页ctrl + f,向上翻页ctrl + b
3、向下翻半页ctrl + d,向上翻半页ctrl + u
4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^
5、移动光标到下一个句子 ),移动光标到上一个句子(
6、移动到段首{,移动到段尾}
7、移动到下一个词w,移动到上一个词b
8、移动到文档开始gg,移动到文档结束G
9、移动到匹配的{}.().[]处%
10、跳到第n行 ngg 或 nG 或 :n
11、移动光标到屏幕顶端H,移动到屏幕中间M,移动到底部L
12、读取当前字符,并移动到本屏幕内下一次出现的地方 *
13、读取当前字符,并移动到本屏幕内上一次出现的地方 #

二、查找替换
1、光标向后查找关键字 #或者g#
2、光标向前查找关键字 *或者g*
3、当前行查找字符 fx, Fx, tx, Tx
4、基本替换 :s/s1/s2 (将下一个s1替换为s2)
5、全部替换 :%s/s1/s2
6、只替换当前行 :s/s1/s2/g
7、替换某些行 :n1,n2 s/s1/s2/g
8、搜索模式为 /string,搜索下一处为n,搜索上一处为N
9、制定书签 mx, 但是看不到书签标记,而且只能用小写字母
10、移动到某标签处 `x,1旁边的键
11、移动到上次编辑文件的位置 `.

PS:.代表一个任意字符 *代表一个或多个字符的重复
         正则表达式的内容将会在后续文章中整理

三、编辑操作
1、光标后插入a, 行尾插入A
2、后插一行插入o,前插一行插入O
3、删除字符插入s, 删除正行插入S
4、光标前插入i,行首插入I
5、删除一行dd,删除后进入插入模式cc或者S
6、删除一个单词dw,删除一个单词进入插入模式cw
7、删除一个字符x或者dl,删除一个字符进入插入模式s或者cl
8、粘贴p,交换两个字符xp,交换两行ddp
9、复制y,复制一行yy
10、撤销u,重做ctrl + r,重复.
11、智能提示 ctrl + n 或者 ctrl + p
12、删除motion跨过的字符,删除并进入插入模式 c{motion}
13、删除到下一个字符跨过的字符,删除并进入插入模式,不包括x字符 ctx
14、删除当前字符到下一个字符处的所有字符,并进入插入模式,包括x字符,cfx
15、删除motion跨过的字符,删除但不进入插入模式 d{motion}
16、删除motion跨过的字符,删除但不进入插入模式,不包括x字符 dtx
17、删除当前字符到下一个字符处的所有字符,包括x字符 dfx
18、如果只是复制的情况时,将12-17条中的c或d改为y
19、删除到行尾可以使用D或C
20、拷贝当前行 yy或者Y
21、删除当前字符 x
22、粘贴 p
23、可以使用多重剪切板,查看状态使用:reg,使用剪切板使用”,例如复制到w寄存器,”wyy,或者使用可视模式v”wy
24、重复执行上一个作用使用.
25、使用数字可以跨过n个区域,如y3x,会拷贝光标到第三个x之间的区域,3j向下移动3行
26、在编写代码的时候可以使用]p粘贴,这样可以自动进行代码缩进
27、 >> 缩进所有选择的代码
28、 << 反缩进所有选择的代码
29、gd 移动到光标所处的函数或变量的定义处
30、K 在man里搜索光标所在的词

31、合并两行 J
32、若不想保存文件,而重新打开 :e!

33、若想打开新文件 :e filename,然后使用ctrl + ^进行文件切换
四、窗口操作
1、分隔一个窗口:split或者:vsplit
2、创建一个窗口:new或者:vnew
3、在新窗口打开文件:sf {filename}
4、关闭当前窗口:close
5、仅保留当前窗口:only
6、到左边窗口 ctrl + w, h
7、到右边窗口 ctrl + w, l
8、到上边窗口 ctrl + w, k
9、到下边窗口 ctrl + w, j
10、到顶部窗口 ctrl + w, t
11、到底部窗口 ctrl + w, b

五、宏操作
1、开始记录宏操作q[a-z],按q结束,保存操作到寄存器[a-z]中
2、@[a-z]执行寄存器[a-z]中的操作
3、@@执行最近一次记录的宏操作

六、可视操作
1、进入块可视模式 ctrl + v
2、进入字符可视模式 v
3、进入行可视模式 V
4、删除选定的块 d
5、删除选定的块然后进入插入模式 c
6、在选中的块同是插入相同的字符 I<String>ESC

七、跳到声明
1、[[ 向前跳到顶格第一个{  
2、[] 向前跳到顶格第一个}
3、]] 向后跳到顶格的第一个{
4、]] 向后跳到顶格的第一个}
5、[{ 跳到本代码块的开头
6、]} 跳到本代码块的结尾

八、挂起操作
1、挂起Vim ctrl + z 或者 :suspend
2、查看任务 在shell中输入 jobs
3、恢复任务 fg [job number](将后台程序放到前台)或者 bg [job number](将前台程序放到后台)
4、执行shell命令 :!command
5、开启shell命令 :shell,退出该shell exit
6、保存vim状态 :mksession name.vim
7、恢复vim状态 :source name.vim
8、启动vim时恢复状态 vim -S name.vim


 

### Vim 配置教程及相关信息 Vim 是一款功能强大的文本编辑器,其配置可以通过 `.vimrc` 文件实现个性化定制。以下是关于 Vim 配置的一些重要知识点以及示例。 #### .vimrc 的位置和作用 `.vimrc` 文件是 Vim 编辑器的核心配置文件,用于设置用户偏好选项并加载插件。它的默认路径如下: - Linux 和 macOS: `~/.vimrc` - Windows: `%USERPROFILE%\_vimrc` 通过修改此文件,用户可以调整 Vim 的行为、界面样式以及其他高级特性[^2]。 --- #### 基础配置示例 以下是一个简单的 `.vimrc` 配置示例: ```vim " 设置语法高亮 syntax on " 显示行号 set number " 启用鼠标支持 set mouse=a " 自动缩进 set autoindent " 智能缩进(针对不同编程语言) set smartindent " 设置 Tab 键宽度为 4 个空格 set tabstop=4 set shiftwidth=4 set expandtab " 开启搜索高亮 set hlsearch " 使用深色背景主题 set background=dark " 状态栏显示当前模式 set showmode ``` 以上配置实现了基础的功能增强,例如语法高亮、自动缩进、Tab 替换为空格等[^4]。 --- #### 高级配置与插件管理 对于更复杂的场景,建议使用插件来扩展 Vim 功能。常见的插件及其用途包括: 1. **NERDTree**: 提供目录树视图。 2. **CtrlP**: 实现快速文件搜索。 3. **YouCompleteMe**: 支持代码自动补全。 4. **Emmet**: 加速 HTML/CSS 编写。 5. **Airline**: 更美观的状态栏。 为了方便管理和更新插件,推荐使用 Vundle 或 Plug.vim 工具。以下是一个基于 Plug.vim 的插件配置示例: ```vim call plug#begin('~/.vim/plugged') Plug 'scrooloose/nerdtree' " 目录树插件 Plug 'ctrlpvim/ctrlp.vim' " 快速文件搜索 Plug 'bling/vim-airline' " 美观状态栏 Plug 'ycm-core/YouCompleteMe' " 代码自动补全 Plug 'mattn/emmet-vim' " Emmet 支持 call plug#end() ``` 完成上述配置后,运行 `:PlugInstall` 即可安装所有指定的插件[^3]。 --- #### 主题与配色方案 Vim 支持多种内置和第三方主题。要更改颜色方案,可以在 `.vimrc` 中添加类似以下的内容: ```vim colorscheme desert " 内置沙漠风格主题 let g:airline_theme='solarized' " Airline 插件的主题 ``` 如果需要更多主题选择,可以从 GitHub 下载社区贡献的颜色方案包,并将其放置到 `$HOME/.vim/colors` 目录下[^4]。 --- #### 性能优化提示 当启用大量插件时,可能会遇到启动速度变慢的问题。解决方法之一是在 `.vimrc` 中加入延迟加载逻辑。例如: ```vim autocmd FileType python call plug#load('jedi-vim') " 只有打开 Python 文件时才加载 jedi-vim ``` 此外,还可以禁用不必要的功能或减少复杂度较高的插件数量[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值