2011-10-05 3 views
7

여기 내 문제가 있습니다. 내가 빔이를 입력하면파이썬에서 Vim의 줄 바꿈 동작을 어떻게 해결할 수 있습니까?

class SomeClass(object): 
    def some_method(self): 
    some_variable = SomeOtherClass.some_other_method(some_parameter=some_value) 

는 이런 일이 발생 :

class SomeClass(object): 
    def some_method(self): 
    some_variable = 
    SomeOtherClass.some_other_method(some_parameter=some_value) 

단지 아니에요의 내가 파이썬 파일을 가지고 있고 내가 여기에 마지막처럼, 정말로 긴 줄을 입력하고있어 가정 해 봅시다 나쁜 작풍, 그것은 PEP8를 끊는다. 내가 무엇을하고 싶은지 :

class SomeClass(object): 
    def some_method(self): 
    some_variable = SomeOtherClass.some_other_method(
     some_parameter=some_value) 

PEP8과 일치합니다. (이 논의의 목적을 위해, 나는 줄 바꿈 동작이 아닌 들여 쓰기 동작에만 관심이 있어요.)

편집 : 단지 선이 표시되는 방법을 제어하는 ​​linebreak과 함께 작동 breakat. 그것은 (분명히) textwidth과 연계하여 하드 라인 브레이크가 삽입되는 위치를 결정하지 않습니다. 그래서 아래의 제 생각은 작동하지 않을 것입니다 ...

놀랍게도, 나는 다른 사람들이이 문제를 공유하고 있음을 알려주지 않고, 내가 뭔가 잘못하고 있다고 생각하게합니다. 그럼에도 불구하고, 내 생각은 설정에 ( 문자를 추가하는 것이 었습니다 (내가있는 동안 및 {와 함께).

나는 이것을 시도했다; 여기 :set breakat의 출력입니다 :

breakat= ^[email protected]*-+;:,./?([{ 

그러나, 그것은 아무 소용이입니다. 내가하는 일과 상관없이 Vim은 위의 "="다음에 깨는 것을 주장합니다. def 바로 뒤에 오는 긴 함수 이름에도 똑같은 문제가 있습니다. 여기

내의 .vimrc의 전체 내용은 다음과 같습니다. (I 등 어떤 플러그인이없는이 문제를 알아 내려고 노력의 목적으로 설치)

set nobackup 
set nowritebackup 
set noswapfile 
set columns=80 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 
set autoindent 
set smarttab 
set smartindent 
set textwidth=80 
set wrap 
set breakat=\ ^[email protected]*-+;:,./?\(\[\{ 
filetype indent on 
filetype on 
filetype plugin on 

사람이 어떻게 어떤 생각을 가지고 있습니까 Vim에게 내 breakat 설정이나이 행동을 다루는 가장 좋은 방법에 대한 다른 생각을 따르도록 할 수 있습니까?

+0

덧글 python에 대한 메모 내 대답은. –

답변

3

줄 바꿈을 설정하지 않습니다. 이를 사용하지 않으면 vim은 breakat 변수를 무시합니다. 자세한 내용은 here을 참조하고 많은 vim goodness를 참조하십시오. 또한 nolist를 설정하여 줄 바꿈을 해제해야합니다.

단어 포장을 다루는 또 다른 블로그 게시물 here. 이 중 하나는 일부 파일 유형이 형식 옵션 "t"플래그를 자동으로 포함하지 않는다는 것을 나타냅니다. 그것 없이는 자동 줄 바꿈이 발생하지 않습니다.

가장 간단한 방법은 매핑을 추가하여 :%! pythonTidy을 실행하는 것입니다. pythonTidy은 python에서 stdIn에서 파이썬 코드를 가져 와서 stdOut에 예쁜 버전을 출력하는 스크립트입니다. 해당 매핑을 사용하면 현재 파일에서이 매핑을 실행하고 전체 내용을 다시 포맷 된 버전으로 바꿀 수 있습니다. 파이썬 파일에서 삽입 모드를 종료 할 때마다이를 실행하는 자동 명령을 추가하면 설정해야합니다.

+0

흠. 'set linebreak'과'set nolist'로 시도해 보았습니다. 그건 나를 위해 작동하지 않습니다.사실, 나는 심지어 틈새에서 공간 숯을 제거하려고 노력했다. 이것은 행동을 바꾸지 않았다. 긴 줄을 입력 할 때 Vim은 내가하는 일과 상관없이 공간에서 새로운 줄을 끊습니다. – jsdalton

+0

그래, 글쎄. 'linebreak'와'breakat'는 라인이 표시되는 방식을 제어하는 ​​반면'textwidth'는 실제 하드 라인 브레이크를 삽입합니다. 이것은 내가 원하는 행동입니다. 그러나 textwidth는 "벙어리 (dumb)"여서 공백에 줄 바꿈 만 추가하는 것으로 보입니다. 그래서 textwidths 줄 바꿈 삽입 동작을 수정하는 방법이 필요하다고 생각하십니까? – jsdalton

+0

PEP8에 대해 언급 한 이래로 그는 80 줄 이상의 긴 줄 바꿈이 필요하다고 생각합니다. 그러나, 나는 차라리 100-char 줄을 사용하고 싶다. 80은 꽤 짧다. 특히 하드 코딩 된 문자열이있는 경우에는 더욱 그렇다. 요즘엔 실제로는 거의 아무도 80 자 길이의 터미널 너비에 국한되지 않는다. – ThiefMaster