home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / less.vim < prev    next >
Text File  |  2003-08-12  |  4KB  |  201 lines

  1. " Vim script to work like "less"
  2. " Maintainer:    Bram Moolenaar <Bram@vim.org>
  3. " Last Change:    2002 Aug 15
  4.  
  5. " If not reading from stdin, skip files that can't be read.
  6. " Exit if there is no file at all.
  7. if argc() > 0
  8.   let s:i = 0
  9.   while 1
  10.     if filereadable(argv(s:i))
  11.       if s:i != 0
  12.     sleep 3
  13.       endif
  14.       break
  15.     endif
  16.     if isdirectory(argv(s:i))
  17.       echomsg "Skipping directory " . argv(s:i)
  18.     elseif getftime(argv(s:i)) < 0
  19.       echomsg "Skipping non-existing file " . argv(s:i)
  20.     else
  21.       echomsg "Skipping unreadable file " . argv(s:i)
  22.     endif
  23.     echo "\n"
  24.     let s:i = s:i + 1
  25.     if s:i == argc()
  26.       quit
  27.     endif
  28.     next
  29.   endwhile
  30. endif
  31.  
  32. set nocp
  33. syntax on
  34. set so=0
  35. set hlsearch
  36. set incsearch
  37. nohlsearch
  38. " Don't remember file names and positions
  39. set viminfo=
  40. set nows
  41.  
  42. " Used after each command: put cursor at end and display position
  43. if &wrap
  44.   noremap <SID>L L0:file<CR>
  45.   au VimEnter * normal L0
  46. else
  47.   noremap <SID>L Lg0:file<CR>
  48.   au VimEnter * normal Lg0
  49. endif
  50.  
  51. " When reading from stdin don't consider the file modified.
  52. au VimEnter * set nomod
  53.  
  54. " Can't modify the text
  55. set noma
  56.  
  57. " Give help
  58. noremap h :call <SID>Help()<CR>
  59. map H h
  60. fun! s:Help()
  61.   echo "<Space>   One page forward          b         One page backward"
  62.   echo "d         Half a page forward       u         Half a page backward"
  63.   echo "<Enter>   One line forward          k         One line backward"
  64.   echo "G         End of file               g         Start of file"
  65.   echo "N%        percentage in file"
  66.   echo "\n"
  67.   echo "/pattern  Search for pattern"
  68.   echo "n         next pattern match        N         Previous pattern match"
  69.   echo "\n"
  70.   echo ":n<Enter> Next file                 :p<Enter> Previous file"
  71.   echo "\n"
  72.   echo "q         Quit                      v         Edit file"
  73.   let i = input("Hit Enter to continue")
  74. endfun
  75.  
  76. " Scroll one page forward
  77. noremap <script> <Space> :call <SID>NextPage()<CR><SID>L
  78. map <C-V> <Space>
  79. map f <Space>
  80. map <C-F> <Space>
  81. map z <Space>
  82. map <Esc><Space> <Space>
  83. fun! s:NextPage()
  84.   if line(".") == line("$")
  85.     if argidx() + 1 >= argc()
  86.       quit
  87.     endif
  88.     next
  89.     1
  90.   else
  91.     exe "normal! \<C-F>"
  92.   endif
  93. endfun
  94.  
  95. " Re-read file and page forward "tail -f"
  96. map F :e<CR>G<SID>L:sleep 1<CR>F
  97.  
  98. " Scroll half a page forward
  99. noremap <script> d <C-D><SID>L
  100. map <C-D> d
  101.  
  102. " Scroll one line forward
  103. noremap <script> <CR> <C-E><SID>L
  104. map <C-N> <CR>
  105. map e <CR>
  106. map <C-E> <CR>
  107. map j <CR>
  108. map <C-J> <CR>
  109.  
  110. " Scroll one page backward
  111. noremap <script> b <C-B><SID>L
  112. map <C-B> b
  113. map w b
  114. map <Esc>v b
  115.  
  116. " Scroll half a page backward
  117. noremap <script> u <C-U><SID>L
  118. noremap <script> <C-U> <C-U><SID>L
  119.  
  120. " Scroll one line backward
  121. noremap <script> k <C-Y><SID>L
  122. map y k
  123. map <C-Y> k
  124. map <C-P> k
  125. map <C-K> k
  126.  
  127. " Redraw
  128. noremap <script> r <C-L><SID>L
  129. noremap <script> <C-R> <C-L><SID>L
  130. noremap <script> R <C-L><SID>L
  131.  
  132. " Start of file
  133. noremap <script> g gg<SID>L
  134. map < g
  135. map <Esc>< g
  136.  
  137. " End of file
  138. noremap <script> G G<SID>L
  139. map > G
  140. map <Esc>> G
  141.  
  142. " Go to percentage
  143. noremap <script> % %<SID>L
  144. map p %
  145.  
  146. " Next pattern
  147. noremap <script> n H$nzt<SID>L
  148. noremap <script> N HNzt<SID>L
  149.  
  150. " Quitting
  151. noremap q :q<CR>
  152.  
  153. " Switch to editing (switch off less mode)
  154. map v :call <SID>End()<CR>
  155. fun! s:End()
  156.   set ma
  157.   unmap h
  158.   unmap H
  159.   unmap <Space>
  160.   unmap <C-V>
  161.   unmap f
  162.   unmap <C-F>
  163.   unmap z
  164.   unmap <Esc><Space>
  165.   unmap F
  166.   unmap d
  167.   unmap <C-D>
  168.   unmap <CR>
  169.   unmap <C-N>
  170.   unmap e
  171.   unmap <C-E>
  172.   unmap j
  173.   unmap <C-J>
  174.   unmap b
  175.   unmap <C-B>
  176.   unmap w
  177.   unmap <Esc>v
  178.   unmap u
  179.   unmap <C-U>
  180.   unmap k
  181.   unmap y
  182.   unmap <C-Y>
  183.   unmap <C-P>
  184.   unmap <C-K>
  185.   unmap r
  186.   unmap <C-R>
  187.   unmap R
  188.   unmap g
  189.   unmap <
  190.   unmap <Esc><
  191.   unmap G
  192.   unmap >
  193.   unmap <Esc>>
  194.   unmap %
  195.   unmap p
  196.   unmap n
  197.   unmap N
  198.   unmap q
  199.   unmap v
  200. endfun
  201.