---
# System prepended metadata

title: textobj用法

---

# textobj用法
[toc]
## h2
:::success
The operators that can be used are:
	~	switch case					|v_~|
	d	delete						|v_d|
	c	change (4)					|v_c|
	y	yank						|v_y|
	>	shift right (4)					|v_>|
	<	shift left (4)					|v_<|
	!	filter through external command (1)		|v_!|
	=	filter through 'equalprg' option command (1)	|v_=|
	gq	format lines to 'textwidth' length (1)		|v_gq|

The objects that can be used are:
	aw	a word (with white space)			|v_aw|
	iw	inner word					|v_iw|
	aW	a WORD (with white space)			|v_aW|
	iW	inner WORD					|v_iW|
	as	a sentence (with white space)			|v_as|
	is	inner sentence					|v_is|
	ap	a paragraph (with white space)			|v_ap|
	ip	inner paragraph					|v_ip|
	ab	a () block (with parentheses)			|v_ab|
	ib	inner () block					|v_ib|
	aB	a {} block (with braces)			|v_aB|
	iB	inner {} block					|v_iB|
	at	a <tag> </tag> block (with tags)		|v_at|
	it	inner <tag> </tag> block			|v_it|
	a<	a <> block (with <>)				|v_a<|
	i<	inner <> block					|v_i<|
	a[	a [] block (with [])				|v_a[|
	i[	inner [] block					|v_i[|
	a"	a double quoted string (with quotes)		|v_aquote|
	i"	inner double quoted string			|v_iquote|
	a'	a single quoted string (with quotes)		|v_a'|
	i'	inner simple quoted string			|v_i'|
	a`	a string in backticks (with backticks)		|v_a`|
	i`	inner string in backticks			|v_i`|

Additionally the following commands can be used:
	:	start Ex command for highlighted lines (1)	|v_:|
	r	change (4)					|v_r|
	s	change						|v_s|
	C	change (2)(4)					|v_C|
	S	change (2)					|v_S|
	R	change (2)					|v_R|
	x	delete						|v_x|
	D	delete (3)					|v_D|
	X	delete (2)					|v_X|
	Y	yank (2)					|v_Y|
	p	put						|v_p|
	P	put without overwriting registers		|v_P|
	J	join (1)					|v_J|
	U	make uppercase					|v_U|
	u	make lowercase					|v_u|
	^]	find tag					|v_CTRL-]|
	I	block insert					|v_b_I|
	A	block append					|v_b_A|

:::

## Vim text-objects for Python development
by David Winterbottom on Thursday, 13 June 2019

## 什麼是textobj
:::info
Text objects, as in the iw from ciw (“change inner word”), form an important part of your Vim mentalese1. This post details those that I find most useful for Python and Django development.

For brevity, the leading a (mnemonic: “a"n) or i (mnemonic: “inner”), that you combine with the following commands to form the full text-object, are omitted.

From core Vim:

w → a word
W → a WORD
t → a HTML/XML tag
s → a sentence
p → a paragraph
From the (highly recommended) wellle/targets.vim plugin:

, . ; : + - = ~ _ * # / | \ & $ → an area of text delimited by the given character (super useful).
a → a function argument.
Furthermore wellle/targets.vim overrides the built-in text objects to seek to the next occurence of the text-object if the cursor isn’t already within one. This is useful.

From other language-agnostic, third-party text objects:

l → a line (via kana/vim-textobj-line)
e → the entire buffer (via kana/vim-textobj-entire) so you can, say, indent the entire buffer with =ae.
i → an indented block (via kana/vim-textobj-indent). This isn’t quite as useful as it sounds for Python work as it stops at a blank line within an indented block – still worth having to hand.
c → a comment block (via glts/vim-textobj-comment).
jeetsukumaran/vim-pythonsense provides some Python text objects:

f → a Python function
c → a Python class2
d → a Python docstring
For editing Django templates (via mjbrownie/django-template-textobjects):

db → a {% block ... %}...{% endblock %} block
di → a {% if ... %}...{% endif %} conditional block
df → a {% for ... %}...{% endfor %} for loop block
dv → a {{ ... }} variable
dt → a {% tagname ... %} tag
Several of the above plugins are built using kana/vim-textobj-user, which provides a simple framework for building your own text-objects.

Useful references:

Cheatsheet for wellle/targets.vim
A list of all text-object plugins built with kana/vim-textobj-user
Related articles:

* Vim Text Objects: The Definitive Guide by Jared Carroll (2011).
* Vim Killer Features Part 1: Text Objects by Cody Veal (2013).
* Vim text objects, extend Vim’s natural language! by Owen Garland (2017).
:::