VIM에서 어떤 설정이 SmartIndent가 쉘 스크립트에서 댓글을 들여 쓰기에 대한 거부에 대응합니까?

StackOverflow https://stackoverflow.com/questions/385327

  •  23-08-2019
  •  | 
  •  

문제

최근에 VIM 7 (이전 VIM 6)과 smartindent 환경. 대부분의 경우 잘 작동하지만 열린 버팀대 후에 탭을 입력하여 거의 비생산적이어야합니다.

그러나 한 조각의 미치광이 행동이 있습니다. 쉘 스크립트를 편집 할 때는 현재의 들여 쓰기 수준에서 주석을 만들려고하지만 smartindent 그것과 아무 관련이 없을 것입니다. 주석은 레벨 0 (들여 쓰지 않음)에 있어야한다고 주장합니다. 더 나쁜 것은 시프트 오른쪽을 깨뜨립니다 ( '>>그들이 일하지 않도록 '친구). 이것은 명백한 불복종이며, 그것을 고치는 가장 좋은 방법이 무엇인지 알고 싶습니다.

(나는 또한 열렬하지 않습니다 smartindent들여 쓰기에 대한 아이디어 then ~ 후에 if.)

선호하는 솔루션은 수동 강타를 절약 할 수 있습니다. 나는 게으르다. 하나의 옵션은 '끄기입니다 smartindent 쉘 스크립트를 편집 할 때 (나머지를 위해 남겨 두십시오) '. 또 다른 옵션은 제어 스크립트를 찾는 방법에 대한 지침입니다. smartindent 그리고 내가 싫어하는 특성을 변경하기 위해 무엇을 편집 해야하는지. 마지막 옵션 (수행 방법에 대한 조언이 필요하지 않은 것 - 그것이 최고라는 힌트만으로도 정신을 회복하는 방법)는 떠나는 것입니다. smartindent 셋.

나는 모호한 관련 질문을 보았다.(PHP 및) 성가신 VIM Unindent 규칙"; 직접적인 답을 제공하지는 않지만 cindent 그리고 언급 된 관련 항목은 실제로 답의 일부가 있습니다.

도움이 되었습니까?

해결책

인트 파일을 찾으십시오 (예 : 내 시스템에서 /usr/share/vim/vim71/indent/sh.vim)

이 줄은 문제처럼 보입니다.

setlocal indentkeys-=:,0#

아마도 .VIMRC 에서이 문제를 해결하거나 수동으로 사용자 정의 계약 파일을로드 할 수 있습니다.

편집 : 생각보다 더 복잡해 보이지만, 수정해야 할 압입 파일에 구체적으로 설정된 것이있을 수 있습니다.

2nd Edit : 내가 완전히 틀린 것 같습니다. 확인하십시오.

해시를 입력 한 후 인기 복원

또는

Howto-configure-vim-to-not-comments-at-beginning-the-rediting

다른 팁

글쎄, '사용을 포함한 몇 가지 옵션을 탐색 한 후:set cindent' 대신에 ':set smartindent', 나는 결국 사용하는 것으로 되돌아 갔다':set autoindent'. 아마도이 물건이 내가 원하는대로 정확하게 작동하게 만드는 방법이있을 것입니다. 그러나 내가 귀찮게 할 수 없을 정도로 충분히 지저분하고 충분히 지저분합니다. 나는 잘 일했다 autoindent 지난 20 년 동안, 그리고 추가 종소리와 휘파람의 이점 smartindent 내가 오작동으로 간주하는 것보다 더 중요합니다.

도움을 주셔서 감사합니다. 믿거 나 말거나, 도움이되었습니다.

그러나 나는 이것에 대해 추적하면서 몇 가지 다른 깔끔한 명령을 발견했습니다.

>i}
>a}

이 코드 블록을 오른쪽으로 이동시킵니다. 'i'버전은 닫는 버팀대 (내가 선호하는 스타일)가 아니라 신체를 들여 보내며', 'a'버전은 닫는 버팀대를 (직장에서 요구되는 버전)에 들여 보내고 있습니다.

또한 예선을 '%'쉘에서 실행 된 명령에서 :

:make %:r.o

이것은 현재 파일 이름의 '루트'에서 실행됩니다 (즉 '%:r') 뒤 따르는'.o'. 또는, 내가 편집하는 경우 somefile.c, 이것은 실행됩니다 make somefile.o.

.VIMRC에 아래 줄을 추가하십시오

FileType Indent on

(필더 타입에 따라 올바른 인기 모드를 설정합니다)

"Filetype Indent on"이 Vimrc에 설정되어 있다면자가 인도와 스마트 덴트가 불필요하다는 것을 깨달을 때까지 오랫동안이 같은 문제를 겪었습니다. VIM 디렉토리에서 압입 규칙을 파악하고자가 인도 및 스마트 덴트는이를 방해 할 수 있습니다.

SH로 이것을 테스트하지는 않았지만 Perl은 갑자기 전환했을 때 제대로 작동하기 시작했습니다.

Sidenote : Juan의 리디렉션 인 "Hash를 입력 한 후 인디닝 복원"은 좋은 해결책이 아닙니다. 한 상황에서 문제를 해결하는 반면 (코드 입력) 편집기가 생각하는 방식은 변경되지 않습니다. ~해야 한다 재입고 (visual = 또는 normal ==)가 왼쪽으로 다시 밀어 넣습니다.

.VIMRC에 다음 줄이 있으며 문제를 관찰하지 않습니다.

set smartindent
inoremap # X^H#

나는 가지고 있었다 자가 인도를 설정하십시오 이 두 줄 뒤에는 효과가없는 것 같습니다.

그래 그거야 매우 성가신. Smartindent는 실제로 C와 같은 언어에만 해당됩니다. 언어를 기준으로 적절한 들여 쓰기를 어떻게 활성화하는지 확인하십시오.http://www.pixelbeat.org/settings/.vimrc

제안하는 이전 답변 :

: inoremap # x^h #

훌륭합니다. ": Help Smartindent"에서 VIM 문서가 제안한 답변입니다. ^H는 Ctrl-V Ctrl-H를 사용하여 입력됩니다. 문서의 관련 섹션은 다음과 같습니다.

    When typing '#' as the first character in a new line, the indent for
    that line is removed, the '#' is put in the first column.  The indent
    is restored for the next line.  If you don't want this, use this
    mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
    When using the ">>" command, lines starting with '#' are not shifted
    right.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top