vim 视频 Riv:QuickStart
2012年10月19日 15:11
因为gnome-shell 老是出现奇怪的登录时freeze现象,
而ubuntu的unity的firefox拖拽链接和图片也存在freeze现象。(https://bugs.launchpad.net/unity/+bug/773382)
果断Arch卸载gnome-shell,转用awesome。
登陆成功,感觉良好。
我的awesome设置。
https://github.com/Rykka/awesome
主要改动是增加了自定义快捷键,定制了wibox的widgets和menu项。
同时也改动了easystroke的快捷键以适合awesome的设置。
1.delimiter in :s :g :v Tip 406
:s+/usr+/usr/local+
:s#/usr#/usr/local#
代替:s/\/usr/\/usr\/local/
2.range in :s :g :v Tip 1611
可以用search
:/this/,/that/s/this/that/
‘;’会在运行中将cursor移动过去,而‘,’不会移动cursor
:1,+1 与:1;+1
3. 给当前文件加入行号
:%s/^/\=line('.').' '/
如果要使行号整齐,
可以用
:%s/^/\=line('.')."\t"/
或者
:%s/^/\=printf("% 4d ",line('.'))/
4. string "" 和 literal string ''
string里的"\"和'"'需要用"\"转义,
literal string 里的 "'"需要 用 "''"转义
"\"" == '"'
"\\" == '\'
"'" == ''''
在literal string里可以用 <Ctrl-Q>{press} 来输入特殊字符
与 "\<press>" 相同
即 "\<C-W>" 与 '' 里直接输入的特殊字符相同。
5. '[[:graph:]]' 和 '[!-~]' 和 '[\d33-\d126]' 等价
可以通过这个脚本来验证
for i in range(3,226)
let oi = printf("%o",i)
exe "let oi = " . "\"\\". oi . "\""
echo i ':' oi oi =~ '[[:graph:]]' oi =~ '[!-~]' oi =~ '[\d33-\d126]'
endfor
6. 使用regiser重复相似的工作。
let @a = "$"
let @b = "la\<c-r>a\<esc>"
let @c = "20@b"
那么在source了这段脚本后,'@c' 则会重复20次插入@a的字符 '$'
要改变插入字符,只需要改变@a
更深入的话,可以插入表达式
比如'@c'给每行插入行号
let @a = "printf('% 4d ',line('.'))"
let @b = "I\<c-r>=\<c-r>a\<CR>\<esc>j"
let @c = "gg999@b"
这是之前的一篇文章 vim:撤销最后关闭的buffer 的后续。
因为依云同学表示那个小脚本还有很大提升空间,
于是我就把它改成了小插件并上传到了vim.org 和github.com
https://github.com/Rykka/lastbuf.vim
重新打开最后关闭的buffer
:hid 所关闭的buffer始终可以重新打开
:e # :only :q :close :bun :bd 所关闭的buffer默认可以重新打开
:bd 所关闭的buffer默认不会重新打开
:bw 所关闭的buffer 始终不会打开
NOTE: 关闭的buffer如果仍有窗口在编辑,将不会重新打开。
:LastBuf 或 <c-w><c-z>
打开刚才关闭的buffer。
可以用 map <c-s-t> :LastBuf<CR> 来重新mapping
全局变量 g:lastbuf_num ,最大撤销数量
let g:lastbuf_num=20
全局变量 g:lastbuf_seekall,是否始终打开unloaded buffer。
如果不需要打开unloaded buffer。将其设成0并 set nohidden
let g:lastbuf_seekall=1
全局变量 g:lastbuf_level,决定重新打开buffer的层级。
" :hid bufhidden (始终会重新打开)
" :bun bufunload (重新打开如果 level >= 1)
" :bd bufdelete (重新打开如果 level >= 2)
" :bw bufwipeout (绝对不会重新打开!)
" 默认为 1 .即:bd 和:bw关闭的不会重新打开
" 如果想要和 'nohidden'一样的效果
" 设为 0 并且 set nohidden
let g:lastbuf_level=1
ArchLinux的gvim版本比较新,
但是其python2的library链接有错。
当import gtk就会出现Error import的错误提示。
这个错误我知道已经有好几个月了,
之前在github上就有用ArchLinux的人表示用不了我插件里的取色器。
但是当时我用的还是Ubuntu,所以没去fix。
不过如今我用上了Arch,当然得解决这个问题:D
方法很简单,重新编译gvim:
hg clone https://vim.googlecode.com/hg/ vim cd vim/src ./configure --enable-multibyte --with-features=huge --enable-gui=gtk2 \ --enable-python3interp=yes --enable-rubyinterp \ --enable-pythoninterp=yes \ --enable-tclinterp --enable-fontset \ --with-python-config-dir=/usr/lib/python2.7/config \ --with-python3-config-dir=/usr/lib/python3.2/config-3.2mu make && sudo make install
NOTE:
1.要将python2 link 为 python,否则会提示找不到python2.x
在/usr/bin下
ln -s python2 python
PS:安装好后可以用 ln -sf python3 python 把它替换回来
2.--with-python3-config-dir为/usr/lib/python3.2/config-3.2mu
3.如果还是找不到python2,可以在 auto/config.cache里找到
vi_cv_var_python_version并将此行改成
vi_cv_var_python_version=${vi_cv_var_python_version=2.7}
PS: 看了下gvim的PKGBUILD。里面有这么一句
# fix python name
sed -i -e 's|vi_cv_path_python, python|vi_cv_path_python, python2|' \
vim-build/src/configure.in
那改这句应该也行。
也就是在configure.in里面把
vi_cv_path_python, python 改成 vi_cv_path_python, python2