up vote 0 down vote favorite
share [g+] share [fb]

How can I make a number sign show up???

link|improve this question

33% accept rate
What unix are you using? – chris Aug 25 '09 at 18:35
feedback

5 Answers

There is the very remote possibility that the user is using an antique unix that has # mapped to delete and @ mapped to kill (^U on most traditional modern systems).

If his system is configured this way, he will not be able to type a # because every time he does it will delete whatever character is to the left of where he is trying to type the #. The simplest way to fix this is stty erase (ctrl-V)(backspace key).

This is unlikely to be the case -- it's not likely that anyone is running irix 5.4 or hp/ux 10.20 these days, but who knows, right?

link|improve this answer
and often users don't notice this because their system is using an old version of bash that ignores these stty settings; they won't notice their wacky stty settings until they run an app that doesn't override the settings (such as vi). – chris Aug 25 '09 at 18:51
plus 1 for stirring up (useful) memories from the good ol' days... – Jessica McKinnon Sep 8 '09 at 19:08
feedback

Assuming a US keyboard, Press i to go into insert mode, and then shift-3. You can use either shift key, and press it the same time as the '3' key. The three key is after two, and before four.

link|improve this answer
I am teasing a bit of course, are you just trying to edit a file? vi has to modes, command and input, press i to go into input mode, and esc to go back to command mode – Kyle Brandt Aug 25 '09 at 17:55
Also, you might try a command like 'nano' for the time being to edit the file if it is installed. – Kyle Brandt Aug 25 '09 at 17:57
feedback

If you're in insert mode, it should be just the same as any other application. If it doesn't say "--INSERT--" at the bottom of the terminal, hit i, then try typing. When you're done, hit escape to get out of insert mode and back to "command mode".

On the off chance you're using a Mac with a UK keyboard layout, you need to use alt+3 to get a # symbol.

link|improve this answer
1  
Sorry, I should have added.. the "--INSERT--" thing will only show up in vim, which substitutes vi on a lot of systems. The only way to know you're in insert mode in actual vi is if you can, well, insert stuff. – Andrew Aug 25 '09 at 18:10
feedback

Although insert mode is often considered the preferred method, as previous answers have suggested, needing to type 'i' can be needlessly complicated for a beginner in vi. The following solution will achieve the same basic effect without resorting to insert mode at all.

First of all, when you're in the text file you want to edit, type the following command

:!echo "\#" > numsign

Yes, the colon is part of the command. If it doesn't work, you may need to hit ESC a few times to get back to command mode. You may have to hit ENTER after the command has run, depending on what version of vi you're running.

What this does, is utilizes the shell to feed a number sign into the text file 'numsign'. This file can be subsequently loaded into your current text document using the following command

:r numsign

Again, the colon is part of the command. If you've done everything corrently, this will insert the number sign onto the line immediately succeeding your current line. Of course, chances are that's not where you want your number sign to show up. The following bit of vi-magic can be used to place it wherever you want.

First, move your cursor (I'll leave this as an exercise to the reader) to the number sign, and type vi's 'delete character' command

x (Delete text at cursor)

Which will cut the character and store it in a buffer. This character can then be pasted by using either of vi's 'paste' commands

p (Paste after current position)
P (Paste before current position)

Yeah, all vi commands are case-sensitive, you'll get used to it. You can move your cursor to wherever you want your number sign to go, and press either of the paste commands to paste it either before, or after, the current cursor position. This can be repeated as many times as necessary, assuming you haven't overwritten your paste buffer with anything else.

One unfortunate side-effect of this method is that it may leave a blank line in your text document where your number sign was originally read into the file. This can be easily remedied using vi's 'delete line' command

dd (Delete entire line)

But be warned that this will overwrite the number sign in your buffer, and replace it with the blank line. Only use this command if you're sure it's what you want to do - it can be very dangerous in the wrong hands.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.