Текстовая ширина .vimrc не применяется - PullRequest
4 голосов
/ 05 марта 2012

Ниже приведен мой файл .vimrc во всей его полноте:

По какой-то причине set wrap и set textwidth=73 (внизу файла) не работают (я хочу, чтобы файлы переносились в 73 столбца). Я все еще могу зайти в файл и набрать последние 73 столбца.

Есть ли конфликтующая команда, которую нужно исправить? Или я что-то не так делаю?

set nocompatible
set smartindent
set cursorline
filetype plugin indent on
set background=dark
syntax enable
set grepprg=grep\ -nH\ $*
syntax on
set mouse=a
set history=1000
set showmode

if has('cmdline_info')
    set ruler                   " show the ruler
    set rulerformat=%30(%=\:b%n%y%m%r%w\ %l,%c%V\ %P%) " a ruler on steroids
    set showcmd                 " show partial commands in status line and
endif

set backspace=indent,eol,start      " backspace for dummys
set linespace=0                 " No extra spaces between rows
set nu                          " Line numbers on
set showmatch                   " show matching brackets/parenthesis
set incsearch                   " find as you type search
set hlsearch                    " highlight search terms
set winminheight=0              " windows can be 0 line high 
set ignorecase                  " case insensitive search
set smartcase                   " case sensitive when uc present
set wildmenu                    " show list instead of just completing
set wildmode=list:longest,full  
set scrolljump=5                " lines to scroll when cursor leaves screen
set scrolloff=3                 " minimum lines to keep above and below cursor
set gdefault                    " the /g flag on :s substitutions by default
set autoindent                  " indent at the same level of the previous line
set shiftwidth=4                " use indents of 4 spaces
set expandtab                   " tabs are spaces, not tabs
set tabstop=4                   " an indentation every four columns
set softtabstop=4               " let backspace delete indent
set matchpairs+=<:>
set comments=sl:/*,mb:*,elx:*/
autocmd FileType c,cpp,java,php,js,python,twig,xml,yml autocmd BufWritePre <buffer> :call setline(1,map(getline(1,"$"),'substitute(v:val,"\\s\\+$","","")'))

set foldmethod=syntax  "fold based on indent
set foldnestmax=10      "deepest fold is 10 levels
set foldlevel=0         "this is just what i use
set wrap
set textwidth=73
set formatoptions+=t

РЕДАКТИРОВАТЬ: Я хочу, чтобы VIM автоматически переносился на 73 строки (в режиме реального времени). Это возможно? Я пытался добавить set formatoptions+=t для переноса текста, но он все еще не эффективен.

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

Опции wrap и textwidth относятся к двум совершенно различным видам переноса.

textwidth устанавливает предел ширины строки, после которого будет помещаться каждое новое слово (что означает разделение пробелами).в новой строке.Прикрепленный .vimrc, вероятно, работает правильно, а textwitdh делает именно это.

wrap вообще не влияет на содержимое редактируемого файла, просто вызывает отображение строки в файле в несколько строк, если онадлиннее ширины дисплеяЕсли не найдено приятного способа настроить это для переноса на фиксированную ширину столбца, и я лично не вижу такой необходимости.

Однако есть два аспекта мягкого переноса, которые можно изменить, если вы обнаружите, чтомягкая обертка в конце экрана раздражает.

  • Измените ширину окна Vim, используя set columns=73 (это очень мешает, потому что изменяет ширину всего окна)
  • Мягкие переносы строк не на границе экрана, а на границе последнего слова, установив параметр linebreak, подробности см. help linebreak.
2 голосов
/ 05 марта 2012

Возможно, не лучшее решение, но попробуйте назначить textwidth и formatoptions внутри автокоманды, а затем отформатировать все строки вашего файла.

autocmd BufRead * set fo+=t tw=73|normal gggqG

Это сработало в моем тесте.Вы можете быть более конкретным и заменить * на *.txt или подобным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...