2015-02-25 3 views
2

Как вы увидите из моего файла vimrc ниже, я пытаюсь «установить номер» в InsertEnter. В нормальном режиме я использую «set relativenumber», чтобы упростить работу с j, k. Конфигурация ниже работает на моем macbook, но не на поле RHEL, которое я запускаю. Вместо того, чтобы делать «set number» для всего файла, когда я вхожу в режим Insert, он устанавливает номер только для строки, в которой я включен. Остальные строки файлов продолжают отображаться как relativenumbers.номер набора vim, не работающий над InsertEnter

Как это исправить? Любая идея, что здесь происходит?

execute pathogen#infect() 
call pathogen#helptags() 
syntax on 
syntax enable 
filetype plugin indent on 
colorscheme molokai 
set rnu 
autocmd FocusLost * :set number 
autocmd FocusGained * :set rnu 
autocmd InsertEnter * :set number 
autocmd InsertLeave * :set rnu 
set rtp +=/home/evolution/.vim/bundle/powerline/powerline/bindings/vim 
set splitright 
set ttymouse=xterm2 
set backspace=2 
set laststatus=2 
set t_Co=256 
set laststatus=2 
set showtabline=2 
set noshowmode 
set nocompatible 
set background=dark 
set shiftwidth=4 " operation >> indents 4 columns; << unindents 4 columns 
set tabstop=4  " a hard TAB displays as 4 columns 
set expandtab  " insert spaces when hitting TABs 
set softtabstop=4 " insert/delete 4 spaces when hitting a TAB/BACKSPACE 
set shiftround " round indent to multiple of 'shiftwidth' 
set autoindent " align the new line indent with the previous line 
set cursorline 
hi CursorLine cterm=NONE ctermbg=52 

let g:CommandTAcceptSelectionMap = '<C-t>' 
let g:CommandTAcceptSelectionTabMap = '<CR>' 
let g:airline#extensions#tabline#enabled = 1 

noremap <Up> <NOP> 
noremap <Down> <NOP> 
noremap <Left> <NOP> 
noremap <Right> <NOP> 

map <C-l> :tabn<CR> 
map <C-h> :tabp<CR> 
+0

Скорее всего, проблема обновления терминала. Попробуйте сделать CTRL + L или a: перерисовать. Надеюсь это поможет. –

+0

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

ответ

3

Я обнаружил, что это работает:

set rnu 
function ToggleNumbersOn() 
    set rnu! 
    set nu 
endfunction 
function ToggleRelativeOn() 
    set nu! 
    set rnu 
endfunction 
autocmd FocusLost * call ToggleNumbersOn() 
autocmd FocusGained * call ToggleRelativeOn() 
autocmd InsertEnter * call ToggleNumbersOn() 
autocmd InsertLeave * call ToggleRelativeOn() 
+0

Для меня работала реакция на события FocusGained и FocusLost. Он, по-видимому, работает только с графическим интерфейсом и некоторыми терминалами - к счастью, он работал на urxvt в Linux: D – kyrisu

-1

Вы можете быть заинтересованы в Vim 7.4 Гибридный относительный абсолютный режим номера.

set relativenumber 
set number 

Это покажет относительные номера, но то, что будет равно нулю, будет номером текущей строки.

Однако, если это не будет работать для вас, то есть несколько плагинов, которые делать то, что вы спрашиваете: numbers.vim и numbertoggle

0

Заменить автокомандой с set number множеством nornu

set nu 
autocmd InsertEnter * :set nornu 
autocmd InsertLeave * :set rnu 

Отметить как исправленный при фиксированном