중심 텍스트가있는 80 열 너비의 주석 헤더 블록 추가


9

어떤 이유로 든 나는 종종 코드를 다음과 같이 헤더로 구분 된 하위 섹션으로 나눕니다.

################################################################################
#################################### LOAD ######################################
################################################################################

#제목은 가운데에 가운데에 제목 이있는 3 개의 80 열 너비의 행입니다 . 지금까지 나는 vim에서 이것을 생성하는 빠른 방법을 찾지 못했습니다.

내가 주로하는 일은의 라인을 따라 뭔가 80i#다음 yypp나에게 3 개 라인을 제공하기 위해,하지만 나는 중앙으로 이동하고 텍스트를 추가해야합니다. 나는 보통 replace로 이것을 수행하지만 replace는 헤더를 가운데에 배치하지 않습니다 #... #그래서 초과 한 부분을 #수동으로 삭제합니다 .

가운데 줄에 텍스트를 배치하는 방법은 무엇입니까? 이 결과를 달성하는 가장 빠른 방법은 무엇입니까?

답변:


16

약간 더 효율적이고 쉬운 방법이 있습니다. 가운데에 놓으려는 텍스트 줄 (예 :)의 시작 부분에 커서를 사용하여 입력하십시오 LOAD.

  • :center 80<cr>: Vim의 내장 함수를 사용하여 텍스트 중심
  • hhv0r#: #왼쪽에 s를 추가하십시오.
  • A<space><esc>40A#<esc>: #오른쪽 에 s를 많이 추가하십시오
  • d80|: #오른쪽에서 초과 s 삭제
  • YppVr#kk.: 추가 상단과 하단 #

따라서 전체 명령 :

:center 80<cr>hhv0r#A<space><esc>40A#<esc>d80<bar>YppVr#kk.

편리한 매핑을 추가하기 위해 .vimrc에 다음과 같은 것을 넣을 수 있습니다.

nnoremap <C-b> :center 80<cr>hhv0r#A<space><esc>40A#<esc>d80<bar>YppVr#kk.

미니 스크린 캐스트 데모 :

데모


3

먼저 :set expandtab.

  1. 80i#Esc 최고 라인을 만들려면
  2. Yp 그것을 복제
  3. OSpaceLOADSpaceEsc
  4. :center 80( 설정 80에 따라 생략 될 수 있습니다 textwidth.)
  5. hhv0r# 왼쪽을 채우려면 (비주얼 선택 및 바꾸기 사용)
  6. $hjlly$kp 오른쪽을 채우려면 (아래 줄에서 일부 문자를 복제하여)

3

나는 그것을 위해 vimscript 함수를 사용할 것이다.

function Header(width, word)
    let a:inserted_word = ' ' . a:word . ' '
    let a:word_width = strlen(a:inserted_word)
    let a:length_before = (a:width - a:word_width) / 2
    let a:hashes_before = repeat('#', a:length_before)
    let a:hashes_after = repeat('#', a:width - (a:word_width + a:length_before))
    let a:hash_line = repeat('#', a:width)
    let a:word_line = a:hashes_before . a:inserted_word . a:hashes_after

    :put =a:hash_line
    :put =a:word_line
    :put =a:hash_line
endfunction

그리고 그것은처럼 불릴 수있었습니다

: call Header(80, 'Hello')

1
고마워요, 이것은 정말 좋은 답변입니다. 여러 줄에서 작동하며 다른 문자 (#뿐만 아니라)도 쉽게 포함하도록 수정할 수 있습니다. 부끄러운 나는 단 하나의 공감대를주고 단 하나의 대답 만 받아 들일 수 있습니다. 이번에는 내가 더 친숙한 기능을 사용해야 만했습니다. (그리고 기능을 작성하는 데 익숙하지는 않지만 여러분 덕분에 어떻게 작동하는지 볼 수 있습니다).
Karolis Koncevičius

2

또는 시각적 블록을 사용할 수 있습니다.

  1. 상단에 빈 줄이 3 개 이상 있는지 확인한 다음 CtrlV80L

  2. R#

  3. 블록의 중간으로 이동하십시오 (이것은 안구가 필요합니다)
  4. CtrlV 제거하려는 블록 영역을 선택하십시오.
  5. RSpace
  6. 빈 공간의 시작으로 이동 R하여 헤더를 치고 입력하십시오.

물론 헤더를 눈으로 볼 때 헤더를 만드는 가장 완벽한 방법은 아니지만 시각적 블록 선택의 흥미로운 사례입니다.

결과

#################################################################################
##########################    this is a header      #############################
#################################################################################
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.