Fork me on GitHub
Suzf  Blog

Tag vim

VIM space and tab Mutual conversion

VIM space 与 tab 互转

在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:
set ts=4  (注:ts是tabstop的缩写,设TAB宽4个空格)
set expandtab

ret 是replace tab 的缩写
用法: [range]ret[ab]! [new-tabstop]

对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:

TAB替换为空格:
< 将第一行到文件尾的tab转换成space,每个tab用4个space替代。 >

方案A
:set ts=4
:set expandtab
:%retab!

方案B
:set expandtab
:%ret! 4
注:如果没有给定4,则用当前的tab宽度设定替换为space。

空格替换为TAB:

:set ts=4
:set noexpandtab
:%retab!

*** 加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB。***

其它相关命令:
:set tabstop=4        设定tab宽度为4个字符
:set shiftwidth=4     设定自动缩进为4个字符
:set expandtab        用space替代tab的输入
:set noexpandtab      不用space替代tab的输入

 

How-to compile vim with lua

vim 重新编译支持lua

安装依赖包
yum install ncurses lua lua-devel readline -y

安装LuaJit
luajit不在centos的官方repo里面,我们需要编译安装;
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar -xzvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
make && make install

下载源码
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
tar xzvf vim-7.4.tar.bz2
cd vim74

编译
vim的编译其实很简单,就configure -> make -> make install 这样的流程。
但是要添加 Lua支持,就有一些麻烦了。
configure的配置大概是这样的:
./configure --prefix=/usr/local/vim74 --with-features=huge --with-luajit --enable-luainterp=yes --enable-fail-if-missing
# 如果你的机器没有安装lua 和luajit的话会在检查lua支持那里中断了。
# make && make install

运行
# /usr/local/vim74/bin/vim
/usr/local/vim74/bin/vim: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

# 显然是安装的luajit有问题。我们找一下luajit这个.so文件在哪里
# find / -name libluajit-5.1.so.2
/usr/local/lib/libluajit-5.1.so.2
^C

# 我们需要给这个libluajit-5.1.so.2生成一个软链接
# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

这样再运行vim就不会有问题了~也有Lua支持了
#/usr/local/vim74/bin/vim  --version | grep lua
+dialog_con      +lua             +rightleft       +windows
Linking: gcc   -L/usr/local/lib -Wl,--as-needed -o vim    -lSM -lICE -lXpm -lXt -lX11 -lSM -lICE  -lm -ltinfo -lelf -lnsl  -lselinux  -L/usr/lib -lluajit-5.1

mv /usr/bin/vim{,.old}
cp ~/vim74/src/vim /usr/bin

Reference:
- http://www.cnblogs.com/spch2008/p/4593370.html
- http://blog.wuxu92.com/z-compile-vim-with-lua-support-in-centos-7/

 

使用 VIM 打造 Python 开发IDE

编程常用的文本编辑器就那么几种常见的, 有人喜欢Vim, 有人喜欢emacs, 也有人喜欢IDE, 例如Pycharm, eclipse等. 今天我们不谈孰优孰劣, 只要适合自己就可以了.

如果你喜欢VIM, 又希望有IDE常见的功能. 你完全可以将这些功能集成到Vim中. 但是, 对于一个初学者, 或像我一样的懒人, 一个一个的查找并试验配置这些插件未免有些太麻烦. 因此, 本文介绍 spf13-vim, 可以简单的满足我们的需要.

处理Vim中粘贴文本的格式问题

在Vim插入模式下,我们可以使用操作系统的复制粘贴命令来将一些外部的文本拷贝至正在编辑的文件中。然而,有时候这样直接粘贴过来的多行文本,格式会乱掉。仔细观察,我们发现其实格式只是缩进的问题。这时候,可以有几种办法:

  1. Visual模式下使用=重新格式化:首先按v键进入Visual模式,然后通过方向键等选中粘贴过来的所有行,再按=键Vim就会自动重新格式化这些行的缩进了。这种方法对于粘贴过来的代码比较适用,如果粘贴的文本不是代码,并且还有特定的缩进意义的话,则不大适用。
  2. 关闭自动缩进粘贴过来的文本缩进乱了的原因,有可能是Vim设置了"set cindent"(C风格的自动缩进)。那么,可以尝试:set nocindent暂时关闭自动缩进再粘贴。
  3. 粘贴模式方法2并不总是管用,因为缩进乱了的原因还可能是Vim开启了根据文件类型自动缩进的插件("filetype plugin indent on")。其实,Vim本身提供了粘贴插入模式("Insert (paste)")可以很好的解决问题。:set paste使得插入模式切换为粘贴插入模式,这时候再进入插入模式后,粘贴外部的多行文本就不会有缩进问题了。粘贴完毕后,可以:set nopaste恢复。如果经常需要反复切换的话,还可以设置切换的快捷键,如设置:set pastetoggle=<F2>,可以使用F2功能键来切换paste模式。

    另外,还可以通过以下三行设置,使得快捷键切换时在左下方显示当前模式。更多可参考:help paste:help pastetoggle

    nnoremap <F2> :set invpaste paste?<CR>
    set pastetoggle=<F2>
    set showmode

另外,除了Windows的<Ctrl-C><Ctrl-V>复制粘贴快捷键之外,还有另外一套快捷键<Ctrl-Insert><Shift-Insert>,这是Windows和Linux(起码在我的RedHat上如此)上都可以使用的。

本文出自 夜惊心的博客