2012-01-25 2 views
17

Может кто-нибудь помочь с решением? Я хочу, чтобы горизонтальная полоса прокрутки появлялась всякий раз, когда я делаю nowrap и наоборот, когда я делаю wrap.Как включить горизонтальную полосу прокрутки, когда вы делаете nowrap

В настоящее время я использую эти настройки индивидуально, чтобы облегчить работу; есть ли способ объединить их обоих?

nnoremap <silent> <F3> :if &guioptions=~#'b'<Bar>set guioptions-=b<Bar>else<Bar>set guioptions+=b<Bar>endif<CR> 
map <F2> :set nowrap! <CR> 

ответ

33

Построим одну команду для переключения обоих параметров соответственно . Прежде всего, он должен переключить опцию wrap в любом случае:

:set wrap! 

Затем guioptions должен быть изменен в зависимости от того, является ли упаковка включена в момент выполнения работы команды . Если текст завернуты, то нижней полосы прокрутки должны быть показаны в рамках подготовки к wrap быть инвалидов:

:set guioptions+=b 

В качестве альтернативы, если перенос текста выключен, он должен скрыть нижнюю скроллбар:

:set guioptions-=b 

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

:nnoremap <silent><expr> <f2> ':set wrap! go'.'-+'[&wrap]."=b\r" 

который превращается в последовательность нажатий клавиш

:set wrap! go+=bВведите

если опция wrap установлен (и равен единице), или

:set wrap! go-=bEnter

в противном случае (когда &wrap оценивает до нуля).

+0

Спасибо, чувак за решение! :) –

+4

@Jamesbond: Если это сработает для вас, пожалуйста, [отметьте ответ как принято] (http://meta.stackexchange.com/a/5235). –

+0

@ib. Каким будет код с использованием inoremap? На самом деле я использую для него функцию: 'function! Wrap() if & wrap set nowrap set guioptions + = b else set wrap set guioptions- = b endif endfunction' и отображение 'inoremap : call Wrap() a' – Reman

Смежные вопросы