Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find character under cursor in vim

Tags:

vim

In vim, how can I find the next occurrence of the character under the cursor? I want something like * but for a single character instead of a word.

Example:

H|o|w are you? 

goes to:

How are y|o|u? 

The reason I want it is because there is a strange looking character (one that I don't even know how to type) all over my file and I want to remove them all quickly.

like image 998
priomsrb Avatar asked Apr 18 '11 11:04

priomsrb


People also ask

What is i character in Vim?

They're tabs. By default, VIM shows all control characers other than EOL as ^n where n is the character of the alphabet corresponding to the character being shown (tab = char #9, I = 9th char in alphabet).

How do I move the cursor to the end of a word in Vim?

Press e (“end”) to move the cursor to the last character of the current word.


2 Answers

Also look at

ga (show character under cursor as ascii)

g8 (show character under cursor as utf8, including Unicode stuff, hex codes etc)

And most usefully:

8g8

Find an illegal UTF-8 byte sequence at or after the         cursor.  This works in two situations:         1. when 'encoding' is any 8-bit encoding         2. when 'encoding' is "utf-8" and 'fileencoding' is            any 8-bit encoding         Thus it can be used when editing a file that was         supposed to be UTF-8 but was read as if it is an 8-bit         encoding because it contains illegal bytes.         Does not wrap around the end of the file.         Note that when the cursor is on an illegal byte or the         cursor is halfway a multi-byte character the command         won't move the cursor. 

Update

Use Tim Pope's vim-characterize plugin to get full UNICODE names and data:

In Vim, pressing ga on a character reveals its representation in decimal, octal, and hex.

Characterize.vim modernizes this with the following additions:

  • Unicode character names: U+00A9 COPYRIGHT SYMBOL
  • Vim digraphs (type after to insert the character): Co , cO
  • Emoji codes: :copyright:
  • HTML entities: ©
like image 54
sehe Avatar answered Sep 29 '22 10:09

sehe


On a single line you can use fo and then ; to go forward (or , backward).

On multiple line, you must use /o and then n to go forward (or N backward).

Alternatively, your problem might be solved by using regexp and substitute, ie :%s/[your odd character]//g

To manage to copy and paste your "odd character", you should go in visual using v to select the character, then yESC.

Then type : :%s/<CTRL+r>"//g

<CTRL+r>" will copy the content of the copy register in the command line.

like image 45
Xavier T. Avatar answered Sep 29 '22 08:09

Xavier T.