关于‘VIM’

Ubuntu下用Vim编辑且不改变GBK编码的文件

发表于2012年3月14日

Ubuntu下用Vim编辑且不改变GBK编码的文件

sudo vi /var/lib/locales/supported.d/zh

添加以下内容:

zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN.GB2312 GB2312

执行

sudo locale-gen
vi ~/.vimrc

添加以下内容

set encoding=utf-8
set fileencodings=cp936,gb18030,ucs-bom,utf-8,big5,euc-jp,euc-kr,latin1
set termencoding=utf-8
language zh_CN.GB18030

以上配置可以实现打开编辑GBK编码的文件,但保存时并不改变编码。

通过RopeVIM在VIM中实现Python自动完成

发表于2009年12月12日

ropevim可以实现在vim中自动完成,自动import等功能。
参考: http://rope.sourceforge.net/ropevim.html

下载几个rope,ropevim,ropemode:

mkdir ~/install/ropehg
hg clone http://bitbucket.org/agr/rope/ ~/install/ropehg/rope
hg clone http://bitbucket.org/agr/ropevim/ ~/install/ropehg/ropevim
hg clone http://bitbucket.org/agr/ropemode/ ~/install/ropehg/ropemode

可以选择安装:

cd ~/install/ropehg/rope  
python setup.py install
cd ~/install/ropehg/ropevim  
python setup.py install
cd ~/install/ropehg/ropemode  
python setup.py install

或者在 .vimrc 中添加下面的代码:

let $PYTHONPATH .= ":/Users/liwen/install/ropehg/rope:/Users/liwen/install/ropehg/ropemode:/Users/liwen/install/ropehg/ropevim"
source /Users/liwen/install/ropehg/ropevim/ropevim.vim

配置ropevim的代码如下

let ropevim_codeassist_maxfixes=10
let ropevim_guess_project=1
let ropevim_vim_completion=1
let ropevim_enable_autoimport=1
let ropevim_extended_complete=1
 
function! CustomCodeAssistInsertMode()
    call RopeCodeAssistInsertMode()
    if pumvisible()
        return "\<C-L>\<Down>"
    else
        return ''
    endif
endfunction
 
function! TabWrapperComplete()
    let cursyn = synID(line('.'), col('.') - 1, 1)
    if pumvisible()
        return "\<C-Y>"
    endif
    if strpart(getline('.'), 0, col('.')-1) =~ '^\s*$' || cursyn != 0
        return "\<Tab>"
    else
        return "\<C-R>=CustomCodeAssistInsertMode()\<CR>"
    endif
endfunction
 
inoremap <buffer><silent><expr> <Tab> TabWrapperComplete()

自动完成直接可以用,但 RopeRename 不工作,可能是工程太大,分起来比较费劲。还不错。

PS:
1. hg – mercurial
2. 如果遇到以下错误

Error detected while processing function LoadRope:
line    1:
E319: Sorry, the command is not available in this version: python << EOF
line    2:
E492: Not an editor command: import ropevim
line    3:
E492: Not an editor command: EOF
Press ENTER or type command to continue

可能由于vim没有启用python支持,可以打开一个buffer,在命令模式下输入

:python print "hello"

如能正常打印,则配置正确,否则需要重新编译或者安装python支持

sudo port install vim +python26
sudo port install mvim +python26

Good luck!!