Vim'de bir Python kodu bloğu nasıl yorumlanır


186

Girinti, belirli (bu hatlar görsel modunda seçilmiştir olup, ya da kod satırları beni izin vermek için Vim bir anahtar haritalama olmadığını merak n geçerli imleç konumuna üstünde / altında çizgiler).

Temel olarak aşağıdakileri dönüştüren bir şey

def my_fun(x, y):
    return x + y

için

#def my_fun(x, y):
#    return x + y

Ben ya kullanarak #veya """ilgili satırları yorumlamak için iyiyim . İdeal olarak, verilen satırlar yorumlandıysa satırları açmak için aynı tuş eşlemesini istiyorum.


Tekerleği yeniden icat etmeye gerek yok, bir eklenti var: t Birden fazla dil için yorum kodunu destekleyen (un) tComment .
Miyav

Yanıtlar:


411

1. Adım: Yorum yapmak istediğiniz ilk satırın ilk sütununa gidin.

Başlangıç ​​hali

2. Adım : Ctrl+ tuşlarına basın vve yorum yapmak istediğiniz satırları seçin:

Satırları seçin

Adım 3: Shift - I#space(Soldaki Ekle moduna girin, eklemek için karakterleri yazın. Seçim kaybolacak, ancak içindeki tüm satırlar Adım 4'ten sonra değiştirilecektir.)

Yorum Yap

4. Adım: Esc

<Esc>


4
Çizgileri bu şekilde yorumlamak harika çalışıyor. Bu hatları rahatsız etmenin bir yolu var mı? Shift-I # <ESC>işe yaramadı (belki de yanlış yapıyorum).
Rishabh Manocha

41
@ rishabh-manocha: Eklenen # numarayı seçmek için görsel blok (Ctrl-V) kullanın ve silmek için x yazın.
theosp

3
Shift-I'in "satırdaki ilk boş olmayan alana ekleme" anlamına geldiğini hatırlamanız gerekir, bu nedenle silmek için kullanılamaz. Ctrl-V ile görsel seçim yapmak, değiştirilecek karakterleri işaretler, ardından "x" seçilen alanda bir karakteri siler ve sonunda '#' karakterlerini siler. Daha fazla bilgi için bkz. ": H I" ve ": h CTRL-V" vim.
Tin Man

5
@Samaursa Ctrl-V muhtemelen Windows'ta çalışmıyor. Bunun yerine Ctrl-Q'yu deneyin.
AZ.

1
2 karakteri silmek için ('#' karakterini eklediyseniz), değiştirmek istediğiniz üst satırda imleci bulun, görsel blok moduna girmek için ctrl-v tuşlarına basın, değiştirmek için tüm satırları vurgulamak için j (veya aşağı ok) tuşuna basın, tuşuna basın. 2 karakterlik bir genişliği vurgulamak için l (veya sağ ok) (vurgulamak için sütun başına bir kez basın) ve ardından vurgulanan metni silmek için d düğmesine basın.
thinkmassive


49

Aşağıdaki eşlemeyi .vimrc'nize ekleyebilirsiniz

vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>

Bloğunuzu şununla vurgulayın:

Shift+v

# satırlarınızı ilk sütundan yorumlamak için.

-# aynı şekilde.


5
Basit parlak! Teşekkürler!
I159

1
@architectonic, görsel modda olmadığınız sürece bir etkisi yoktur ve görsel modda '#' bağlı değildir vimdoc.sourceforge.net/htmldoc/visual.html#visual-operators
13:15

1
Biraz değiştirdim: Ctrl + k yorum için "vnoremap <silent> <Ck>: s # ^ # \ ## <cr>: noh <cr>"> Ctrl + u uncomment için: "vnoremap <silent> <Cu >: s # ^ \ ### <cr>: noh <cr> "
Pradip Das

1
@JonathanHartley '/' kullanmak zorunda değilsiniz bu durumda '#' sınırlayıcıdır. Yani: s / ^ / # / ve: s / ^ # // eşdeğer ikamelerdir. Bu yüzden satır başlangıcını '#' ile değiştirin ve ilk sütundaki '#' ile '' değiştirin. <cr>: noh <cr> sadece arama dizesini temizler, böylece işiniz bittiğinde hiçbir şey vurgulanmaz.
cdated

1
@JonathanHartley dürüstçe düşünüyorum ki ben sadece düşünmeden bir model izledim. Şimdi şaşırdım # vs / daha erken gelmedi. Sağduyuya göre cevap değiştirildi. Teşekkürler!
16:30

26

Bloğunuzu şununla vurgulayın: ShiftV

Seçilen engelleme ile yorum yapın: :norm i# (küçük harf i)

Rahatsız etmek için bloğunuzu tekrar vurgulayın ve aşağıdakilerle birlikte rahatsız olun: :norm ^x

:normKomut, her satır için bir işlem gerçekleştirir. Yorum #yapıldığında her satırın başına a eklenir ve bu açıklama kaldırılırsa silinir #.


Güncel bir Vim ve düz bir yapılandırma ile görsel modda (ile Shift+v) satırları seçmek ve sonra :norm i#sadece ilk seçilen satırı değiştirmek. Bu benim için 389 - 391 satırlarını yorumlamak için çalışır::389,391norm i #
mmell

22

Genellikle görsel bir blok ( <C-V>) süpürürüm , sonra ilk karakteri ara ve değiştir:

:'<,'>s/^/#

(Görsel blok seçiliyken komut moduna girmek otomatik olarak komut satırına '<,'> yerleştirir) Daha sonra aynı görsel bloğu süpürerek bloğun açıklamasını kaldırabilirim:

:'<,'>s/^#//


9

Benim içinde aşağıdaki satırları var .vimrc:

" comment line, selection with Ctrl-N,Ctrl-N
au BufEnter *.py nnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N><C-N>    <C-O>mn<C-O>:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>gv`n

" uncomment line, selection with Ctrl-N,N
au BufEnter *.py nnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>:s/^#$//ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N>n     <C-O>mn<C-O>:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR><C-O>:s/^#$//ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>gv:s/#\n/\r/ge<CR>:noh<CR>gv`n

Kısayollar, başladıkları sürece imleç konumunuzu ve yorumlarınızı korur #(# işaretinden sonra boşluk vardır). Örneğin:

# variable x
x = 0

Yorum yaptıktan sonra:

# variable x
#x = 0

Açıldıktan sonra:

# variable x
x = 0

Güzel, ama basit s/^/#/regexp kullanarak daha iyi olacağını düşünüyorum . Yorum karakterinin satırın başında olmasını tercih ediyorum ... ama daha da önemlisi, 'yorumların yorumlanması' gerçekten çok önemli. Ben de düşürürdümau BufEnter *.py , çünkü #yapılan yorumlar komutları varsayılan olarak tüm tamponları kullanılmak üzere genel yeterlidir.
travc

5

Açıkçası bu bağlantı için bir tcomment eklentisi kullanıyorum . Hemen hemen her sözdizimini işleyebilir. Güzel hareketleri tanımlar, python'a özgü bazı metin bloğu eşleştiricileri ile kullanarak onu güçlü bir araç haline getirir.


5

NERDcommenter , bir dizi dosya türünü ve ilişkili yorum karakterlerini otomatik olarak algılayan yorum yapmak için mükemmel bir eklentidir. Kullanarak yüklemek gülünç kolayPathogen .

İle yorum yapın <leader>cc. İle rahatsız et<leader>cu . Ve yorumları ile değiştirin <leader>c<space>.

(Varsayılan <leader>vim anahtarıdır \)


3

Vim için, birçoğu çok dilli olan - sadece python için değil, çok sayıda yorum eklentisi var. Vundle gibi bir eklenti yöneticisi kullanıyorsanız , bunları kullanarak (Vundle yükledikten sonra) örneğin:

:PluginSearch comment

Ve bir sonuç penceresi alacaksınız. Alternatif olarak , yorum eklentileri için vim komut dosyalarında arama yapabilirsiniz .


3

Eklenti veya eşleme gerekmez. Seçilen her satırda tam olarak istediğiniz her şeyi yürüten yerleşik "norm" komutunu deneyin.

Yorum ekle

1. shift V to visually select lines
2. :norm i#

# Yorumu Kaldır

1. visually select region as before
2. :norm x

Veya yorumlarınız girintiliyse yapabilirsiniz :norm ^x

Bunların, her satırda yürütmek için ": norm" ile başlayan sıradan vim komutları olduğuna dikkat edin.

Buradaki yanıtlardan birinde "norm" komutunu kullanmak için daha ayrıntılı yanıt

Vim'deki yorum / yorum satırlarının hızlı bir yolu nedir?


1

Çok az bir hafif eklenti : vim-comment.

gcc
gcgcuncomment için bir satır yorum yapmak . daha fazla bilgi için eklenti sayfasına göz atın.

v+k/jdaha sonra gcco bloğu vurgulamak için bloğu vurgulayın .


0

CtrlK yorum için (Görsel Mod):

vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>

CtrlU rahatsızlık için (Görsel Mod):

vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.