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> e  
 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.'DataNerdBookmarks.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>  
View Code
原文地址:https://www.cnblogs.com/wally/p/3452288.html