惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 观无明

IE9 + django开发版WEB服务器 不响应或Socket报错 google chrome 下django用户登录失败的问题 django 开发多语言网站 不愁男女比例不协调 Word文件如源码一样也可比较和合并 python 的字符编码和中文处理 - 观无明 - 博客园 djang 测试心得 my django development environment (virtualenv+pip+django) nginx+fastcgi+django实践笔记 django 开发 - 小心模板文件的编码格式(utf-8) 汉王电子书D20使用笔记 使用south实现Django的数据库升级迁移 在Windows上使用Linux命令 cygwin 仍有人在真心关注这灾难 CruiseControl中应用NCover和NCoverExplore CruiseControl中使用NUnit中测试WEB服务 Resharper封装(Encapsulate)域Field为属性Property的命名问题 数据库开发的持续集成 - CruiseControl.Net的项目配置 数据库开发的持续集成 - Liquibase的简介和应用
VIM 笔记 (for python )
观无明 · 2010-05-06 · via 博客园 - 观无明

Technorati 标签: vim

汇集网上各位兄台的内容,自己做了个笔记

配置

最常用配置

set nocompatible  "使得vim避免了原始vi的一些漏洞和限制

set autoindent      "使用你当前行的缩进来设置你下一行的缩进


set smartindent  "自动根据当前行的缩进,预测下一行的缩进

"在文本缩进时使用4格制表符(自动或者手动调整缩进)
set tabstop=4
set shiftwidth=4

set expandtab "将输入的TAB自动展开成空格。开启后要输入TAB,需要Ctrl-V<TAB>
set softtabstop=4 "方便在开启了et后使用退格(backspace)键,每次退格将删除X个空格

set nobackup    "取消备份文件

set showmatch   "光标快速定位到匹配的括号

set guioptions-=T "去掉工具条
set guioptions-=m "去掉菜单栏

set vb t_vb=  "屏蔽遇到无效命令时发出的蜂鸣声,而用一个快速的闪烁取而代之
set ruler        "确保每一个窗口都包行一个显示当前光标位置的状态栏
set nohls      "默认情况下,查找到的内容会被高亮显示。这个命令关闭了高亮显示查找内容
set incsearch  "当输入字符时,快速将光标定位到相应的位置

最有用的命令

. 输入‘.’(一个句号)能重复上一条执行的命令
K 进入当前光标下字符串的命令解释页面(例如如果你光标在sleep上,按下K键你就能看到sleep的命令解释页面)
% 将光标定位在大括号,中括号...上,然后按下输入%,将能让光标定位于该大括号或是中括号的另一半上
CTRL-V 块操作,如给每行加注释#:

1, Ctrl + V (windows 下为Ctrl + Q) 进入 VIM 的块操作模式.

2, 使用 j, k 键上下移动,选中这三行,需要确保每行的首列包含在选中块中。

3, 键入 I (大写 i),即在行首插入。 输入 Python 的注释符 ‘#’。

4, 按下 ESC 键。

:%!xxd 查看文件的十六进制编码, 返回文本状态 :%!xxd -r
   
   
:help options  查看所有VIM提供的选项

有用的插件

NERD Commenter 帮助你成块的注释和反注释代码
snipMate

实现代码片段,如在 c 文件中输入 for <tab> , 则自动输入整个for循环需要的代码片段。
为了不和pydiction 争用 <tab> 键,改plugin/snipMate.vim,使得snipMate用ctrl+j :

ino <silent> <c-j> <c-r>=TriggerSnippet()<cr>
"ino <silent> <tab> <c-r>=TriggerSnippet()<cr>
snor <silent> <c-j> <esc>i<right><c-r>=TriggerSnippet()<cr>
"snor <silent> <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>

Snippetsemu 实现代码片段,和snipMate一样

为Python做设置

autocmd FileType python setlocal et sta sw=4 sts=4  "4个空格替代TAB

代码折叠

python_fold

命令: zo 展开; zc 折起;  zn  全部展开;  zN 全部折起

代码补全(pydiction)
  • 拷贝文件python_pydiction.vim到 C:\Program Files\Vim\vimfiles\ftplugin 或 ~/.vim/after/ftplugin/
  • 拷贝文件 pydiction.py和complete-dict到 C:\Program Files\Vim\vimfiles\ftplugin\pydiction 或 ~/.vim/after/ftplugin/pydiction(当然,放到任何地方都可以,你只要在接下的vimrc文件中把位置配对即可
  • 编辑 vimrc文件

filetype plugin on
let g:pydiction_location='C:\Program Files\Vim\vimfiles\ftplugin\pydiction\complete-dict'

  • 使用方法

<tab> 键 呼出待选项

待选项列表菜单出来后,可以通过tab 向下选择,shift+tab反向选择(上下箭头也可)

不满意就前点别的键(自己试试便知)

代码补全(pysmell)

这个东东和pydiction用处差不多,选一个搞就行了。大概的区别是:

  • 按键没有pydiction方便
  • 字典信息放在项目目录里,不污染全局,这个想法不错

easy_install pysmell

copy pysmell.vim to ~/.vim/plugins

编辑vimrc:  

autocmd FileType python setlocal omnifunc=pysmell#Complete

imap <F4> <C-X><C-O>  “把缺省的Ctrl – X + O 改为 F4

到Python 目录下  

pysmell . -x site-package test -o PYSMELLTAGES.pythonlib;

pysmell site-package/django -o PYSMELLTAGES.django

项目目录下

pysmell . -o PYSMELLTAGS

就可以使用Vim 的自动补全了,按键:

F4  呼出待选窗口

Ctrl – N 向下选择

Ctrl – P 向上选择

代码检查

pyflakes-vim ,安装很简单,懒得翻了:

1. Make sure your vimrc has "filetype plugin indent on" so that pyflake-vim's ftplugin files are loaded automatically when you open a Python buffer.
2. Drop extracted files in ~/.vim/ftplugin/python.

有问题的代码下面会有破浪号,光标移过去就可以在状态栏看到错误信息了。

ctag 和 taglist

拷贝ctags.exe 到vim可执行文件所在目录,确认这个目录在系统路径中

vimrc中配置taglist
let Tlist_Ctags_Cmd="ctags.exe" 
map <F2> :Tlist<CR>  

F2    打开、关闭浏览窗口的快捷键

Ctrl – 两个w      切换在Tag窗口和源码窗口中切换

懒人的方法

上述的东东挨个配起来很麻烦,有个懒人的办法,把所有上述插件和配置都搞定了:

  • 下一个gvim72装上
  • 下这个压缩包vim.rar (for windows),然后解压去覆盖你的vim安装目录

注意事项:

  • 这个包里使用的vim和gvim编译为支持Python2.5, 如果你安装的是2.6,请到这里去下载对应的vim和gvim
  • python环境中需要安装pysmell

汇总一下快捷键:

pydiction 在插入编辑模式下按<tab> tab 向下选择,shift+tab反向选择(上下箭头也可)
pysemll 在插入编辑模式下按F4

Ctrl – N 向下选择; Ctrl – P 向上选择

taglist F2    打开、关闭浏览窗口

Ctrl – 两个w      切换在Tag窗口和源码窗口中切换

在浏览窗口通过 j,k键上下选择,回车就使源码窗口跳到对应节,如函数