Es ist schon eine Weile her, seit ich diesen Artikel geschrieben habe. Trotzdem fliegen manchmal gute Dinge und mit einem Gefühl der Dankbarkeit, Das vimrc hat sich seit der Erstellung des Artikels erheblich geändert, und es tut mir leid, dass der Inhalt noch alt ist. Deshalb habe ich ihn hinzugefügt. Ich würde mich freuen, wenn Sie sich auf die Einstellungen der einzelnen Plug-Ins beziehen könnten. Wenn Sie alles eingerichtet haben, wird es so sein.
Nach meinem Eintritt in das Unternehmen habe ich alle vim-Einstellungen für neovim neu geschrieben. ~~ Wenn Sie jetzt eine Umgebung erstellen möchten, machen wir es mit neovim, das sich reibungslos bewegt. ~~ Der Plug-In-Unterstützungsstatus von vim8 hat sich geändert und funktioniert mit vim8 mit Ausnahme von deoplete. Aber ich bin neovim, weil ich deoplete verwenden möchte.
Informationen zur Installation von neovim finden Sie in früheren Artikeln. Ich habe es für Ubuntu geschrieben, aber für Mac ist es fast dasselbe. Sie sollten in der Lage sein, "apt-get" durch "Brew" zu ersetzen Einstellungen für zsh + neovim unter Ubuntu
Wenn Sie Python in vim schreiben möchten, sind einige Plugins ein Muss. Die diesmal eingeführten Pragins sind wie folgt.
dein.vim Shougo/dein.vim
Ein Plug-In-Manager, der beim Installieren und Aktualisieren von Plug-Ins hilft, ist für die Verwaltung vieler Plug-Ins unerlässlich.
Früher habe ich neobundle
verwendet, den Vorgänger von dein.vim
, aber ich habe den Job gewechselt, als ich den Job gewechselt habe. Jetzt, da Sie Konfigurationsdateien mit "* .toml" erstellen können, sind Plugin-Abhängigkeiten und Einstellungen für das verzögerte Laden viel einfacher zu lesen als in der "neobundle" -Ära.
Dark Mimuou ist der Vimmer, dem ich am meisten verpflichtet bin. Ich bin nicht der einzige, der das glaubt.
let s:dein_dir = expand('$CACHE/dein')
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
call dein#load_toml('~/.vim/rc/dein.toml', {'lazy': 0})
call dein#load_toml('~/.vim/rc/dein_lazy.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_neo.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_python.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_go.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_frontend.toml', {'lazy': 1})
call dein#end()
call dein#save_state()
endif
Zusammen mit den aufgeblähten Dein-Einstellungen werden die Plug-In-Einstellungen von Toml verwaltet.
Dein.toml
ohne verzögertes Laden
Dein_lazy.toml
, das an mehrere Dateitypen und verzögertes Laden gebunden ist
Dein_ {Dateityp} .toml
zum verzögerten Laden eines einzelnen Dateityps
Es wird gesagt.
denite.nvim
Wird hauptsächlich als Datei-Launcher verwendet. Aber das ist nicht alles. denite
ist eine integrierte Plattform zum Auflisten, Filtern und Bearbeiten von allem.
In meinem Fall besteht die Hauptsache darin, die Liste der Dateien im Projekt anzuzeigen → eingrenzen → öffnen und ~~ Grep nach der Zeichenfolge in der Datei suchen ~~ (Da der Inhalt des System-Grep-Befehls in QuickFix ausgegeben wird, verwende ich ihn derzeit. Nicht). Zu den Unterverwendungen gehört das Anzeigen einer Funktionsliste.
Es ist sehr vielseitig, da es nicht nur Dateien, sondern auch alles verarbeiten kann. Es gibt viele Anpassungen wie Sortierreihenfolge, Umschalten der Suchmaschine und des Grep-Befehls sowie die Bedienung des ausgewählten Ziels.
Das Hauptgerät arbeitet nicht nur mit hoher Geschwindigkeit, sondern der Fluss von "Denite Start → Enge → Öffnen" ermöglicht es, Dateien und Zeilen so zu überspringen, als ob sie Ihre eigenen Gedanken widerspiegeln. Es besteht kein Zweifel, dass sich die Bearbeitungsgeschwindigkeit beschleunigt, wenn Sie sie beherrschen.
Andererseits ist die Einrichtung von "Denit" in der Regel kompliziert. Sie müssen es an Ihren Körper anpassen, während Sie die Hilfe lesen. Es wird nicht unmittelbar nach dem Insco explosiv sein.
"Präfix für Denite
nmap [denite] <Nop>
map <C-j> [denite]
"Dateisuche im Projekt
nmap <silent> [denite]<C-P> :<C-u>Denite file_rec -highlight-mode-insert=Search<CR>
"Suchen Sie nach Dateien, die im Puffer erweitert werden
nmap <silent> [denite]<C-B> :<C-u>Denite buffer -highlight-mode-insert=Search<CR>
"Funktionen in der Datei/Suche nach Klassen usw.
nmap <silent> [denite]<C-O> :<C-u>Denite outline -highlight-mode-insert=Search<CR>
"Datei unter Punktedateien_rec Start
nmap <silent> [denite]<C-V> :<C-u>call denite#start([{'name': 'file_rec', 'args': ['~/.dotfiles']}]) -highlight-mode-insert=Search=Search<CR>
"Hoch und runter bewegen<C-N>, <C-P>
call denite#custom#map('normal', '<C-N>', '<denite:move_to_next_line>')
call denite#custom#map('normal', '<C-P>', '<denite:move_to_previous_line>')
call denite#custom#map('insert', '<C-N>', '<denite:move_to_next_line>')
call denite#custom#map('insert', '<C-P>', '<denite:move_to_previous_line>')
"Eingabeverlauf verschieben<C-J>, <C-K>
call denite#custom#map('insert', '<C-J>', '<denite:assign_next_text>')
call denite#custom#map('insert', '<C-K>', '<denite:assign_previous_text>')
"Horizontal aufgespalten`<C-S>`
call denite#custom#map('insert', '<C-S>', '<denite:do_action:split>')
"Vertikal aufgespalten`<C-I>`
call denite#custom#map('insert', '<C-I>', '<denite:do_action:vsplit>')
"Tab geöffnet`<C-O>`
call denite#custom#map('insert', '<C-O>', '<denite:do_action:tabopen>')
" file_Aktivieren Sie die Fuzzy-Übereinstimmung bei der Suche nach rec und schließen Sie bestimmte Dateien vom Suchziel aus
call denite#custom#source(
\ 'file_rec', 'matchers', ['matcher_fuzzy', 'matcher_project_files', 'matcher_ignore_globs'])
"Angeben von Dateien, die nicht durchsucht werden
call denite#custom#filter('matcher_ignore_globs', 'ignore_globs',
\ [ '.git/', '.ropeproject/', '__pycache__/',
\ 'venv/', 'images/', '*.min.*', 'img/', 'fonts/'])
Da Denite die höchste Nutzungsrate aller Plug-Ins aufweist, werden Tastenkombinationen verwendet, die so schnell wie möglich getroffen werden können. Infolgedessen habe ich mich für <C-J> <C - *>
entschieden.
Ich denke, dass es völlig Geschmackssache ist, sich auf der Suche nach Denit auf und ab zu bewegen.
deoplete.nvim
Es ist ein Plug-In für die automatische Vervollständigung. Und wieder ist es die dunkle Kraft des dunklen Bimuou. Ich habe das Auto-Complement-System in meinem Kopf erwähnt, weil dieses Plug-In es von anderen Auto-Completion-Plug-Ins unterscheidet.
Zum Beispiel gibt es ein Plug-In namens "jedi-vim" für Pythons Plug-In für die automatische Vervollständigung, aber dies ist ein Plug-In, das nur die automatische Vervollständigung von Python implementiert. Im Gegensatz dazu bietet "deoplete" nur die Basis für die Vervollständigungsfunktionalität, und die eigene Vervollständigung jeder Sprache fügt die Vervollständigung mithilfe einer externen Plug-in-Quelle (so genannt) hinzu, die der Schnittstelle von "deoplete" folgt. Es wird in Form von sein. Beachten Sie, dass die automatische Vervollständigung von Python mit "deoplete-jedi" hinzugefügt wird, das später beschrieben wird.
Wenn ich es so schreibe, denke ich, dass Dark Mimuou kein Plug-In, sondern ein Ökosystem ist.
Derzeit im Bau
vim-airline
Sie sehen modisch aus, indem Sie mit der Statusleiste spielen. Auf die Frage, ob es einen großen Einfluss auf die Bearbeitung haben würde, ist es nicht so viel. Um die Spannung beim Bearbeiten zu erhöhen, benötigen Sie jedoch etwas Cooles wie "Ich bearbeite mit einem coolen Editor".
Es ändert die Farben in den Modi Normal, Einfügen und Visuell, zeigt den zu bearbeitenden Git-Zweig an, zeigt virtualenv in env an und zeigt andere Cursorpositionsinformationen an. Modisch.
"Definieren Sie den Anzeigenamen des Modus(Die Standardeinstellung wird abgekürzt, da sie lang ist und die Breite verringert.)
let g:airline_mode_map = {
\ '__' : '-',
\ 'n' : 'N',
\ 'i' : 'I',
\ 'R' : 'R',
\ 'c' : 'C',
\ 'v' : 'V',
\ 'V' : 'V',
\ '' : 'V',
\ 's' : 'S',
\ 'S' : 'S',
\ '' : 'S',
\ }
"Mit Stromleitung abkühlen lassen
let g:airline_powerline_fonts = 1
"Cool durch Angabe eines Farbthemas
let g:airline_theme = 'badwolf'
"Die Registerkartenleiste ist cool
let g:airline#extensions#tabline#enabled = 1
"Benutzerdefinierte Auswahlmatrixanzeige(Die Standardeinstellung ist lang und drückt die Breite zusammen. Minimieren Sie sie daher)
let g:airline_section_z = airline#section#create(['windowswap', '%3p%% ', 'linenr', ':%3v'])
"Zeigen Sie die aktuell aktivierte virtuelle Umgebung an, um festzustellen, ob sie die virtuelle Energie erkennt(vim-Erweiterung von virtualenv)
let g:airline#extensions#virtualenv#enabled = 1
"Von der Linie geändert von Git HEAD+-Ausblenden(vim-Gitgutter-Erweiterung)
let g:airline#extensions#hunks#enabled = 0
"Zeigen Sie Fehler und Warnungen mit dem Fusselwerkzeug an(ALE-Erweiterung)
let g:airline#extensions#ale#enabled = 1
let g:airline#extensions#ale#error_symbol = 'E:'
let g:airline#extensions#ale#warning_symbol = 'W:'
Ich habe es im Grunde genommen geschrieben, um cool zu sein. Da der Dateiname jedoch nicht sichtbar ist, werden Dinge, die Druck auf die Breite ausüben, so weit wie möglich ausgeschlossen.
nerdtree
Es ist ein Explorer, der häufig links von der IDE angehängt wird. Ich dachte, ich würde keinen Datei-Explorer brauchen, wenn ich "denite" hätte. Menschen können sich nicht an viele Dinge erinnern, und es gibt einige Male, in denen Sie Dateien in einer hierarchischen Struktur sehen möchten.
Wenn Sie den Dateinamen für die Eingabe von denite
nicht sofort finden, öffnen Sie nerdtree
und Sie finden eine Liste sicherer Dateien.
Wenn Sie das nerdtree-git-plugin und den später beschriebenen "Flüchtling" verwenden. Der Dateibearbeitungsstatus wird auf nerdtree
angezeigt.
Sagen Sie nicht: "Wenn es so ein Atom oder VsCode ist, nehme ich es von Anfang an." Mein Herz zerbricht.
vim-fugitive
Grundsätzlich bin ich keine Person, die sich unwohl fühlt, wenn ich nicht die ganze Zeit in vim bin, aber ich gehe normalerweise mit Strg + z zwischen Terminal und vim hin und her. Ist das also notwendig? Ich dachte.
Es gibt jedoch einen überwältigenden Vorteil gegenüber dem Betrieb im Terminal, nämlich den Befehlen : Gdiff
und: Gblame
von fugitive
.
: Gdiff
wird verwendet, wenn Sie denken, dass es vor dem Bearbeiten besser war.
In einem solchen Fall mache ich den Vorgang, das Git-Diff anzuzeigen und den Originalcode von dort abzurufen.
Zurück zum Terminal → Diff anzeigen → Kopieren → Zurück zum vim und Einfügen
Aber
Führen Sie ": Gdiff "→ Yank → Paste
aus
Wird sein. Deutliche Geschwindigkeitsverbesserung.
Was : Gblame
betrifft, können Sie beim Betrachten des Codes sehen, was so vor Ort mit einem einzigen: Glame
passiert ist, und Sie können auch auf die Protokollinformationen verweisen.
Gleiches gilt für : Gdiff
, bei dem das Syntax-Highlight von vim angewendet wird. schnell.
nmap [figitive] <Nop>
map <Leader>g [figitive]
nmap <silent> [figitive]s :<C-u>Gstatus<CR>
nmap <silent> [figitive]d :<C-u>Gdiff<CR>
nmap <silent> [figitive]b :<C-u>Gblame<CR>
nmap <silent> [figitive]l :<C-u>Glog<CR>
Ich verwende keine anderen Befehle als die oben genannten, da sie von tig bedient werden.
vim-gitgutter
Das Hinzufügen, Löschen und Ändern von Code aus dem HEAD von git wird in der Lücke ganz links (gitter) angezeigt. Früher dachte ich, es sei ein Hindernis, aber als ich es einmal benutzt hatte, konnte ich es nicht mehr loslassen.
deoplete-jedi
Fügen Sie dem oben erwähnten "Deoplete" die automatische Vervollständigung von Python hinzu. Hinter den Kulissen scheint es Pythons statische Analysebibliothek "jedi" (nicht mit Star Wars verwandt?) Zu verwenden, um die Analyseergebnisse an "deoplete" zu übergeben.
Derzeit im Bau
vim-quickrun
Sie können Python-Programme auf vim ausführen.
Ich verwende es, um in Buffer auszugeben, wenn das Ausführungsergebnis keinen Fehler enthält, es QuickFix anzuzeigen, wenn ein Fehler vorliegt, und den Code so zu überspringen, wie er ist.
Beachten Sie, dass die asynchrone Ausführung nicht von sich aus unterstützt werden kann. Fügen Sie daher vimproc.vim hinzu und legen Sie sie mit vim-quickrun
fest.
Es gibt ein ähnliches Plugin, das eine asynchrone Ausführung namens asyncrun mit der Funktion von vim selbst anstelle von vimproc ausführt, aber es scheint, dass es den Pfad gut liest. Ich habe es gerade installiert und nicht benutzt, weil es mir nicht gegeben hat.
"Asynchrone Ausführung mit vimproc
"Anzeige mit Puffer bei Erfolg und QuickFix bei Fehler
"Anpassen der Größe der Ergebnisanzeige usw.
let g:quickrun_config = {
\ '_' : {
\ 'runner' : 'vimproc',
\ 'runner/vimproc/updatetime' : 40,
\ 'outputter' : 'error',
\ 'outputter/error/success' : 'buffer',
\ 'outputter/error/error' : 'quickfix',
\ 'outputter/buffer/split' : ':botright 8sp',
\ }
\}
"Schließen Sie den vorherigen Anzeigeinhalt zum Zeitpunkt der Ausführung&Speichern und dann ausführen
let g:quickrun_no_default_key_mappings = 1
nmap <Leader>r :cclose<CR>:write<CR>:QuickRun -mode n<CR>
Es ist praktisch, das vorhandene Ausführungsergebnis close und file save zur Schlüsselbindung hinzuzufügen. Ganz zu schweigen von vimproc.
~~neomake~~
Python hat eine Syntaxregel namens "pep8" und einen statischen Analysebefehl namens "linter", um sie automatisch zu erkennen. neomake
führt den Linter asynchron aus und zeigt das Ausführungsergebnis als Marker auf vim an.
In meinem Fall verwende ich "flake8", das neben "pep8" auch "pylint" erkennt.
Ursprünglich habe ich ein ähnliches Plugin syntastic verwendet, aber da es keine asynchrone Ausführung unterstützt, habe ich zu neomake
gewechselt. Ich tat.
ALE
Ich benutze neomake schon eine Weile, aber wenn ich an einem großen Projekt arbeite, sehe ich oft eine beträchtliche Verzögerung (einige Sekunden) beim Reflektieren von Linter. Als ich ALE ausprobierte, auf das ich schon lange geachtet hatte, wechselte ich wegen seiner hohen Geschwindigkeit, seines schlampigen Aussehens, seiner zahlreichen Funktionen und seines Juckreizes zu ihm, und README war höflich.
"Markieren Sie diese Option, um sie in der Fehlerzeile anzuzeigen
let g:ale_sign_error = '⨉'
let g:ale_sign_warning = '⚠'
"Das Nachrichtenformat wird angezeigt, wenn der Cursor auf die Fehlerzeile gesetzt wird
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
"Fehleranzeigespalte immer anzeigen
let g:ale_sign_column_always = 1
"Führen Sie beim Öffnen der Datei Flusen aus
let g:ale_lint_on_enter = 1
"Führen Sie beim Speichern der Datei Flusen aus
let g:ale_lint_on_save = 1
"Keine Flusenbearbeitung
let g:ale_lint_on_text_changed = 'never'
"fussel Zeigt keine Ergebnisse in der Standortliste und in QuickFix an
"Es ist ziemlich ärgerlich, wenn es draußen ist, und es ist ein Problem, QuickFix neu schreiben zu können
let g:ale_set_loclist = 0
let g:ale_set_quickfix = 0
let g:ale_open_list = 0
let g:ale_keep_list_window_open = 0
"Linter aktivieren
let g:ale_linters = {
\ 'python': ['flake8'],
\}
"ALE-Präfix
nmap [ale] <Nop>
map <C-k> [ale]
"Zur Fehlerzeile springen
nmap <silent> [ale]<C-P> <Plug>(ale_previous)
nmap <silent> [ale]<C-N> <Plug>(ale_next)
Um ehrlich zu sein, wenn Sie sich READ ME ansehen, ist es meistens geschrieben, aber ich werde es vorerst veröffentlichen.
vim-virtualenv
Wenn Sie in Python entwickeln, gibt es viele Szenen, in denen Sie virtualenv verwenden. In diesem Fall müssen Sie auf die Bibliothek usw. verweisen, die nur von virtualenv auf vim installiert wurde. Dieses Plugin ist für eine solche Situation. Wenn Sie virtualenv aktivieren und vim starten, startet vim mit der geladenen virtualenv-Bibliothek.
vim-python-pep8-indent
Der Autoindent von vim entspricht nicht den pep8-Konventionen. Wenn Sie dieses Plug-In installieren, werden zum Zeitpunkt der Zeilenumbrüche automatisch pep8-kompatible Zeilenumbrüche ausgeführt. Praktisch.
#Gewöhnliche Autoindent
format_str = format('Irgendwie:{}Kanya:',
a, b)
#pep8-kompatibler Autoindent
format_str = format('Irgendwie:{}Kanya:',
a, b)
jedi-vim
Es ist ein Plug-In, das verschiedene Dinge mit jedi macht. Zu Beginn des Aufbaus der Python-Umgebung habe ich sie nicht verwendet, da ich deoplete-jedi für die automatische Vervollständigung verwendet habe. Wenn Sie jedoch einen Tag-Sprung mit demselben Zauber ausführen, während Sie einen Tag-Sprung mit ctags ausführen, war es schwierig, das Ziel aus dem Tag-Sprung auszuwählen, und ich habe es als Code-Referenz eingeführt. Daher werden die meisten Funktionen zerstört und es bleibt nur die Code-Referenz übrig. Immerhin ist es bequem, mit einem Schuss zur Referenzquelle fliegen zu können. Ich habe jedoch das Gefühl, dass vim dadurch schwerer wird, also untersuche ich, ob es einen besseren Weg gibt.
"Ich werde die Einstellungen für die Schlüsselbindung und die automatische Vervollständigung ohne Erlaubnis vornehmen, also zerquetsche sie
let g:jedi#auto_initialization = 0
let g:jedi#auto_vim_configuration = 0
let g:jedi#smart_auto_mappings = 0
let g:jedi#completions_enabled = 0
"Registrieren Sie Schlüsselbindungen für Code-Referenzen
let g:jedi#goto_command = "<Leader>d"
gen_tags.vim
Es gibt verschiedene Plug-Ins für die automatische Generierung von ctags, aber eines davon kommt nicht in Frage, da es die asynchrone Ausführung durch Job und gtags unterstützt. Wenn Sie keine ctags kennen, suchen Sie bitte nach verschiedenen einführenden Artikeln.
let g:gen_tags#ctags_auto_gen = 1
let g:gen_tags#gtags_auto_gen = 1
Aktivieren Sie einfach die automatische Speicherung. Einfach.
vim-test + vim-dispatch
anko-m/vim-test tpope/vim-dispatch
Ein Test-Plug-In wird separat von QuickRun installiert. Weitere Informationen finden Sie im folgenden Artikel. Bereiten Sie die Vim-Testumgebung sehr ernsthaft vor (für Python)
gtags.vim + vim-qfreplace
vim-scripts/gtags.vim thinca/vim-qfreplace
In ctags wird GNU global separat übernommen, da das Referenzziel nicht abgerufen werden kann, selbst wenn die Deklarationsquelle abgerufen werden kann. Holen Sie sich eine Referenz in gtags.vim und ersetzen Sie sie durch qfreplace. Kurz gesagt, es ist ein Refactoring-Tool.
Informationen zur Suche nach GNU global finden Sie im folgenden Artikel. Vim-Code-Sprung mit gtags versuchen
.vimrc
~~ Ich möchte wirklich den Auszug vimrc für jedes Plugin auflisten, aber ich bin erschöpft, also werde ich es aktualisieren, wenn ich wieder Zeit habe. ~~ Siehe unten für vimrc. lighttiger2505/.dotfiles
Es ist einen Monat her, seit ich bei ~~ vim gearbeitet habe, und jetzt habe ich ein viel praktischeres Umfeld als mein Hobby-Level. Deshalb möchte ich diese Gelegenheit nutzen, um es vorzustellen. ~~ Ich arbeite seit einem halben Jahr an vim, aber es ist noch ein langer Weg. Ich werde mich widmen. Wenn Sie diesen Artikel lesen, bin ich ein besserer Vim. Ich bin mir sicher, dass es Leute gibt, die das sagen, also würde ich mich freuen, wenn Sie es mir sagen könnten.
Recommended Posts