Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7755165
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T12:30:01+00:00 2026-06-01T12:30:01+00:00

I’m trying to create a script what permits me to select a few lines

  • 0

I’m trying to create a script what permits me to select a few lines and create a virtualedit block around it; 1 column after the longest line.

This is my code

function! VirtualEdit()
  let EndLine = line("'>")

  set virtualedit = all

  let maxlength = max(map(range(line("'<"), line("'>")), "virtcol([v:val, '$'])"))-1
  call cursor(1,maxlength+1)  
  normal "^Q".EndLine."jc<space><ESC>"

  set virtualedit = ''
endfunction

What it must do is
1) Control the longest line in my selection (maxlength).
2) Put the cursor on the first line in the selection at the column of the longest line +1 column.
3) Than Activate Visual Block selection (on my windows pc the command is C-Q)
4) Extend the visual block till the last line in the selection (the command on my pc for moving down = “j”).
5) Than use the “c” key to insert a “space” character and ESC to exit the insert mode in order to fill the virtual block column with spaces.

However I can’t find out how to use a variable (Endline) in a normal command.
I noted also that keys as and don’t work in my above example.
What did I wrong?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T12:30:02+00:00Added an answer on June 1, 2026 at 12:30 pm

    You have many errors here:

    1. :set does not let you have spaces around =
    2. :set does not accept expressions, thus set ve='' is let &ve="''", not let &ve='' which is :set ve=.
    3. :normal command also does not accept expressions, it accepts strings that are just executed. Thus :normal "^ is trying to use register ^, fails (no such register) and stops processing the rest of the line. Use :execute to pass expressions to :normal.
    4. :normal command does not accept <Key> syntax. Neither do viml expressions, they have "\<Key>" instead (note: only double quotes and with backslash). ^Q syntax is not accepted by anybody and having raw control codes (displayed by vim as ^Q) inside a text file is not the best idea.
    5. Don’t use :normal without a bang. Most of time you don’t need it (you need to replace ^Q with \<C-v> in this case though because it is a mapping).
    6. Don’t hardcode virtualedit value. Instead of

      set ve=all
      <...>
      set ve=
      

      use

      let savedve=&ve
      set ve=all
      try
          <...>
      finally
          let &ve=savedve
      endtry
      
    7. {N}j means “N lines down”, not “go to N’th line”. “Go to N’th line” is {N}gg or {N}G.
    8. You have let maxlen=<...>-1 and the on only line where maxlen is used you have maxlen+1. It is strange.

    If you fix this you can proceed, but you don’t need adjusting virtualedit and using :normal at all:

    function AddSpaces()
        let [lstart, lend]=[line("'<"), line("'>")]
        if lstart>lend
            let [lstart, lend]=[lend, lstart]
        endif
        let maxcol=max(map(range(lstart, lend), "virtcol([v:val, '$'])"))
        let newlines=map(range(lstart, lend), 'printf("%-'.maxcol.'s", getline(v:val))')
        call setline(lstart, newlines)
    endfunction
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Basically, what I'm trying to create is a page of div tags, each has
I'm trying to create an if statement in PHP that prevents a single post
I am trying to understand how to use SyndicationItem to display feed which is
link Im having trouble converting the html entites into html characters, (&# 8217;) i
For some reason, after submitting a string like this Jack’s Spindle from a text
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I am trying to render a haml file in a javascript response like so:
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I'm trying to use string.replace('’','') to replace the dreaded weird single-quote character: ’ (aka

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.