ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

How to Copy and Paste in Emacs

Updated on May 25, 2011

Emacs, or GNU Emacs, is one of many popular text editors on Linux and other computer platforms. Along with vi or vim, these Linux text editors offer many advanced features that can improve the efficiency and abilities of the editor far beyond simple typing. Also, these text editors can be run in a console without a graphical user interface.

Unfortunately, along with the additional features come a great deal of complexity. Suddenly, simple tasks like copying and pasting are no longer clear and obvious. In these text editors, keyboard shortcuts have largely replaced menus and mouse functions. So for those not used to working in a console or terminal, the Emacs learning curve can be especially steep.

If you just want to know how to copy and paste and then get on with your life, the short answer below provides exactly what you need. But if you are curious about the mechanics of Emacs and the deal with all of this "killing" and "yanking", read on for a bit more detail.

Source

The Short Answer - Copy and Paste

1. Move cursor to beginning of text and set a mark:

[ctrl-spacebar]

2a. Move cursor to end of desired text and cut (kill):

[ctrl-w]

2b. If only copying, immediately paste (yank)***:

[ctrl-y]

3. Move cursor to new location and paste (yank):

[ctrl-y] 

*** Note: If you know you will only be copying, 2a. and 2b. can be combined into:

[alt-w] OR [Esc][w]

Source

The Long Answer - Copy and Paste

Emacs doesn't technically have the commands copy and paste that have become popularized by other text editors. Instead, the Emacs text editor uses something called the "kill ring" to save removed text, and gives an option to "yank" it back into the current or any other document. The combined kill and yank process can effectively mimic copy and paste in Emacs, but it offers some additional features as well.

Killing Vs. Deleting

Killing text and deleting text both remove it from the given text file. However, they vary in how the text can be used afterwards. Killing generally occurs when any large, non-trivial amount of text is removed. As opposed to deleting which occurs most commonly with single characters or white space. Killing text will automatically store it in the kill ring, allowing the text to later be yanked back into the current or any other buffer. Deleting is generally a permanent operation with the exception of being able to undo.

Kill Commands

There are many many Emacs commands for killing various amounts of text such as words, sentences, lines, and regions. The [ctrl-w] mentioned above kills a region as defined by a starting mark. Other useful commands include:

Description
Command
Kill Word
[alt-d]
Kill Rest of Line
[ctrl-k]
Kill Whole Line
[ctrl-S-backspace]
Kill Rest of Sentence
[alt-k]

Yanking

Once text has been moved to the kill ring, it can be yanked back into any buffer or file. Emacs doesn't just store the most recently killed text, but a large number of blocks as defined by the variable kill-ring-max. The short answer above used [ctrl-y] to yank the most recent text back from the kill ring. If you want to yank a previously killed piece of text, first use [ctrl-y] to yank the most recent text, then repeatedly use [alt-y] to swap out the other text in the kill ring. To view the entire kill ring history, the Emacs command [ctrl-h] v kill-ring will show all killed text.

Comments

    0 of 8192 characters used
    Post Comment

    • LoganG profile imageAUTHOR

      LoganG 

      7 years ago from Florida

      amalloy, Glad that worked out for you!

    • amalloy profile image

      amalloy 

      7 years ago from Los Angeles

      Yep, thanks, I went ahead and bound C-M-backspace to it. It turns out C-S-backspace was working fine but I was so unused to C-S-anything that I was typing C-M instead, so the rebinding is a good idea :)

    • LoganG profile imageAUTHOR

      LoganG 

      7 years ago from Florida

      Thanks for the note amalloy! I went back and checked the emacs manual and I'm certain it is correct, BUT the manual points out that "many character terminals will prevent you from typing the key sequence C-S-backspace." Honestly I'm not sure which terminals would let you.

      Another option would be to define your own key sequence to call the emacs command "kill-whole-line" which is what C-S-backspace was supposed to do.

      Hope that helps!

    • amalloy profile image

      amalloy 

      7 years ago from Los Angeles

      Nice. I've been using Emacs for months, and in fact wrote a hub about it today, but I didn't know about C-S-backspace; I've been faking it with C-a C-k C-k. Actually, I can't make C-S-backspace work - are you sure that's right?

    working

    This website uses cookies

    As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

    For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://hubpages.com/privacy-policy#gdpr

    Show Details
    Necessary
    HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
    LoginThis is necessary to sign in to the HubPages Service.
    Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
    AkismetThis is used to detect comment spam. (Privacy Policy)
    HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
    HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
    Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
    CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
    Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
    Features
    Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
    Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
    Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
    Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
    Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
    VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
    PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
    Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
    MavenThis supports the Maven widget and search functionality. (Privacy Policy)
    Marketing
    Google AdSenseThis is an ad network. (Privacy Policy)
    Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
    Index ExchangeThis is an ad network. (Privacy Policy)
    SovrnThis is an ad network. (Privacy Policy)
    Facebook AdsThis is an ad network. (Privacy Policy)
    Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
    AppNexusThis is an ad network. (Privacy Policy)
    OpenxThis is an ad network. (Privacy Policy)
    Rubicon ProjectThis is an ad network. (Privacy Policy)
    TripleLiftThis is an ad network. (Privacy Policy)
    Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
    Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
    Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
    Statistics
    Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
    ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
    Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)