NEKOB-log-E

Play Games, and Follow the Rules

Flower

Posts Tagged ‘vim’

Vim7 的 <C-Left> 與 <C-Right>

因為Vim7開始有Tabbed Edit, 所以也開始慢慢的適應並取代掉以往開好幾個Terminal的習慣.

在有Samba的環境, 我會比較喜歡用Gvim, 配合一個Terminal就可以一邊寫程式一邊看Log, 很方便. 為了讓我少碰滑鼠, 也開始Mapping些Hotkey去給Tabbed Edit使用. 我習慣Mozilla的Hotkey, 所以只先做了:tabnew跟:tabnext :tabprev.

  1. map <C-t> :tabnew<CR>:o ./<CR>
  2. map <C-Left> :tabprev<CR>
  3. map <C-Right> :tabnext<CR>

而後來發現在Insert mode時這些key會出狀況, 又加上了

  1. imap <ESC><C-Left> :tabprev<CR>
  2. imap <ESC><C-Right> :tabnext<CR>

但是到了使用Terminal時就慘了, 我用PuTTY不改任何Terminal Setting時, Ctrl-Left 跟 Ctrl-Right就會失效, 花了一點時間去抓一下Keymap後, 才發現在Xterm下的Arrow Key有著不同的keycode, 所以要改成

  1. map ^[[D :tabprev<CR>
  2. map ^[[C :tabnext<CR>

其中的^[是用Ctrl-V Esc打出來的. 所以完整的通用解法是

2006/07/24補: 加上用urxvt時的

  1. if &term =~ "xterm"
  2.     if has ("terminfo")
  3.         set t_Co=16
  4.         set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m
  5.         set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m
  6.         map ^[[D :tabprev<CR>
  7.         map ^[[C :tabnext<CR>
  8.         imap ^[[D <ESC>:tabprev<CR>
  9.         imap ^[[C <ESC>:tabnext<CR>
  10.     else
  11.         set t_Co=16
  12.         set t_Sf=<Esc>[3%dm
  13.         set t_Sb=<Esc>[4%dm
  14.         map <C-Left> :tabprev<CR>
  15.         map <C-Right> :tabnext<CR>
  16.         imap <ESC><C-Left> :tabprev<CR>
  17.         imap <ESC><C-Right> :tabnext<CR>
  18.     endif
  19. elseif &term =~ "rxvt"
  20.         set t_Co=16
  21.         set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m
  22.         set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m
  23.         map ^[OD :tabprev<CR>
  24.         map ^[OC :tabnext<CR>
  25.         imap ^[OD <ESC>:tabprev<CR>
  26.         imap ^[OC <ESC>:tabnext<CR>
  27. endif
  28. syntax on

這樣就可以在Terminal下正確的用<C-Left>跟<C-Right>了.

Vim7 on FreeBSD

一定很多人跟我一樣, 沒了vim會死.

vim7出來很久了, 可是ports一直沒有從6.4更新到7.0, 我在FreeBSD 5.1-Release + Gnome2的Desktop下都安裝成功沒問題了, 那為什麼ports還沒有呢? 真是奇怪.

原本在make時只有 –without-x 跟 –prefix, 剛剛修sidebar時發現utf8爛掉了. 啊….原來是忘記加上一些參數, 所以貼這篇紀錄一下.

  1. ./configure --enable-gui=no --without-x --enable-multibyte --disable-perlinterp --disable-pythoninterp --disable-tclinterp --disable-rubyinterp --prefix=/usr/local/vim7 --with-tlib=termlib

現在正在happy vim7-ing :D