12

私はしばらくの間、Vim で Python をプログラミングしてきましたが、最後の開いた括弧のレベルに自動インデントするように設定する方法を理解できませんでした。

pep8 によると、開き括弧があり、80 列に収まるように行を分割する必要がある場合は、その開き括弧で次の行を続行することになっています。例:

calling_some_really_long_function(that, has, way, too, many, arguments, to, fit,
                                  on, one, line)

明らかにこれはクレイジーな例ですが、これが Python で行を分割する方法です。

私が本当にできるようにしたいのは、Vimをセットアップして、入力fit,<cr>するとカーソルが開いた括弧のすぐ右にある次の行に置かれるようにすることですon,<tab><space>キーを事前に設定します。

Vim の python コードのオートフォーマッターを信頼することはないと思いますが、それが機能する場合はボーナスポイントです。

4

3 に答える 3

1

これは少し調整できますが、99% の確率で機能するはずです。これを .vimrc に追加してください:

function! PythonEnterFunc()
  let l:li = getline('.')
  execute "normal! a\<Cr>"
  if l:li =~ '([^)]*$'
    let l:pos = stridx(l:li, '(') + 1
    for i in range(l:pos)
      execute "normal! a\<Space>"
    endfor
  endif
endfunction

au FileType python inoremap <Cr> <Esc>:call PythonEnterFunc()<CR>a
于 2016-09-29T22:12:20.113 に答える
0

gq選択範囲全体に VISUAL ブロックを使用するか、gqqまたはのような動きで を使用します。gqj

于 2012-02-29T23:53:14.500 に答える