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

  • Home
  • SEARCH
  • 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 758139
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T15:26:39+00:00 2026-05-14T15:26:39+00:00

It seems vims python sripting is designed to edit buffer and files rather than

  • 0

It seems vims python sripting is designed to edit buffer and files rather than work nicely with vims registers. You can use some of the vim packages commands to get access to the registers but its not pretty.

My solution for creating a vim function using python that uses a register
is something like this.

function printUnnamedRegister()
python <<EOF
print vim.eval('@@')
EOF
endfunction

Setting registers may also be possible using something like

function setUnnamedRegsiter()
python <<EOF
s = "Some \"crazy\" string\nwith interesting characters"
vim.command('let @@="%s"' % myescapefn(s) )
EOF
endfunction

However this feels a bit cumbersome and I’m not sure exactly what myescapefn should be.
So I’ve never been able to get the setting version to work properly.

So if there’s a way to do something more like

function printUnnamedRegister()
python <<EOF
print vim.getRegister('@')
EOF
endfunction

function setUnnamedRegsiter()
python <<EOF
s = "Some \"crazy\" string\nwith interesting characters"
vim.setRegister('@',s)
EOF
endfunction

Or even a nice version of myescapefn I could use then that would be very handy.

UPDATE:

Based on the solution by ZyX I’m using this piece of python

def setRegister(reg, value):
  vim.command( "let @%s='%s'" % (reg, value.replace("'","''") ) )
  • 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-05-14T15:26:39+00:00Added an answer on May 14, 2026 at 3:26 pm

    If you use single quotes everything you need is to replace every occurence of single quote with two single quotes.
    Something like that:

    python import vim, re
    python def senclose(str): return "'"+re.sub(re.compile("'"), "''", str)+"'"
    python vim.command("let @r="+senclose("string with single 'quotes'"))
    

    Update: this method relies heavily on an (undocumented) feature of the difference between

    let abc='string
    with newline'
    

    and

    execute "let abc='string\nwith newline'"
    

    : while the first fails the second succeeds (and it is not the single example of differences between newline handling in :execute and plain files). On the other hand, eval() is somewhat more expected to handle this since string("string\nwith newline") returns exactly the same thing senclose does, so I write this things now only using vim.eval:

    python senclose = lambda str: "'"+str.replace("'", "''")+"'"
    python vim.eval("setreg('@r', {0})".format(senclose("string with single 'quotes'")))
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 397k
  • Answers 397k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer maybe this can help you some way http://japhr.blogspot.com/2009/03/sinatra-innards-deletgator.html May 15, 2026 at 3:22 am
  • Editorial Team
    Editorial Team added an answer must you convert from strings to double? Yes. if so.… May 15, 2026 at 3:22 am
  • Editorial Team
    Editorial Team added an answer Shouldn't be a problem since merge is done in your… May 15, 2026 at 3:22 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

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.