On 06/10/09 13:43, Stahlman Family wrote:
>
>
>
> Paul wrote:
>> On Mon, 5 Oct 2009, Brett Stahlman wrote:
>>
>>> nnoremap<F8>  :exe "resize " . (line('.') - line('w0') + 1)<CR>\|zb
>>
>> Yes, you have the idea. That works for horizontal split. Now, how about for
>> vertical split? I don't see a column() function...
>
> Well, I see that Christian has already supplied you with what appears to
> be a more complete solution, so this may not be necessary, but here's a
> more simplistic mapping, which reflects my best guess as to what you
> were trying to do. It works for both 'wrap' and 'nowrap'. What it does
> is shrink the current window so that anything to the right of the cursor
> is no longer visible. It does so without altering what is in the first
> visible column.
>
> <<<All on one line...>>>
>
> nnoremap<silent>  <F9>  :if !&wrap\|let rvc = virtcol('.')\|let rc =
> col('.')\|exe "norm! g0"\|let lvc = virtcol('.')\|exe "vert resize " .
> (rvc - lvc + 1)\|call cursor(0, rc)\|exe "norm! ze"\|else \|exe "vert
> resize " . col('.')\|endif<CR>
>
> Brett Stahlman

I haven't analyzed the proposed mapping in detail, but note that the 
col() function counts memory _bytes_, i.e. always one for a hard tab 
(which occupies between one and eight screen columns, or more with 
nonstandard values of 'tabstop'), but OTOH in UTF-8 three for CJK 
characters in the BMP (below U+FFFF) and four for CJK characters above 
U+FFFF, though (as CJK "wide" glyphs) they each occupy only two screen 
cells. To count screen columns you need the virtcol() function, which 
you used elsewhere in the same mapping.

Best regards,
Tony.
-- 
Horngren's Observation:
        Among economists, the real world is often a special case.

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to