linux下vim配置以及一些常用的快捷键
一些常用的vim编辑器快捷键:
h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
按「ctrl」+「b」:屏幕往“后”移动一页。
按「ctrl」+「f」:屏幕往“前”移动一页。
按「ctrl」+「u」:屏幕往“后”移动半页。
按「ctrl」+「d」:屏幕往“前”移动半页。
按数字「0」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的“行尾”。
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l。
「x」:每按一次,删除当前字符。
「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
「dd」:删除光标所在行,并用下一行进行填充。
「#dd」:从光标所在行开始删除#行。
「#G」:「15G」,表示移动光标至文章的第15行行首。
「w」:在冒号输入字母「w」就可以将文件保存起来。
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
ZZ 立即保存文件并退出。
p 粘贴
u 撤销一次
ctrl+r 反撤销一次
多窗口功能:在命令行模式下输入:sp,这样两个文件就可以同时在一个屏幕上显示,然后先按下ctrl + w,然后放开所有按键后,再按下向下箭头键或者向上箭头键就可以进行窗口的选择了,如果要关闭一个窗口,直接 : q 即可。
我的vimrc文件:
1 map <F9> :call SaveInputData()<CR> 2 func! SaveInputData() 3 exec "tabnew" 4 exec 'normal "+gP' 5 exec "w! /tmp/input_data" 6 endfunc 7 8 9 10 11 "colorscheme torte 12 "colorscheme murphy 13 "colorscheme desert 14 "colorscheme desert 15 "colorscheme elflord 16 colorscheme ron 17 18 19 20 21 "set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 22 "set termencoding=utf-8 23 "set encoding=utf-8 24 "set fileencodings=ucs-bom,utf-8,cp936 25 "set fileencoding=utf-8 26 27 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 28 " 显示相关 29 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 30 "set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示 31 "winpos 5 5 " 设定窗口位置 32 "set lines=40 columns=155 " 设定窗口大小 33 set go= " 不要图形按钮 34 "color asmanian2 " 设置背景主题 35 "set guifont=Courier_New:h10:cANSI " 设置字体 36 "syntax on " 语法高亮 37 autocmd InsertLeave * se nocul " 用浅色高亮当前行 38 autocmd InsertEnter * se cul " 用浅色高亮当前行 39 "set ruler " 显示标尺 40 set showcmd " 输入的命令显示出来,看的清楚些 41 "set cmdheight=1 " 命令行(在状态行下)的高度,设置为1 42 "set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议) 43 "set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离 44 set novisualbell " 不要闪烁(不明白) 45 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容 46 set laststatus=1 " 启动显示状态行(1),总是显示状态行(2) 47 set foldenable " 允许折叠 48 set foldmethod=manual " 手动折叠 49 "set background=dark "背景使用黑色 50 set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 51 " 显示中文帮助 52 if version >= 603 53 set helplang=cn 54 set encoding=utf-8 55 endif 56 " 设置配色方案 57 "colorscheme murphy 58 "字体 59 "if (has("gui_running")) 60 " set guifont=Bitstream\ Vera\ Sans\ Mono\ 11 61 "endif 62 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 63 "键盘命令 64 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 65 66 nmap <leader>w :w!<cr> 67 nmap <leader>f :find<cr> 68 69 " 映射全选+复制 ctrl+a 70 map <C-A> ggVGY 71 map! <C-A> <Esc>ggVGY 72 map <F12> gg=G 73 " 选中状态下 Ctrl+c 复制 74 vmap <C-c> "+y 75 "去空行 76 nnoremap <F2> :g/^\s*$/d<CR> 77 "比较文件 78 nnoremap <C-F2> :vert diffsplit 79 "新建标签 80 map <M-F2> :tabnew<CR> 81 "列出当前目录文件 82 map <F3> :tabnew .<CR> 83 "打开树状文件目录 84 map <C-F3> \be 85 "C,C++ 按F7编译运行 86 map <F7> :call CompileRunGcc()<CR> 87 func! CompileRunGcc() 88 exec "w" 89 if &filetype == 'c' 90 exec "!g++ % -o %<" 91 exec "! ./%<" 92 elseif &filetype == 'cpp' 93 exec "!g++ % -o %<" 94 exec "! ./%<" 95 elseif &filetype == 'java' 96 exec "!javac %" 97 exec "!java %<" 98 elseif &filetype == 'sh' 99 :!./% 100 elseif &filetype == 'py' 101 exec "!python %" 102 exec "!python %<" 103 endif 104 endfunc 105 "C,C++的调试 106 map <F5> :call Rungdb()<CR> 107 func! Rungdb() 108 exec "w" 109 exec "!g++ % -g -o %<" 110 exec "!gdb ./%<" 111 endfunc 112 113 114 115 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 116 ""实用设置 117 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 118 " 设置当文件被改动时自动载入 119 set autoread 120 " quickfix模式 121 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr> 122 "代码补全 123 set completeopt=preview,menu 124 "允许插件 125 filetype plugin on 126 "共享剪贴板 127 set clipboard+=unnamed 128 "从不备份 129 set nobackup 130 "make 运行 131 :set makeprg=g++\ -Wall\ \ % 132 "自动保存 133 set autowrite 134 set ruler " 打开状态栏标尺 135 set cursorline " 突出显示当前行 136 set magic " 设置魔术 137 set guioptions-=T " 隐藏工具栏 138 set guioptions-=m " 隐藏菜单栏 139 "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ 140 " 设置在状态行显示的信息 141 set foldcolumn=0 142 set foldmethod=indent 143 set foldlevel=3 144 set foldenable " 开始折叠 145 " 不要使用vi的键盘模式,而是vim自己的 146 set nocompatible 147 " 语法高亮 148 set syntax=on 149 " 去掉输入错误的提示声音 150 set noeb 151 " 在处理未保存或只读文件的时候,弹出确认 152 set confirm 153 " 自动缩进 154 set autoindent 155 set cindent 156 " Tab键的宽度 157 set tabstop=4 158 " 统一缩进为4 159 set softtabstop=4 160 set shiftwidth=4 161 " 不要用空格代替制表符 162 set noexpandtab 163 " 在行和段开始处使用制表符 164 set smarttab 165 " 显示行号 166 set number 167 " 历史记录数 168 set history=1000 169 "禁止生成临时文件 170 set nobackup 171 set noswapfile 172 "搜索逐字符高亮 173 set hlsearch 174 set incsearch 175 "行内替换 176 set gdefault 177 "编码设置 178 set enc=utf-8 179 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 180 "语言设置 181 set langmenu=zh_CN.UTF-8 182 set helplang=cn 183 " 我的状态行显示的内容(包括文件类型和解码) 184 "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} 185 "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] 186 " 总是显示状态行 187 set laststatus=2 188 " 命令行(在状态行下)的高度,默认为1,这里是2 189 set cmdheight=2 190 " 侦测文件类型 191 filetype on 192 " 载入文件类型插件 193 filetype plugin on 194 " 为特定文件类型载入相关缩进文件 195 filetype indent on 196 " 保存全局变量 197 set viminfo+=! 198 " 带有如下符号的单词不要被换行分割 199 set iskeyword+=_,$,@,%,#,- 200 " 字符间插入的像素行数目 201 set linespace=0 202 " 增强模式中的命令行自动完成操作 203 set wildmenu 204 " 使回格键(backspace)正常处理indent, eol, start等 205 set backspace=2 206 " 允许backspace和光标键跨越行边界 207 set whichwrap+=<,>,h,l 208 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) 209 set mouse=a 210 set selection=exclusive 211 set selectmode=mouse,key 212 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 213 set report=0 214 " 在被分割的窗口间显示空白,便于阅读 215 set fillchars=vert:\ ,stl:\ ,stlnc:\ 216 " 高亮显示匹配的括号 217 set showmatch 218 " 匹配括号高亮的时间(单位是十分之一秒) 219 set matchtime=1 220 " 光标移动到buffer的顶部和底部时保持3行距离 221 set scrolloff=3 222 " 为C程序提供自动缩进 223 set smartindent 224 " 高亮显示普通txt文件(需要txt.vim脚本) 225 au BufRead,BufNewFile * setfiletype txt 226 "自动补全 227 :inoremap ) <c-r>=ClosePair(')')<CR> 228 ":inoremap { {<CR>}<ESC>O 229 ":inoremap } <c-r>=ClosePair('}')<CR> 230 :inoremap ] <c-r>=ClosePair(']')<CR> 231 function! ClosePair(char) 232 if getline('.')[col('.') - 1] == a:char 233 return "\<Right>" 234 else 235 return a:char 236 endif 237 endfunction 238 filetype plugin indent on 239 "打开文件类型检测, 加了这句才可以用智能补全 240 set completeopt=longest,menu 241 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 242 243 244 245 246 247 248 "NERDtee设定 249 let NERDChristmasTree=1 250 let NERDTreeAutoCenter=1 251 let NERDTreeBookmarksFile=$VIM.'\Data\NerdBookmarks.txt' 252 let NERDTreeMouseMode=2 253 let NERDTreeShowBookmarks=1 254 let NERDTreeShowFiles=1 255 let NERDTreeShowHidden=1 256 let NERDTreeShowLineNumbers=1 257 let NERDTreeWinPos='left' 258 let NERDTreeWinSize=31 259 nnoremap f :NERDTreeToggle 260 map <F7> :NERDTree<CR>