#python #tabs #vim
#python #вкладки #vim
Вопрос:
Как мне настроить vim так, чтобы я мог удалять вкладку через пробел за раз, а не всю вкладку целиком? Мне часто хочется сделать это, когда я пытаюсь согласовать несколько тестов для оператора if. В приведенном ниже примере условие 3 выровнено так, как я хочу, а условие 2 отключено на один пробел из-за табуляции.
if condition1 or
condition2 or
condition3:
do something
Я использую vim 7.2.108 в OSX 10.6.7, и в моем файле кода есть следующая строка режима:
# ex: tabstop=4 softtabstop=1 shiftwidth=4 expandtab:
Черт возьми, эта строка режима позволяет мне использовать клавиши со стрелками для перемещения по вкладке через один пробел за раз.
Обновление: Вот изменения, которые я внес в пример файла vimrc из Bram Mooleanar:
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
Ответ №1:
Я бы сказал, поместите это в ваш файл .vimrc:
set expandtab
Который в основном превращает вкладки в пробелы, когда вы нажимаете клавишу tab.
Комментарии:
1. Привет, Dhaivat, начав с чистого vimrc и тестового файла, чтобы попробовать ваше предложение, я обнаружил свою проблему: когда у меня установлен softtabstop, это не позволяло мне удалять вкладку через пробел за раз. Однако, когда я перечитал файл vimrc, который я использовал (пример, написанный Брэмом Муленааром), моя проблема возвращается.
Ответ №2:
Я бы просто нажал x
в обычном режиме, чтобы удалить один символ. Я также укажу на отличный скрипт indent / python.vim от Eric McSween. На самом деле это не меняет поведение обратного пробела, но позволяет вам сделать что-то большее в соответствии с PEP8 — используя подразумеваемое продолжение строки Python с использованием круглых скобок. В скрипте приведенный выше код будет выглядеть следующим образом
if (condition1 or
condition2 or
condition3):
do something
Комментарии:
1. Спасибо, Сэм. Я попробую ваши предложения. Даже простое включение условий в скобки решило бы мою проблему.
Ответ №3:
Похоже, проблема в том, что вы используете сочетание табуляций и пробелов для управления выравниванием. В большинстве сред, где много людей работают с одними и теми же файлами, рекомендуется использовать только пробелы или только вкладки.
Тем не менее, вы могли бы сопоставить ключ для удаления символа табуляции и вставить вместо него 3 пробела, добавив следующее в ваш vimrc.
map <F1> s <ESC>
Если вы хотите сделать это в режиме вставки:
imap <F1> <BS>
* обратите внимание, что после «>» есть три пробела
Комментарии:
1. Спасибо, Сэм. Я не знаю, как мои табуляции и пробелы перепутались, но я поэкспериментирую с этими сопоставлениями клавиш vim.