centos7安装vim8.2

1.卸载原有的vim

sudo yum remove vim
2.使用Git下载vim8源码
git clone git@github.com:vim/vim.git
Git的简单配置可以参考CentOS7-Git配置

3.安装依赖文件

sudo yum install -y python-devel python3-devel ruby ruby-devel lua lua-devel perl per-devel perl-ExtUtils-Embed libX11-devel ncurses-devel

4.编译安装vim8

./configure --with-features=huge \
            --enable-multibyte \
            --enable-python3interp=yes \
            --with-python3-config-dir=/usr/local/python/lib/python3.9/config-3.9-aarch64-linux-gnu \
            --enable-gui=gtk2 \
            --enable-pythoninterp \
            --enable-cscope \
            --prefix=/usr/local/vim

make
make install
添加环境变量
export PATH=$PATH:/usr/local/vim/bin

5.创建软链接
sudo ln -s /usr/local/vim/bin/vim /usr/bin/vim
创建成功后,可以方便的使用vim命令打开vim编辑器

配置选项说明

--with-features=huge:支持最大特性
--enable-pythoninterp:支持python2编写的插件
--enable-python3interp:支持python3编写的插件
--enable-rubyinterp:支持ruby编写的插件
--enable-luainterp:支持lua编写的插件
--enable-perlinterp:支持perl编写的插件
--with-python-config-dir=/usr/lib64/python2.7/config/:指定python2的位置,不同的机器位置不同,确保指定的文件夹中包含config.c文件
--with-python3-config-dir=/usr/local/python3.6/lib/python3.6/config-3.6m-x86_64-linux-gnu/:同上,也要确保有config.c文件
关于python3的安装可以参考CentOS7-Python3安装
--enable-cscope:打开cscope支持
--enable-multibyte:支持多字节,可以输入中文
--prefix=/usr/local/vim:指定vim的安装位置

作者:Gpeko
链接:https://www.jianshu.com/p/a828441cd354
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

CentOS7.6升级Git版本

安装centos7最小化系统,再安装VIM插件coc.nvim出现
Error: javascript bundle not found, please compile code ~ | of coc.nvim by esbuild.
或者出现:
please compile coc.nvim by: npm run build

不管怎样就是安装不上,查资料也不管,最后重新装系统都不行,有的说是升级git,升级后再安装确实管用,但也不一定是这个问题。记录一下git升级

CentOS7上的Git版本太陈旧,在使用过程中会遇到问题,因此需要升级git版本。

git --version

git version 1.8.3.1
  系统版本:(CentOS 7.6)

安装依赖
  源代码安装和编译git,需安装一些依赖。

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker

卸载旧版本
yum remove git

编译安装Git
  Git软件包可在此获取:https://mirrors.edge.kernel.org/pub/software/scm/git/

  我们选择最新版的:

git-2.23.0.tar.xz 16-Aug-2019 20:17 5M

安装步骤
复制代码

cd /usr/local/
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.23.0.tar.xz
tar -xvf git-2.23.0.tar.xz
mv git-2.23.0 git
cd git
./configure  --prefix=/usr/local
make && make install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
source /etc/profile

验证版本
[root@localhost ~]# git --version
git version 2.23.0

非root用户使用
如果是非root用户使用git,则需要配置下该用户下的环境变量。

$ echo "export PATH=$PATH:/usr/local/git/bin" >> ~/.bashrc
$ source ~/.bashrc

vim安装Python自动补全插件coc.nvim

vim安装自动补全插件coc.nvim
一、vim必须8.0以上
二、安装node.js
curl -sL install-node.now.sh/lts | bash
三、安装plug或vundle插件,以下内容加入插件中

Plug 'neoclide/coc.nvim', {'branch': 'master', 'do': 'yarn install --frozen-lockfile'}
或
Plugin 'neoclide/coc.nvim', {'branch': 'master', 'do': 'yarn install --frozen-lockfile'}

然后在vim运行:

:PlugInstall

如果coc.vim下载不了,可以进入插件目录git下载到本地在运行PlugInstall
接着运行

:CocInstall coc-json coc-tsserver

四、把以下内容加入.vimrc ,原文地址:https://github.com/neoclide/coc.nvim

" Set internal encoding of vim, not needed on neovim, since coc.nvim using some
" unicode characters in the file autoload/float.vim
set encoding=utf-8

" TextEdit might fail if hidden is not set.
set hidden

" Some servers have issues with backup files, see #649.
set nobackup
set nowritebackup

" Give more space for displaying messages.
set cmdheight=2

" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
" delays and poor user experience.
set updatetime=300

" Don't pass messages to |ins-completion-menu|.
set shortmess+=c

" Always show the signcolumn, otherwise it would shift the text each time
" diagnostics appear/become resolved.
if has("patch-8.1.1564")
" Recently vim can merge signcolumn and number column into one
set signcolumn=number
else
set signcolumn=yes
endif

" Use tab for trigger completion with characters ahead and navigate.
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config.
inoremap <silent><expr> <TAB>
    \ pumvisible() ? "\<C-n>" :
    \ <SID>check_back_space() ? "\<TAB>" :
    \ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1]  =~# '\s'
endfunction

" Use <c-space> to trigger completion.
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif

" Make <CR> auto-select the first completion item and notify coc.nvim to
" format on enter, <cr> could be remapped by other vim plugin
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
                            \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"

" Use `[g` and `]g` to navigate diagnostics
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)

" GoTo code navigation.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)

" Use K to show documentation in preview window.
nnoremap <silent> K :call <SID>show_documentation()<CR>

function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
    execute 'h '.expand('<cword>')
elseif (coc#rpc#ready())
    call CocActionAsync('doHover')
else
    execute '!' . &keywordprg . " " . expand('<cword>')
endif
endfunction

" Highlight the symbol and its references when holding the cursor.
autocmd CursorHold * silent call CocActionAsync('highlight')

" Symbol renaming.
nmap <leader>rn <Plug>(coc-rename)

" Formatting selected code.
xmap <leader>f  <Plug>(coc-format-selected)
nmap <leader>f  <Plug>(coc-format-selected)

augroup mygroup
autocmd!
" Setup formatexpr specified filetype(s).
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
" Update signature help on jump placeholder.
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
augroup end

" Applying codeAction to the selected region.
" Example: `<leader>aap` for current paragraph
xmap <leader>a  <Plug>(coc-codeaction-selected)
nmap <leader>a  <Plug>(coc-codeaction-selected)

" Remap keys for applying codeAction to the current buffer.
nmap <leader>ac  <Plug>(coc-codeaction)
" Apply AutoFix to problem on the current line.
nmap <leader>qf  <Plug>(coc-fix-current)

" Map function and class text objects
" NOTE: Requires 'textDocument.documentSymbol' support from the language server.
xmap if <Plug>(coc-funcobj-i)
omap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap af <Plug>(coc-funcobj-a)
xmap ic <Plug>(coc-classobj-i)
omap ic <Plug>(coc-classobj-i)
xmap ac <Plug>(coc-classobj-a)
omap ac <Plug>(coc-classobj-a)

" Remap <C-f> and <C-b> for scroll float windows/popups.
if has('nvim-0.4.0') || has('patch-8.2.0750')
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
endif

" Use CTRL-S for selections ranges.
" Requires 'textDocument/selectionRange' support of language server.
nmap <silent> <C-s> <Plug>(coc-range-select)
xmap <silent> <C-s> <Plug>(coc-range-select)

" Add `:Format` command to format current buffer.
command! -nargs=0 Format :call CocAction('format')

" Add `:Fold` command to fold current buffer.
command! -nargs=? Fold :call     CocAction('fold', <f-args>)

" Add `:OR` command for organize imports of the current buffer.
command! -nargs=0 OR   :call     CocAction('runCommand', 'editor.action.organizeImport')

" Add (Neo)Vim's native statusline support.
" NOTE: Please see `:h coc-status` for integrations with external plugins that
" provide custom statusline: lightline.vim, vim-airline.
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}

" Mappings for CoCList
" Show all diagnostics.
nnoremap <silent><nowait> <space>a  :<C-u>CocList diagnostics<cr>
" Manage extensions.
nnoremap <silent><nowait> <space>e  :<C-u>CocList extensions<cr>
" Show commands.
nnoremap <silent><nowait> <space>c  :<C-u>CocList commands<cr>
" Find symbol of current document.
nnoremap <silent><nowait> <space>o  :<C-u>CocList outline<cr>
" Search workspace symbols.
nnoremap <silent><nowait> <space>s  :<C-u>CocList -I symbols<cr>
" Do default action for next item.
nnoremap <silent><nowait> <space>j  :<C-u>CocNext<CR>
" Do default action for previous item.
nnoremap <silent><nowait> <space>k  :<C-u>CocPrev<CR>
" Resume latest coc list.
nnoremap <silent><nowait> <space>p  :<C-u>CocListResume<CR>

五、进入vim输入CocConfig进入配置文件,然后输入

CocInstall coc-pyright

对于Python3自动补全,其他语言参照:https://github.com/neoclide/coc.nvim/wiki/Install-coc.nvim
六、成功后如果弹出警告框在.vimrc加入以下内容

let g:coc_disable_startup_warning = 1

vim查找替换分屏详解

VIM模式省略,基本命令带过...
插入:i、a、o;I、A、O
保存、退出:q、wq、!q、w、!q、wq=x
移动:h、j、k、l #h一次移动几行
w: 移至下一个单词的词首 #w 一次移动几个单词
e: 跳至当前或下一个单词的词尾
b: 跳至当前或前一个单词的词首
0: 绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾

G:跳转至第#行;

G:最后一行
p:粘贴下
P:粘贴上
y:复制
u:撤销 最多30次 #u 撤销N次
r:替换单个
R:替换多个
.:重复前一次编辑
末行模式下,直接给出行号即可
Ctrl+f: 向下翻一屏
Ctrl+b: 向上翻一屏
Ctrl+d: 向下翻半屏
Ctrl+u: 向上翻半屏
x: 删除光标所在处的单个字符

x: 删除光标所在处及向后的共#个字符

d命令跟跳转命令组合使用

dw, #de, #db

dd: 删除当前光标所在行

dd: 删除包括当前光标所在行在内的#行

末行模式下:
StartADD,EndADDd
.: 表示当前行
$: 最后一行
+#: 向下的#行

:.,+5d  #删除当前后和后5行
:.,$d  删除当前行到最后一行
:2,5d  删除2到5行

Ctrl+r:撤消最近一次撤消操作
可视化模式:
v: 按字符选取
V:按矩形选取
查找
/PATTERN ?PATTERN n,N翻页
在末行模式下使用s命令
s/PATTERN/string/g g全部 i不区分大小写
ADDR1,ADDR2s#PATTERN#string#gi 开始和结束中间内容查找替换

使用vim编辑多个文件
vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
退出
:qa 全部退出

分屏显示一个文件
Ctrl+w, s: 水平拆分窗口
Ctrl+w, v: 垂直拆分窗口

在窗口间切换光标:
Ctrl+w, ARROW
:qa 关闭所有窗口

分窗口编辑多个文件
vim -o : 水平分割显示
vim -O : 垂直分割显示

将当前文件中部分内容另存为另外一个文件
末行模式下使用w命令
:w
:ADDR1,ADDR2w /path/to/somewhere # 1,10w /root/abc.txt 把当前文件1-10行写入abc.txt 如果有内容就覆盖

将另外一个文件的内容填充在当前文件中
:r /path/to/somefile # :r /etc/issue 把issue内容填充到当前文件光标下方

跟shell交互
:! COMMAND

vim 将文件所有行合并到一行
在 Normal Mode下执行:
ggvGJ
[
gg 用于跳到行首
v 转换成 visual 模式
G 跳到最后一行
J 合并行
]

windows中vim编辑器python配置

syntax enable
syntax on
set ai
set nu
set tabstop=4
set nobackup
set cursorline
set ruler
set autoindent
colorscheme koehler
set smartindent
set shiftwidth=4
set history=100
set helplang=cn
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1,gbk18030,utf-16,big5,gb2312
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
map  :!python.exe %

在ubuntu中用vim很爽,windows中pycharm很不错,调试用起来更爽,就是太TM占内存了,个人用的VIM配置保存,C:\Program Files (x86)\Vim\_vimrc