8

i like to have line numbers ON in Vim but sometimes line numbers are annoying. I have shortcuts set in .vimrc:

map <c-F12> :set nonumber<ENTER>
map <c-F11> :set number<ENTER>

for turning them off/on.

Is it possible to connect both tasks (turning off/on) under one key? I mean, when line numbers are ON shortcut should turn OFF them and turn ON when line numbers are OFF.

Jasper
  • 2,166
  • 4
  • 30
  • 50
jotbek
  • 1,479
  • 3
  • 14
  • 22

2 Answers2

17

From Vim help, you can use the following syntax :

:se[t] {option}! or
:se[t] inv{option} Toggle option: Invert value. {not in Vi}

See :help set-option

In your case, you could use: map <c-F11> :set number!<ENTER>

Xavier T.
  • 40,509
  • 10
  • 68
  • 97
11

In case you want also change between the relative line number, the line number, and no number you can use something like the following:

let g:relativenumber = 0
function! ToogleRelativeNumber()
  if g:relativenumber == 0
    let g:relativenumber = 1
    set norelativenumber
    set number
  elseif g:relativenumber == 1
    let g:relativenumber = 2
    set nonumber
    set relativenumber
  else
    let g:relativenumber = 0
    set nonumber
    set norelativenumber
  endif
endfunction

map <c-f11> :call ToogleRelativeNumber()<cr>
skeept
  • 12,077
  • 7
  • 41
  • 52
  • 1
    [From Super User :)](http://superuser.com/questions/339593/vim-toggle-number-with-relativenumber) `nmap :exec &nu==&rnu? "se nu!" : "se rnu!"` – SergioAraujo Oct 01 '11 at 00:03
  • Update: `'number'` and `'relativenumber'` have changed in Vim 7.3.1115. You can find an updated answer at http://superuser.com/a/604625. – glts Jun 06 '13 at 19:16