@Richard Mitchell. I can't tell you how much I object to this. (I'm not being aggressive, honest!)
There is no "proper extension" for a shell script. Run "file /usr/bin/* | grep -i shell" to see a list of o/s built in shell scripts. Then run this: file /usr/bin/* | grep -i shell | awk '$1 ~ /\.sh/' Exactly 3 of them (on my Ubuntu system) have the extension ".sh". This is a (silly) windowsism, where file-extensions matter. Now, Unix does sometimes care. The C compiler, for instance expects source in .c and headers in .h. But, or course it produces executables with no .exe extension. For a shell script, it's the #! line which tells the kernel to run it in a shell, and magic numbers for other types (which is all the same thing, and how "file" works). I do like the idea of copying (I'd link) the .sh version to a bin/<filename> version, but let's not propagate this daft idea of filename extensions mattering to the os. You can still grep: If you can't remember how a case statement works: grep case $(file * | awk '/shell/ 'print (substr($1,length($1)-1)') (# to get rid of the colon - and I've not tested that specific line, but it's something I do occasionally.) This is proper use of Unix, not demanding file extensions. Unix is great, but it's expert-friendly, and not as windows claims to be "user" friendly. Sorry to rant, but it's important to me - and you might guess where I stand on systemd :-) Graham On 15 July 2016 at 10:19, <[email protected]> wrote: > [email protected] > <https://groups.google.com/forum/?utm_source=digest&utm_medium=email#!forum/vim_use/topics> > Google > Groups > <https://groups.google.com/forum/?utm_source=digest&utm_medium=email/#!overview> > <https://groups.google.com/forum/?utm_source=digest&utm_medium=email/#!overview> > Topic digest > View all topics > <https://groups.google.com/forum/?utm_source=digest&utm_medium=email#!forum/vim_use/topics> > > - Wrong vim color syntax <#m_6797970966302096792_group_thread_0> - 3 > Updates > - vim function argument <#m_6797970966302096792_group_thread_1> - 6 > Updates > - pass count to nmap with call <#m_6797970966302096792_group_thread_2> > - 3 Updates > > Wrong vim color syntax > <http://groups.google.com/group/vim_use/t/9123fc4f8c96c1?utm_source=digest&utm_medium=email> > Willem D'Haese <[email protected]>: Jul 14 08:03AM -0700 > > On Thursday, 7 July 2016 07:20:22 UTC+2, Christian Brabandt wrote: > > It looks like the syntax script does not handle here documents. > > > Best, > > Christian > > Hello Christian, > > Thanks for the help. It is actually a Bash script with filename FireTIG > (without .sh extension) I made myself. Where can I find the syntax file for > Bash? > > Grtz > Charles E Campbell <[email protected]>: Jul 14 02:56PM -0400 > > Willem D'Haese wrote: > >> Christian > > Hello Christian, > > > Thanks for the help. It is actually a Bash script with filename FireTIG > (without .sh extension) I made myself. Where can I find the syntax file for > Bash? > > Please try the syntax files for sh.vim available at: > http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH (v154). > > Regards, > Chip Campbell > Richard Mitchell <[email protected]>: Jul 14 01:24PM -0700 > > On Thursday, July 14, 2016 at 11:03:47 AM UTC-4, Willem D'Haese wrote: > > > Hello Christian, > > > Thanks for the help. It is actually a Bash script with filename FireTIG > (without .sh extension) I made myself. Where can I find the syntax file for > Bash? > > > Grtz > > As a pointless programming tip, I put the proper extension on my script > code files (.sh, .pl, etc) and then use make to copy&strip the > extension/chmod them into a bin area. While this seems unnecessary, besides > making it easier for vim know how to colorize the code, it also allows the > use of find/grep for searching. > Back to top <#m_6797970966302096792_digest_top> > vim function argument > <http://groups.google.com/group/vim_use/t/bdd1f4a37ace6016?utm_source=digest&utm_medium=email> > Yang Luo <[email protected]>: Jul 13 11:41PM -0700 > > I write a function like this: > function InsertNumber(start, end, step) > > let i = a:start > > let curr_line = 0 > > while i <= a:end > if a:step <= 0 > echo "Error: step cannot <=0." > break > endif > > call append(curr_line, i) > > let i += a:step > > let curr_line += 1 > > endwhile > endfunction > > > when I call this function, I type this: > :echo InsertNumber(8,10,1) > 8 > 9 > 10 > > > 1) How can I give arguement "step" a default value(eg: 1) when define the > function? > like a C function: > void C_func(int a, int b_have_default_val = 1) > { > > ; > } > 2) > I want to print number like this, how to do it? > 08 > 09 > 10 > "Jürgen Krämer" <[email protected]>: Jul 14 09:09AM +0200 > > Hi, > > Yang Luo schrieb am 14.07.2016 um 08:41: > > { > > > ; > > } > > you can use optional arguments like this > > function InsertNumber(start, end, ...) > if a:0 == 0 > let l:step = 1 > else > let l:step = a:1 > endif > ... > endfunction > > > 08 > > 09 > > 10 > > Use the printf() function: > > call appendline(curr_line, printf('%02d', i)) > > Or if your numbers can have more than two digits: > > let width = trunc(log10(a:end)) + 1 > let format = '%0' . width . 'd' > call appendline(curr_line, printf(format, i)) > > > Regards, > Jürgen > > -- > Sometimes I think the surest sign that intelligent life exists elsewhere > in the universe is that none of it has tried to contact us. (Calvin) > Yang Luo <[email protected]>: Jul 14 02:01AM -0700 > > thanks alot > Yang Luo <[email protected]>: Jul 14 03:06AM -0700 > > I complete the function as follow, now I want to add radix option, but I > don't know how to get width. Can you help me complement it > > function InsertNumber(start, end,...) " > step,is_column_first_0_padding,radix(b,d,o,x) > let l:i = a:start > let l:curr_line = 0 > if a:0 == 0 " a:0 extra argument numbers > let l:step = 1 > else > let l:step = a:1 " the first extra argument > endif > if a:0 == 2 > let l:is_padding = 0 > else > let l:is_padding = 1 "default padding > endif > if a:0 == 3 > let l:radix = a:3 > else > let l:radix = "" > endif > if l:radix == "b" > elseif l:radix == "o" > elseif l:radix == "x" > else > let l:width = float2nr(trunc(log10(a:end))) + 1 > let l:format = '%0'.l:width.'d' > endif > while l:i <= a:end > if l:step <= 0 > echo "Error: step cannot <= 0." > break > endif > if l:is_padding == 1 > call append(curr_line, printf(l:format, l:i)) > else > call append(curr_line, l:i) > endif > let l:i += l:step > let l:curr_line += 1 > endwhile > endfunction > "Jürgen Krämer" <[email protected]>: Jul 14 02:52PM +0200 > > Hi, > > Yang Luo schrieb am 14.07.2016 um 12:06: > > let l:curr_line += 1 > > endwhile > > endfunction > > there is an simpler way to calculate the necessary width -- just count > the number of characters used for the a:end parameter when printed: > > let width = strlen(printf('%d', a:end)) > > This can also be used to calculate the width for other radices than 10: > > if l:radix == "b" > let width = strlen(printf('%x', a:end)) * 4 > elseif l:radix == "o" > let width = strlen(printf('%o', a:end)) > elseif l:radix == "x" > let width = strlen(printf('%x', a:end)) > else > let width = strlen(printf('%d', a:end)) > endif > > Note that there is no specification for output as a binary number in > printf(). > > Regards, > Jürgen > > -- > Sometimes I think the surest sign that intelligent life exists elsewhere > in the universe is that none of it has tried to contact us. (Calvin) > Nikolay Aleksandrovich Pavlov <[email protected]>: Jul 14 07:00PM +0300 > > > else > > let l:step = a:1 " the first extra argument > > endif > > let l:step = get(a:000, 0, 1) > > Other arguments are to be handled in a similar fashion. > > > else > > let l:radix = "" > > endif > > let l:radix = get(a:000, 2, 'd') > > (needed for the below suggestion). > > > elseif l:radix == "x" > > else > > let l:width = float2nr(trunc(log10(a:end))) + 1 > > let l:width = len(a:end) > > For other radix variants you will have to use printf indeed. > > I could even suggest > > let l:format = '%0*' . l:radix > let l:width = len(printf('%' . l:radix, a:end)) > > (note: no if’s at all). > > > let l:format = '%0'.l:width.'d' > > let l:format = '%0*d' > > > echo "Error: step cannot <= 0." > > break > > endif > > This is wrong place to check, l:step does not change, but you check it > constantly. Move all arguments checks just below the place where you > define arguments. > > > if l:is_padding == 1 > > call append(curr_line, printf(l:format, l:i)) > > call append(curr_line, printf(l:format, l:width, l:i)) > > Back to top <#m_6797970966302096792_digest_top> > pass count to nmap with call > <http://groups.google.com/group/vim_use/t/545b3fc18d4106bb?utm_source=digest&utm_medium=email> > Bee <[email protected]>: Jul 13 11:28PM -0700 > > I tried to pass a count to <F11> but got a range error. > > nmap <F11> :call VMA()<bar>:bn<cr> > > Can it be done? > > nmap <F12> :bn<cr> > > 4<F12> works > > Bill > "Jürgen Krämer" <[email protected]>: Jul 14 08:59AM +0200 > > Hi, > > Bee schrieb am 14.07.2016 um 08:28: > > > Can it be done? > > > nmap <F12> :bn<cr> > > > 4<F12> works > > in my experience counts and mappings don't work together very well. A > preceding count is always used for the first command in the mapping only. > So what happens when you enter > > 4<F11> > > is that Vim converts your count to an address for the command-line, > which effectively results in > > :.,.+3call VMA()|:bn > > In your mapping you first have to remove this address and "move" the > count to the front of the command :bn. The count is stored in the global > variable v:count. There is an example at :help v:count which can be > adopted: > > :nmap <F11> :<C-U>call VMA()<bar>execute v:count1 . "bn"<cr> > > Note that I removed the superfluous second colon and that instead of > v:count I used v:count1 which defaults to 1 if no count was given. > > Regards, > Jürgen > > -- > Sometimes I think the surest sign that intelligent life exists elsewhere > in the universe is that none of it has tried to contact us. (Calvin) > Bee <[email protected]>: Jul 14 02:45AM -0700 > > > > -- > > Sometimes I think the surest sign that intelligent life exists elsewhere > > in the universe is that none of it has tried to contact us. (Calvin) > > More reading... a count is not needed. > First time I have used bufdo! > > function! B_() " field delimiter ';' > g/^\d*;\+$/d " remove blank records > v/^\d\+;/d " remove non-data records > let @4=expand('%:t:r') " remove path, extension > let @4=substitute(@4,'\s\+',' ','g') " remove extra whitespace, normalize > let @4=substitute(@4,'^ ','','') " remove leading whitespace > let @4=substitute(@4,' $','','') " remove trailing whitespace > let @4=substitute(@4,'.*\zs ',';','') " replace ' ' ';' before date > let @4.=";" " append ';' filename;date > g/^\d\+;/:normal "4P " prefix lines filename;date; > endfun " example :bufdo call B_() > > function! B() " everyone keep quiet > silent bufdo call B_() > endfun " example :call B() > > Bill > Back to top <#m_6797970966302096792_digest_top> > You received this digest because you're subscribed to updates for this > group. You can change your settings on the group membership page > <https://groups.google.com/forum/?utm_source=digest&utm_medium=email#!forum/vim_use/join> > . > To unsubscribe from this group and stop receiving emails from it send an > email to [email protected]. > -- Graham Nicholls Rock Computer Consultancy Limited. -- -- 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]. For more options, visit https://groups.google.com/d/optout.
