Mercurial > vim
comparison runtime/macros/less.vim @ 7:3fc0f57ecb91 v7.0001
updated for version 7.0001
author | vimboss |
---|---|
date | Sun, 13 Jun 2004 20:20:40 +0000 |
parents | |
children | 4bac29d27e2f |
comparison
equal
deleted
inserted
replaced
6:c2daee826b8f | 7:3fc0f57ecb91 |
---|---|
1 " Vim script to work like "less" | |
2 " Maintainer: Bram Moolenaar <Bram@vim.org> | |
3 " Last Change: 2004 Feb 19 | |
4 | |
5 " Avoid loading this file twice, allow the user to define his own script. | |
6 if exists("loaded_less") | |
7 finish | |
8 endif | |
9 let loaded_less = 1 | |
10 | |
11 " If not reading from stdin, skip files that can't be read. | |
12 " Exit if there is no file at all. | |
13 if argc() > 0 | |
14 let s:i = 0 | |
15 while 1 | |
16 if filereadable(argv(s:i)) | |
17 if s:i != 0 | |
18 sleep 3 | |
19 endif | |
20 break | |
21 endif | |
22 if isdirectory(argv(s:i)) | |
23 echomsg "Skipping directory " . argv(s:i) | |
24 elseif getftime(argv(s:i)) < 0 | |
25 echomsg "Skipping non-existing file " . argv(s:i) | |
26 else | |
27 echomsg "Skipping unreadable file " . argv(s:i) | |
28 endif | |
29 echo "\n" | |
30 let s:i = s:i + 1 | |
31 if s:i == argc() | |
32 quit | |
33 endif | |
34 next | |
35 endwhile | |
36 endif | |
37 | |
38 set nocp | |
39 syntax on | |
40 set so=0 | |
41 set hlsearch | |
42 set incsearch | |
43 nohlsearch | |
44 " Don't remember file names and positions | |
45 set viminfo= | |
46 set nows | |
47 " Inhibit screen updates while searching | |
48 let s:lz = &lz | |
49 set lz | |
50 | |
51 " Used after each command: put cursor at end and display position | |
52 if &wrap | |
53 noremap <SID>L L0:redraw<CR>:file<CR> | |
54 au VimEnter * normal! L0 | |
55 else | |
56 noremap <SID>L Lg0:redraw<CR>:file<CR> | |
57 au VimEnter * normal! Lg0 | |
58 endif | |
59 | |
60 " When reading from stdin don't consider the file modified. | |
61 au VimEnter * set nomod | |
62 | |
63 " Can't modify the text | |
64 set noma | |
65 | |
66 " Give help | |
67 noremap h :call <SID>Help()<CR> | |
68 map H h | |
69 fun! s:Help() | |
70 echo "<Space> One page forward b One page backward" | |
71 echo "d Half a page forward u Half a page backward" | |
72 echo "<Enter> One line forward k One line backward" | |
73 echo "G End of file g Start of file" | |
74 echo "N% percentage in file" | |
75 echo "\n" | |
76 echo "/pattern Search for pattern ?pattern Search backward for pattern" | |
77 echo "n next pattern match N Previous pattern match" | |
78 echo "\n" | |
79 echo ":n<Enter> Next file :p<Enter> Previous file" | |
80 echo "\n" | |
81 echo "q Quit v Edit file" | |
82 let i = input("Hit Enter to continue") | |
83 endfun | |
84 | |
85 " Scroll one page forward | |
86 noremap <script> <Space> :call <SID>NextPage()<CR><SID>L | |
87 map <C-V> <Space> | |
88 map f <Space> | |
89 map <C-F> <Space> | |
90 map z <Space> | |
91 map <Esc><Space> <Space> | |
92 fun! s:NextPage() | |
93 if line(".") == line("$") | |
94 if argidx() + 1 >= argc() | |
95 quit | |
96 endif | |
97 next | |
98 1 | |
99 else | |
100 exe "normal! \<C-F>" | |
101 endif | |
102 endfun | |
103 | |
104 " Re-read file and page forward "tail -f" | |
105 map F :e<CR>G<SID>L:sleep 1<CR>F | |
106 | |
107 " Scroll half a page forward | |
108 noremap <script> d <C-D><SID>L | |
109 map <C-D> d | |
110 | |
111 " Scroll one line forward | |
112 noremap <script> <CR> <C-E><SID>L | |
113 map <C-N> <CR> | |
114 map e <CR> | |
115 map <C-E> <CR> | |
116 map j <CR> | |
117 map <C-J> <CR> | |
118 | |
119 " Scroll one page backward | |
120 noremap <script> b <C-B><SID>L | |
121 map <C-B> b | |
122 map w b | |
123 map <Esc>v b | |
124 | |
125 " Scroll half a page backward | |
126 noremap <script> u <C-U><SID>L | |
127 noremap <script> <C-U> <C-U><SID>L | |
128 | |
129 " Scroll one line backward | |
130 noremap <script> k <C-Y><SID>L | |
131 map y k | |
132 map <C-Y> k | |
133 map <C-P> k | |
134 map <C-K> k | |
135 | |
136 " Redraw | |
137 noremap <script> r <C-L><SID>L | |
138 noremap <script> <C-R> <C-L><SID>L | |
139 noremap <script> R <C-L><SID>L | |
140 | |
141 " Start of file | |
142 noremap <script> g gg<SID>L | |
143 map < g | |
144 map <Esc>< g | |
145 | |
146 " End of file | |
147 noremap <script> G G<SID>L | |
148 map > G | |
149 map <Esc>> G | |
150 | |
151 " Go to percentage | |
152 noremap <script> % %<SID>L | |
153 map p % | |
154 | |
155 " Search | |
156 noremap <script> / H$:call <SID>Forward()<CR>/ | |
157 if &wrap | |
158 noremap <script> ? H0:call <SID>Backward()<CR>? | |
159 else | |
160 noremap <script> ? Hg0:call <SID>Backward()<CR>? | |
161 endif | |
162 | |
163 fun! s:Forward() | |
164 " Searching forward | |
165 noremap <script> n H$nzt<SID>L | |
166 if &wrap | |
167 noremap <script> N H0Nzt<SID>L | |
168 else | |
169 noremap <script> N Hg0Nzt<SID>L | |
170 endif | |
171 cnoremap <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L | |
172 endfun | |
173 | |
174 fun! s:Backward() | |
175 " Searching backward | |
176 if &wrap | |
177 noremap <script> n H0nzt<SID>L | |
178 else | |
179 noremap <script> n Hg0nzt<SID>L | |
180 endif | |
181 noremap <script> N H$Nzt<SID>L | |
182 cnoremap <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L | |
183 endfun | |
184 | |
185 call s:Forward() | |
186 | |
187 " Quitting | |
188 noremap q :q<CR> | |
189 | |
190 " Switch to editing (switch off less mode) | |
191 map v :silent call <SID>End()<CR> | |
192 fun! s:End() | |
193 set ma | |
194 if exists(s:lz) | |
195 let &lz = s:lz | |
196 endif | |
197 unmap h | |
198 unmap H | |
199 unmap <Space> | |
200 unmap <C-V> | |
201 unmap f | |
202 unmap <C-F> | |
203 unmap z | |
204 unmap <Esc><Space> | |
205 unmap F | |
206 unmap d | |
207 unmap <C-D> | |
208 unmap <CR> | |
209 unmap <C-N> | |
210 unmap e | |
211 unmap <C-E> | |
212 unmap j | |
213 unmap <C-J> | |
214 unmap b | |
215 unmap <C-B> | |
216 unmap w | |
217 unmap <Esc>v | |
218 unmap u | |
219 unmap <C-U> | |
220 unmap k | |
221 unmap y | |
222 unmap <C-Y> | |
223 unmap <C-P> | |
224 unmap <C-K> | |
225 unmap r | |
226 unmap <C-R> | |
227 unmap R | |
228 unmap g | |
229 unmap < | |
230 unmap <Esc>< | |
231 unmap G | |
232 unmap > | |
233 unmap <Esc>> | |
234 unmap % | |
235 unmap p | |
236 unmap n | |
237 unmap N | |
238 unmap q | |
239 unmap v | |
240 unmap / | |
241 unmap ? | |
242 endfun | |
243 | |
244 " vim: sw=2 |