(Minor tweaks) |
JohnBeckett (talk | contribs) (Merge in fixed version of code from Underline text by User:Kurkale6ka) |
||
Line 48: | Line 48: | ||
It works by finding each matching line, then copying it ({{help|:t}}), then substituting each character (<tt>.</tt>) in the line. |
It works by finding each matching line, then copying it ({{help|:t}}), then substituting each character (<tt>.</tt>) in the line. |
||
+ | |||
+ | ==Using a function== |
||
+ | The following code (for your [[vimrc]]) defines a user command to underline the current line. Examples: |
||
+ | {| class="cleartable |
||
+ | | <tt>:Underline</tt> || gives underlining like <tt>--------------</tt> (default). |
||
+ | |- |
||
+ | | <tt>:Underline =</tt> || gives underlining like <tt>==============</tt>. |
||
+ | |- |
||
+ | | <tt>:Underline -=</tt> || gives underlining like <tt>-=-=-=-=-=-=-=</tt>. |
||
+ | |- |
||
+ | | <tt>:Underline ~+-</tt> || gives underlining like <tt>~+-~+-~+-~+-~+-~+-</tt>. |
||
+ | |} |
||
+ | |||
+ | <pre> |
||
+ | function! s:Underline(chars) |
||
+ | let chars = empty(a:chars) ? '-' : a:chars |
||
+ | let nr_columns = virtcol('$') - 1 |
||
+ | let uline = repeat(chars, (nr_columns / len(chars)) + 1) |
||
+ | put =strpart(uline, 0, nr_columns) |
||
+ | endfunction |
||
+ | command! -nargs=? Underline call s:Underline(<q-args>) |
||
+ | </pre> |
||
==See also== |
==See also== |
||
Line 53: | Line 75: | ||
==Comments== |
==Comments== |
||
− | {{todo}} |
||
− | *Decide what to do with new tip [[Underline text]]. Perhaps it should be merged to here? [[User:JohnBeckett|JohnBeckett]] 04:57, August 9, 2011 (UTC) |
||
− | |||
− | ---- |
||
<tt>yypVr-</tt> also works well. Great tip for Markdown and WikiTex users. |
<tt>yypVr-</tt> also works well. Great tip for Markdown and WikiTex users. |
||
[[User:Linktohack|Linktohack]] 15:37, February 3, 2012 (UTC) |
[[User:Linktohack|Linktohack]] 15:37, February 3, 2012 (UTC) |
Revision as of 09:19, 31 March 2012
created 2004 · complexity intermediate · author Chris X Edwards · version 6.0
This tip shows how to underline text document headings with, for example, a dashed line.
Using a mapping
Starting with a line of text like:
A Very Important Tip!
the mapping below inserts a row of dashes like this:
A Very Important Tip! ---------------------
This is useful to highlight headings. Add the following to your vimrc:
" Underline the current line with dashes in normal mode nnoremap <F5> yyp<c-v>$r- " Underline the current line with dashes in insert mode inoremap <F5> <Esc>yyp<c-v>$r-A
Of course you can use other characters instead of -, for example, = or _.
In case you want to get a line above and below the heading, do this in normal mode:
<F5>yykP
Using substitute
You can use the global and substitute commands (:help :g, :help :s) to underline all headings matching a pattern. For example, the following adds a row of dashes under each line that starts with "Chapter":
:g/^Chapter/t.|s/./-/g
It works by finding each matching line, then copying it (:help :t), then substituting each character (.) in the line.
Using a function
The following code (for your vimrc) defines a user command to underline the current line. Examples:
:Underline | gives underlining like -------------- (default). |
:Underline = | gives underlining like ==============. |
:Underline -= | gives underlining like -=-=-=-=-=-=-=. |
:Underline ~+- | gives underlining like ~+-~+-~+-~+-~+-~+-. |
function! s:Underline(chars) let chars = empty(a:chars) ? '-' : a:chars let nr_columns = virtcol('$') - 1 let uline = repeat(chars, (nr_columns / len(chars)) + 1) put =strpart(uline, 0, nr_columns) endfunction command! -nargs=? Underline call s:Underline(<q-args>)
See also
Comments
yypVr- also works well. Great tip for Markdown and WikiTex users. Linktohack 15:37, February 3, 2012 (UTC)
- Thanks. There is a subtle feature about the method in the tip. If you have the default 'virtualedit' setting (""), and if there is a tab in the line, using Vr- replaces each tab with a single dash, while the method in the tip uses the correct number of dashes depending on the width of the tab. JohnBeckett 06:50, February 4, 2012 (UTC)