Gary:
Thanks for all the useful tips.  I'll look into each of them in turn.



On Saturday, January 25, 2020 at 3:31:01 PM UTC-8, Gary Johnson wrote:
>
> On 2020-01-25, cjsmall wrote: 
> > I want to do some conditional setup and key assignments based upon the 
> > name of the file currently being edited.  Here is what I've got so far 
> as the 
> > .vimrc file in the target directory: 
> > 
> > so /u/jeff/lib/vi/vimrc.html 
> > so /u/jeff/lib/vi/vimrc.tab4 
> > " ============================================= 
> > :if (@% == ".vimrc") 
> >     " Alt-F1: Insert contents from hidden file .vim_01 
> >     nnoremap  <Esc>[29;3~ :read .vim_01<CR> 
> >     inoremap  <Esc>[29;3~ <ESC>:read .vim_01<CR> 
> > :elseif (@% == "editor.html") 
> >     " Alt-F1: Insert contents from hidden file .edit_01 
> >     nnoremap  <Esc>[29;3~ :read .edit_01<CR> 
> >     inoremap  <Esc>[29;3~ <ESC>:read .edit_01<CR> 
> > :elseif (@% == "gimp.html") 
> >     " Alt-F1: Insert contents from hidden file .gimp_01 
> >     nnoremap  <Esc>[29;3~ :read .gimp_01<CR> 
> >     inoremap  <Esc>[29;3~ <ESC>:read .gimp_01<CR> 
> >     " 
> >     " Alt-F2: Insert contents from hidden file .gimp_02 
> >     nnoremap  <Esc>[1;3Q :read .gimp_02<CR> 
> >     inoremap  <Esc>[1;3Q <ESC>:read .gimp_02<CR> 
> >     " 
> >     " Alt-F3: Insert contents from hidden file .gimp_03 
> >     nnoremap  <Esc>[1;3R :read .gimp_03<CR> 
> >     inoremap  <Esc>[1;3R <ESC>:read .gimp_03<CR> 
> > :endif 
> > " ============================================= 
> > 
> > This allows me to remap my Alt-function keys on a file-by-file basis to 
> > insert snippets of file-dependent code.  This works fine when editing 
> > a single file, for example: 
> > 
> > vim gimp.html 
> > 
> > but it does not work when multiple files are specified as in: 
> > 
> > vim editor.html gimp.html 
> > 
> > The conditional assignments are made upon entering  the first file, 
> > but do not automatically update when moving on to the second file. 
> > 
> > Three questions: 
> > 
> > 1) How can I make this update automatically as I switch between files? 
>
> You can use autocommands, for example: 
>
>     " Alt-F1: Insert contents from hidden file .vim_01 
>     au BufNewFile,BufRead .vimrc nnoremap <buffer> <Esc>[29;3~ :read 
> .vim_01<CR> 
>     au BufNewFile,BufRead .vimrc inoremap <buffer> <Esc>[29;3~ <ESC>:read 
> .vim_01<CR> 
>
> Note the use of <buffer> which restricts the mapping to the buffer 
> that was current when the mapping was defined. 
>
> See 
>
>     :help autocommands 
>     :help 40.3 
>     :help :map-<buffer> 
>
> > 2) I could do this by forcing every file to resource the .vimrc file 
> upon 
> > entry.  However, the vim: modeline only works for set options.  Is there 
> > a similar method of executing a command (e.g., :source .vimrc) upon 
> > entering a file? 
>
> You can use an autocommand to source a file as well, but I wouldn't 
> source your .vimrc.  That generally causes headaches and there are 
> better solutions. 
>
> > 3) Some files have symbolic links and may be accessed through 
> > alternate names.  Is there a variable that vim has that can produce 
> > the "real" filename? 
>
> Take a look at 
>
>     :help resolve() 
>
> > Assuming that cannot be done, how do I write a vim logical OR 
> > conditional; something like: 
> > 
> > :if ((condition 1) || (condition 2)) 
> > 
> > I know this must be in the :help documentation, but so far I haven't 
> > stumbled upon it. 
>
> Expressions are documented in eval.txt.  For a logical or, see 
>
>     :help expr-|| 
>
> HTH, 
> Gary 
>
>

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/f127866e-2861-41ff-9555-eae2cfe99303%40googlegroups.com.

Reply via email to