一次删除一个空格

时间:2011-04-27 17:26:13

标签: python tabs vim

如何配置vim以便我可以一次删除一个空格而不是整个标签?当我尝试为if语句调整多个测试时,我经常想这样做。在下面的示例中,condition3按我的意愿对齐,而condition2由于标签而关闭了一个空格。

if condition1 or \
    condition2 or \
   condition3:
    do something

我在OSX 10.6.7上使用vim 7.2.108并在我的代码文件中使用以下模式行:

# ex: tabstop=4 softtabstop=1 shiftwidth=4 expandtab: 

FWIW,此模式行允许我使用箭头键一次在一个空格中导航。

更新:这是我对Bram Mooleanar的示例vimrc文件所做的更改:

map z :w<cr>
map q :q!<cr>
map m :make<cr>

set expandtab
set shiftwidth=4
set tabstop=4

set bs=2        " backspace over anything in insert mode
set showmatch       " display the matching bracket of the pair
set nowrap      " don't wrap line to fit window
set showmatch       " show matching paren, bracket, or brace
set ruler       " show current cursor position at bottom
set incsearch       " show next match as you type in search pattern
set ignorecase
set smartcase

syntax on       " enable syntax highlighting

3 个答案:

答案 0 :(得分:4)

我想把它放在.vimrc文件中:

set expandtab

当你点击Tab键时,它基本上会将标签变成空格。

答案 1 :(得分:1)

我只需在正常模式下点击x即可删除单个字符。我还要指出Eric McSween的精彩缩进/ python.vim script。它并没有真正改变退格行为,但它允许你做更多符合PEP8的事情 - 使用Python的隐含线延续使用括号。使用脚本,上面的代码看起来像

if (condition1 or
    condition2 or
    condition3):
    do something

答案 2 :(得分:0)

看起来问题是您使用标签和空格的混合来管理对齐。 在大多数人处理相同文件的环境中,建议仅使用 空格或仅使用标签。
也就是说,您可以映射一个键来删除制表符,并在您的vimrc中添加以下内容,在其位置插入3个空格。

map <F1> s   <ESC>

如果您想在插入模式下执行此操作:

imap <F1> <BS>   

*请注意“&gt;”

后面有三个空格