Konfigurieren Sie VIM als C++-Entwicklungseditor in Ubuntu

Konfigurieren Sie VIM als C++-Entwicklungseditor in Ubuntu

1. Kopieren Sie die Konfigurationsdatei in die Benutzerumgebung, erstellen Sie einen neuen .vim-Ordner und erstellen Sie einen Bundle-Unterordner

  • sudo cp /etc/vim/vimrc /home/wangy/.vimrc
  • sudo mkdir /home/wangy/.vim
  • sudo mkdir /home/wangy/.vim/bundle
  • sudo mkdir /home/wangy/.vim/bundle/vundle

Die Bundle-Konfigurationsdatei sieht wie folgt aus:

"Hinzugefügte Konfiguration wird hier platziert, setze nocompatible" wird verbessert
Dateityp aus " erforderlich!
setze rtp+=~/.vim/bundle/vundle/
rufen Sie vundle#rc() auf
" lass Vundle Vundle verwalten
" erforderlich!
Bündel 'gmarik/vundle'
" Meine Bundles hier:
"
" Original-Repos auf GitHub
Bündel 'tpope/vim-fugitive'
Paket 'Lokaltog/vim-easymotion'
Bündel 'rstacruz/sparkup', {'rtp': 'vim/'}
Bündel 'tpope/vim-rails.git'
" Vim-Skript-Repositorys
Bündel 'L9'
Paket 'FuzzyFinder'
" Nicht-GitHub-Repos
" Bundle 'git://git.wincent.com/command-t.git'
" Bündel 'https://github.com/scrooloose/nerdtree.git'
" ...
Einzug des Dateityp-Plugins bei " erforderlich!
"
"Kurze Hilfe -- Nachfolgend sind die Befehle für die Verwendung von vundle aufgeführt" :BundleList - Liste konfigurierter Bundles
" :BundleInstall(!) - Bundles installieren (aktualisieren)
" :BundleSearch(!) foo - Suche (oder aktualisiere vorher den Cache) nach foo
" :BundleClean(!) - Entfernung ungenutzter Bundles bestätigen (oder automatisch genehmigen)
"
" Weitere Einzelheiten finden Sie unter :h vundle oder im Wiki für häufig gestellte Fragen.
" HINWEIS: Kommentare nach dem Bundle-Befehl sind nicht zulässig.

2. Installieren Sie NERDTree

Bundle 'https://github.com/scrooloose/nerdtree.git'

Die Verwendung ist wie folgt:

nmap <F5>:NERDTree<CR> Tastenkombination

:NERDTree an

Strg+W kann zwischen linkem und rechtem Fenster wechseln

p zum übergeordneten Verzeichnis, P zum Stammverzeichnis

o öffnet eine Datei oder ein Verzeichnis, q beendet das Plugin

3. Tagbar installieren

sudo apt-get install ctags install ctags

Bundle 'https://github.com/majutsushi/tagbar.git'

Die Konfigurationsdateien lauten wie folgt:

" Tagbar-Einstellungen----------------
" Tastenkombination nmap <F4> :TagbarToggle<CR>
let g:tagbar_width = 20 " Breite der Tagbar, Standard 20
" let g:tagbar_left = 1 " auf der linken Seite
let g:tagbar_right = 1 " auf der rechten Seite
let NERDTreeIgnore=['\.pyc', '\.pyo', '\.swp', '\~'] " ignoriere *.py[co], *.sw p und *~

Verwenden Sie die Tastenkombination F4 und beenden Sie mit q

4. Andere Plugins

Paket 'https://github.com/scrooloose/nerdtree.git'
Paket 'https://github.com/majutsushi/tagbar.git'
Paket 'https://github.com/terryma/vim-multiple-cursors.git'
Paket 'https://github.com/upsuper/vim-colorschemes.git'
Paket 'https://github.com/vim-scripts/cppcomplete.git'

Meine Vim-Konfiguration hat folgende Vorteile:

1. Drücken Sie F5, um C-, C++- und Java-Code direkt zu kompilieren und auszuführen sowie Shell-Skripte auszuführen. Drücken Sie „F8“, um C- und C++-Code zu debuggen.

2. Dateikopfzeilen automatisch einfügen. Beim Erstellen einer neuen C- oder C++-Quelldatei wird die Kopfzeile automatisch eingefügt: einschließlich Dateiname, Autor, Kontaktinformationen, Erstellungszeit usw. Leser können sie nach Bedarf ändern

3. Ordnen Sie "Strg + A" zu, um alle auszuwählen und die Tastenkombinationen zu kopieren, um das Kopieren von Code zu erleichtern

4. Drücken Sie "F2", um Leerzeilen im Code direkt zu entfernen

5. "F3" kann die aktuellen Verzeichnisdateien auflisten und das Baumdateiverzeichnis öffnen

6.Unterstützt Mausauswahl und Pfeiltastenbewegung

7. Codehervorhebung, automatische Einrückung, Zeilennummer anzeigen, Statuszeile anzeigen

8. Drücken Sie "Strg + P" zur automatischen Vervollständigung

9. [], {}, (), "", ", ' ' usw. werden alle automatisch vervollständigt

10. Weitere Funktionen Leser können die folgenden Dokumente studieren

Karte <F9>: SaveInputData() aufrufen <CR>
Funktion!SaveInputData()
 ausführen "tabnew"
 exec 'normal "+gP'
 exec "w! /tmp/Eingabedaten"
Endfunktion
"Farbschema Torte
"Farbschema Murphy
"Farbschema Wüste 
"Farbschema Wüste 
"Farbschema Elfenlord
Farbschema Ron
"Setzen Sie fencs = utf-8, ucs-bom, shift-jis, gb18030, gbk, gb2312, cp936
"Satz Termencoding = UTF-8
"Kodierung festlegen=utf-8
"Dateikodierungen festlegen=ucs-bom,utf-8,cp936
"Dateikodierung festlegen = utf-8
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Verwandte anzeigen """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set shortmess=atI " Beim Systemstart die Eingabeaufforderung zur Hilfe für Kinder in Uganda nicht anzeigen "winpos 5 5 " Fensterposition festlegen "set lines=40 columns=155 " Fenstergröße festlegen set go=" Keine grafischen Schaltflächen verwenden "color asmanian2 " Hintergrunddesign festlegen "set guifont=Courier_New:h10:cANSI " Schriftart festlegen "syntax on " Syntaxhervorhebung autocmd InsertLeave * se nocul " Aktuelle Zeile hell hervorheben autocmd InsertEnter * se cul " Aktuelle Zeile hell hervorheben "set ruler " Lineal anzeigen set showcmd " Eingegebenen Befehl zum leichteren Lesen anzeigen "set cmdheight=1 " Höhe der Befehlszeile (unter der Statuszeile) auf 1 setzen 
„set whichwrap+=<,>,h,l“ ermöglicht es, dass die Rücktaste und die Cursortasten die Zeilengrenzen überschreiten (nicht empfohlen) 
"set scrolloff=3" Den Cursor drei Zeilen entfernt halten, wenn man sich an den Anfang und das Ende des Puffers bewegt. setze novisualbell "Nicht blinken (verstehe nicht) 
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "In der Statuszeile angezeigter Inhalt set laststatus=1 " Anzeige der Statuszeile starten (1), Statuszeile immer anzeigen (2) 
set foldenable " Faltung aktivieren set foldmethod=manual " manuelle Faltung" set background=dark " schwarzen Hintergrund verwenden set nocompatible " störenden VI-Konsistenzmodus entfernen, einige Bugs und Einschränkungen früherer Versionen vermeiden" chinesische Hilfe anzeigen, wenn Version >= 603
 setze Hilfesprache=cn
 Kodierung festlegen=utf-8
Ende
"Farbschema festlegen" Farbschema Murphy
"Schriftart"wenn (hat("gui_running")) 
" setze guifont=Bitstream\ Vera\ Sans\ Mono\ 10 
"EndeWenn 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""Neuer Dateititel""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Neue .c, .h, .sh, .java Dateien erstellen und Dateiheader automatisch einfügen autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
""Funktion SetTitle definieren, Dateiheader automatisch einfügen func SetTitle() 
 "Wenn der Dateityp eine .sh-Datei ist, wenn &filetype == 'sh' 
  rufe setline auf (1, "\##########################################################################") 
  Rufen Sie Anhängen auf (Zeile("."), "\# Dateiname: ".expand("%")) 
  Rufen Sie Anhängen auf (Zeile(".)+1, "\# Autor: ma6174") 
  Rufen Sie Anhängen auf (Zeile(".)+2, "\# Mail: [email protected]") 
  Rufen Sie Anhängen auf (Zeile(".)+3, "\# Erstellungszeit: ".strftime("%c")) 
  Rufen Sie Anhängen auf (Zeile(".)+4, "\###########################################################################") 
  Rufen Sie Anhängen auf (Zeile(".)+5, "\#!/bin/bash") 
  Rufen Sie Anhängen auf (Zeile(".)+6, "") 
 anders 
  rufe setline auf(1, "/*****************************************************************************") 
  call append(line("."), " > Dateiname: ".expand("%")) 
  rufe Anhängen auf (Zeile(".)+1, " > Autor: ma6174") 
  call append(line(".")+2, " > Mail: [email protected] ") 
  call append(line(".")+3, " > Erstellungszeit: ".strftime("%c")) 
  Rufen Sie Anhängen auf (Zeile(".)+4, " *********************************************************************************/") 
  Rufen Sie Anhängen auf (Zeile(".)+5, "")
 Ende
 wenn &Dateityp == 'cpp'
  rufe Anhängen auf (Zeile(".)+6, "#include<iostream>")
  Rufen Sie Anhängen auf (Zeile(".)+7, "unter Verwendung des Namespace std;")
  Rufen Sie Anhängen auf (Zeile(".)+8, "")
 Ende
 wenn &Dateityp == 'c'
  Rufen Sie Anhängen auf (Zeile(".)+6, "#include<stdio.h>")
  Rufen Sie Anhängen auf (Zeile(".)+7, "")
 Ende
 " wenn &Dateityp == 'java'
 " rufe Anhängen auf (Zeile(".")+6,"öffentliche Klasse ".expand("%"))
 " rufe Anhängen auf (Zeile(".)+7,"")
 " Endewenn
 "Nach dem Erstellen einer neuen Datei automatisch zum Ende der Datei navigieren autocmd BufNewFile * normal G
Endfunktion 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Tastaturbefehle""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap <Leader>w :w!<cr>
nmap <leader>f :finden<cr>
"Alles zuordnen, auswählen + kopieren, Strg+A
Karte <CA> ggVGY
Karte! <CA> <Esc>ggVGY
Karte <F12> gg=G
"Strg+C im ausgewählten Zustand, um vmap zu kopieren <Cc> "+y
"Gehe zum leeren Linennoremap <F2> :g/^\s*$/d<CR> 
"Dateien vergleichen nnoremap <C-F2> :vert diffsplit 
"Neue Tag-Map erstellen <M-F2> :tabnew<CR> 
"Listet die aktuelle Verzeichnisdateizuordnung auf <F3> :tabnew .<CR> 
"Öffnen Sie die Baumstruktur der Dateiverzeichnisse <C-F3> \be 
"C, C++ Drücken Sie F5, um die Karte zu kompilieren und auszuführen <F5> :call CompileRunGcc()<CR>
Funktion!CompileRunGcc()
 ausführen "w"
 wenn &Dateityp == 'c'
  exec "!g++ % -o %<"
  exec "! ./%<"
 sonst wenn &Dateityp == 'cpp'
  exec "!g++ % -o %<"
  exec "! ./%<"
 sonst wenn &Dateityp == 'java' 
  exec "!javac %" 
  exec "!java %<"
 sonst wenn &Dateityp == 'sh'
  :!./%
 sonst wenn &Dateityp == 'py'
  exec "!python %"
  exec "!python %<"
 Ende
Endfunktion
"C, C++ Debugging-Map <F8> :call Rungdb()<CR>
Funktion! Rungdb()
 ausführen "w"
 exec "!g++ % -g -o %<"
 exec "!gdb ./%<"
Endfunktion
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Praktische Einstellungen""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Auf automatisches Laden einstellen, wenn die Datei geändert wird. Autoread einstellen
" Quickfix-Modus Autocmd Dateityp c,cpp map <Puffer> <Leerzeichen><Leerzeichen> :w<cr>:make<cr>
"Codevervollständigung set completeopt=preview,menu 
"Plugin-Dateityp-Plugin zulassen auf
"Gemeinsame Zwischenablage festlegen clipboard+=unbenannt 
"Niemals sichern setze nobackup
"make run:set makeprg=g++\ -Wall\ \ %
"Automatisch speichern Set Autowrite
Lineal setzen " Lineal der Statusleiste öffnen Cursorlinie setzen " Aktuelle Zeile hervorheben Magic setzen " Magic setzen guioptions-=T setzen " Symbolleiste ausblenden guioptions-=m setzen " Menüleiste ausblenden " statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
"Legen Sie die in der Statuszeile angezeigten Informationen fest. Setzen Sie foldcolumn=0
setze foldmethod=indent 
setze Faltebene=3 
set foldenable "Start folding" Benutze nicht vi's Tastaturmodus, sondern vim's eigenen set nocompatible
"Syntaxhervorhebung setze syntax=on
"Entfernen Sie den Eingabefehler-Prompt-Sound-Set noeb
„Bei der Verarbeitung nicht gespeicherter oder schreibgeschützter Dateien wird ein Bestätigungs-Popup angezeigt.
" Automatische Einrückung setze autoindent
setze den Punkt
" Tabulatortastenbreite festlegen tabstop=4
" Einheitliche Einrückung ist 4
setze Softtabstop=4
setze Shiftwidth=4
" Keine Leerzeichen statt Tabulatoren verwenden set noexpandtab
" Verwenden Sie Tabulatoren am Zeilen- und Absatzanfang setze smarttab
"Zeilennummer einstellen
"Historischer Datensatz Nummer Set History=1000
"Deaktivieren Sie die Generierung von temporären Dateien set nobackup
Noswapfile festlegen
"Suche Groß-/Kleinschreibung ignorieren setze Groß-/Kleinschreibung ignorieren
"Suche Zeichen für Zeichen Hervorhebungssatz hlsearch
Incsearch festlegen
"Ersetzen Sie set gdefault inline
"Kodierungseinstellung gesetzt enc=utf-8
setze fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"Spracheinstellungen setzen langmenu=zh_CN.UTF-8
setze Hilfesprache=cn
" Meine Statuszeile zeigt an, was sie sagt (einschließlich Dateityp und Dekodierung)
"Statuszeile festlegen = %F%m%r%h%w\ [FORMAT = %{&ff}]\ [TYP = %Y]\ [POS = %l, %v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"Statuszeile festlegen=[%F]%y%r%m%*%=[Zeile:%l/%L,Spalte:%c][%p%%]
"Statuszeile immer anzeigen setze laststatus=2
" Die Höhe der Kommandozeile (unterhalb der Statuszeile), Standard ist 1, hier ist 2
setze cmdheight=2
" Dateityp erkennen Dateityp auf
" Dateityp-Plugin laden auf
" Laden Sie die relevante Einrückungsdatei für einen bestimmten Dateityp filetype indent auf
"Globale Variablen speichern, viminfo+= setzen!
" Wörter mit den folgenden Symbolen sollten nicht durch Zeilenumbrüche getrennt werden: set iskeyword+=_,$,@,%,#,-
„Die Anzahl der zwischen den Zeichen eingefügten Pixelzeilen wird durch den Zeilenabstand = 0 festgelegt.
" Befehlszeilen-Autovervollständigung im erweiterten Modus set wildmenu
" Stellen Sie die Rücktaste so ein, dass sie Einrückungen, EOL, Start usw. steuert. Normalerweise ist backspace=2 eingestellt.
" Erlaube Backspace und Cursortasten, Zeilengrenzen zu überschreiten setze whichwrap+=<,>,h,l
" Sie können die Maus überall im Puffer verwenden (ähnlich wie beim Doppelklicken mit der Maus im Arbeitsbereich in Office).
setze Maus=a
Auswahl festlegen=exklusiv
setze Auswahlmodus auf Maus, Taste
" Teilen Sie uns mit dem Befehl commands mit, welche Zeile der Datei geändert wurde set report=0
" Leerzeichen zwischen geteilten Fenstern anzeigen, um das Lesen zu erleichtern set fillchars=vert:\ ,stl:\ ,stlnc:\
"Markieren Sie passende Klammern, setzen Sie Showmatch
" Zeit zum Hervorheben der passenden Klammer (in Zehntelsekunden)
setze matchtime=1
"Wenn der Cursor an den Anfang und das Ende des Puffers bewegt wird, halten Sie einen Abstand von 3 Zeilen ein. Setzen Sie scrolloff = 3
" Automatische Einrückung für C-Programme bereitstellen set smartindent
"Hervorheben gewöhnlicher txt-Dateien (erfordert txt.vim-Skript)
au BufRead,BufNewFile * setfiletype txt
"Autovervollständigung: inoremap ( ()<ESC>i
:inoremap ) <cr>=ClosePair(')')<CR>
":inoremap { {<CR>}<ESC>O
":inoremap } <cr>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <cr>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
Funktion! ClosePair(char)
 wenn getline('.')[col('.') - 1] == a:char
  return "\<Rechts>"
 anders
  returniere a:char
 Ende
Endfunktion
Dateityp-Plugin-Einzug ein 
"Aktivieren Sie die Dateityperkennung und fügen Sie diesen Satz hinzu, um die intelligente Vervollständigung zu verwenden: set completeopt=longest,menu
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"NERDtee set let NERDChristmasTree=1
lass NERDTreeAutoCenter=1
let NERDTreeBookmarksFile=$VIM.'\Data\NerdBookmarks.txt'
lass NERDTreeMouseMode=2
let NERDTreeShowBookmarks=1
let NERDTreeShowFiles=1
let NERDTreeShowHidden=1
lass NERDTreeShowLineNumbers=1
let NERDTreeWinPos='links'
lass NERDTreeWinSize=31
nnoremap f :NERDTreeToggle
Karte <F7>: NERDTree<CR>

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Probleme und Lösungen bei der Installation von Mininet auf Ubuntu 16.04.4LTS
  • Kompilieren Sie CPP-Dateien mit G++ in Ubuntu
  • Anfangseinstellungen nach der Installation von Ubuntu 16 in der Entwicklungsumgebung
  • Ubuntu-Terminal, mehrere Fenster, geteilter Bildschirm, Terminator
  • So richten Sie den PostgreSQL-Start unter Ubuntu 16.04 ein
  • Installieren und verwenden Sie Git und GitHub unter Ubuntu Linux
  • Ubuntu 16.04 erstellt eine Entwicklungsumgebung für vim und python3
  • Foreman Ubuntu16 Schnellinstallation
  • Installieren Sie den Nvidia-Treiber in Ubuntu 18, um das Problem des schwarzen Bildschirms zu beheben und die Auflösung anzupassen
  • Einfache Implementierung der Unterstützung von PHP5- und PHP7-Doppelversionen in Ubuntu
  • Installieren Sie Mininet aus dem Quellcode auf Ubuntu 16.04

<<:  Implementierung des Markdown-Renderings in einer Vue-Einzelseitenanwendung

>>:  Lösen Sie das Problem, dass Sie sich bei der Installation von MySQL auf einem Mac mit Homebrew nicht anmelden können

Artikel empfehlen

Flammenanimation mit CSS3 umgesetzt

Ergebnisse erzielen Implementierungscode html <...

Tipps zum Listenaufbau für Website-Wartungsseiten

Und oft ist es für Wartungsarbeiten erforderlich, ...

Kopieren und Einfügen ist der Feind der Verpackung

Bevor wir über OO, Entwurfsmuster und die vielen o...

Verwenden Sie PSSH zur Stapelverwaltung von Linux-Servern

pssh ist eine in Python implementierte Open-Sourc...

MySQL-Optimierungsstrategie (empfohlen)

Zusammenfassend: 1. Berücksichtigen Sie die Leist...

MySQL-Fehler 1290 (HY000) Lösung

Ich habe lange mit einem Problem gekämpft und das...

Probleme bei der Installation von MySQL 8.0 und beim Zurücksetzen des Kennworts

Mysql 8.0 Installationsprobleme und Passwort-Rese...

Der Prozess des Erstellens und Konfigurierens der Git-Umgebung in Docker

Konfigurieren Sie die Git-Umgebung in Docker Bei ...

HTML-Bildlaufleisten-Textbereichsattributeinstellung

1. Überlaufinhalt-Überlaufeinstellungen (festlegen...

Html+css, um reinen Text und Schaltflächen mit Symbolen zu erreichen

Dieser Artikel fasst die Implementierungsmethoden...