[gelöst] An neue vim bzw. vim.tiny Dokumente automatisch .txt anhängen

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
tobo
Beiträge: 1993
Registriert: 10.12.2008 10:51:41

Re: An neue vim bzw. vim.tiny Dokumente automatisch .txt anhängen

Beitrag von tobo » 19.08.2017 02:33:08

Quirrlila hat geschrieben: ↑ zum Beitrag ↑
18.08.2017 21:45:28
tobo hat geschrieben: ↑ zum Beitrag ↑
18.08.2017 03:19:48
Du kannst im find den filetype angeben (zumindest der Datei-Benennung nach) [...]
Der Datei-Benennung nach?
Also nur wenn die Datei die Endung .DATEITYP im Namen trägt?
Ja, mehr kann find nicht.
Falls ja, das ist ja nicht bei allen Dateien der Fall, z.B. wenn ich eine Dokument mit vim abspeichere, dann steht da halt nur der Name ohne .DATEITYP am Ende, es sei denn ich speichere das so ab (was ich ja möglichst vermieden möchte).
Gibt's da irgendeinen logischen Grund für? In dem Moment, wo du genau weißt, was es ist, da willst du es nicht hinschreiben, sondern später einen Algorithmus drüber laufen lassen, der das rausfinden soll?!
Aber auch wenn mal vergessen wird bei der Umbennung einer Datei .DATEIYP wieder anzuhängen wäre ein Ergebnis einer fileytp-Suche die auch Dateien ohne .DATEITYP im Namen findet praktisch.
Das ist ein anderer und auch legitimer Fall. Da muss man aber erstmal definieren, was ein Dateiname ohne Dateiendung ist. Da ich Dateiendungen selbst bestimmen kann und nicht nur auf gültige, bereits bestehende Dateiendung beschränkt bin, ist das also nur ein Dateiname ohne "." mittendrin. Wenn das der Anspruch ist - diese Dateien kann find finden:

Code: Alles auswählen

$ find . -type f -regex '.*/\.*[^.]+$'
Linux kann doch den Dateityp von Dateien erkennen, ohne dass dieser im Namen angegeben ist; also wenn ich Debianfile anwende Bswp. dann weiß file ja um was es sich für einen Dateityp handelt.
Die Aussage von file ist ja auch zu 100% verlässlich, im Gegensatz zu einem Dateinamen mit .DATEITYP am Ende, welcher ja auch falsch sein kann...
Ob das 100%ig verlässlich ist, weiß ich nicht; jedenfalls sollte es hinreichend sicher für dich sein.

Du solltest erstmal ganz klar definieren, was du überhaupt hast und was du genau willst. Zuerst ging es ja nur um ein Verzeichnis, das extra angelegt wird und ausschließlich Dateien ohne Dateiendung beherbergen sollte. Dann kamen Unterverzeichnisse, UTF-8 und Groß-/Kleinschreibung hinzu, bevor es danach rekursiv über /home laufen soll, was nebenbei eine fürchterlich schlechte Idee ist. Solche Dateien wie z.B. ~/.profile, ~/.xsession oder ~/.bashrc sind Textdateien ohne Dateiendung. Ein Umbenennen macht die schlicht unbrauchbar. Was den Inhalt der Dateien, ob die jetzt UTF-8 oder ASCII codiert sind, das verstehe ich - bezogen auf den Umbenennungsprozess - auch nicht so ganz!?

Quirrlila
Beiträge: 74
Registriert: 12.08.2017 21:59:59
Lizenz eigener Beiträge: GNU General Public License

Re: An neue vim bzw. vim.tiny Dokumente automatisch .txt anhängen

Beitrag von Quirrlila » 19.08.2017 17:06:43

Quirrlila hat geschrieben: ↑ zum Beitrag ↑
18.08.2017 21:45:28
Falls ja, das ist ja nicht bei allen Dateien der Fall, z.B. wenn ich eine Dokument mit vim abspeichere, dann steht da halt nur der Name ohne .DATEITYP am Ende, es sei denn ich speichere das so ab (was ich ja möglichst vermieden möchte).
tobo hat geschrieben: ↑ zum Beitrag ↑
19.08.2017 02:33:08
Gibt's da irgendeinen logischen Grund für? In dem Moment, wo du genau weißt, was es ist, da willst du es nicht hinschreiben, sondern später einen Algorithmus drüber laufen lassen, der das rausfinden soll?!
Das war ja die ursprüngliche Intention dieses Threads. ;)
Quirrlila hat geschrieben: ↑ zum Beitrag ↑
14.08.2017 20:05:09
Gibt es da eine Möglichkeit?
Also so, das wen ich ein neues Dokument mit

Code: Alles auswählen

:w DOKUMENTENNAME
speichere, automatisch .txt an DOKUMENTENNAME gehängt wird?
Ich habe einfach keine Lust nach jedem Dateinamen .txt zu tippen

Denn auch was guennid hier schrieb:
guennid hat geschrieben: ↑ zum Beitrag ↑
15.08.2017 10:04:05
Frage ob der Sinnhaftigkeit des Unternehmens:
Gibt es bei der "Text"produktion Szenarien, in denen es einen spürbaren Gewinn bedeutet, vier Tastenanschläge weniger zu tippen?
verhält sich ja nicht so.
Es sind nicht einmal vier Tastenanschläge, sondern immer nach jeder Eingabe eines neuen Dokumentennamens, was summiert dann einen wesentlich höheren Zeitaufwand bedeutet, als einfach schnell den Namen zu tippen (oder auch nur ein einziges Zeichen wie ich das manchmal für schnelle Notizen mache) und später dann alle zig Dokumente mit einem kurzen Befehl mit .txt am Ende zu versehen.
Aber ich will hier auch garnicht diskutieren, wer ein solches Vorgehen jetzt für praktisch hält und wer nicht. ;)
tobo hat geschrieben: ↑ zum Beitrag ↑
19.08.2017 02:33:08
[...] ein Dateiname ohne "." mittendrin. [...] kann find finden:

Code: Alles auswählen

$ find . -type f -regex '.*/\.*[^.]+$'
Ja das ist praktisch, aber nun findet find ja auch die, welche mich nicht interessieren, wie Bspw. irgendwelche config-Dateien.
tobo hat geschrieben: ↑ zum Beitrag ↑
19.08.2017 02:33:08
[...] Dateien wie z.B. ~/.profile, ~/.xsession oder ~/.bashrc sind Textdateien ohne Dateiendung. Ein Umbenennen macht die schlicht unbrauchbar.
Stimmt das ist wirklich Mist, da würde dann in einem script evtl. eine Art Blacklist helfen, wo diese config-Dateien eingetragen werden.

Allen Dateinamen in einem Verzeichnis unter Aussparung evtl. vorhandener Verzeichnisse .txt anzuhängen funktioniert ja mit deinem Befehl ganz wunderbar.
Ich dachte halt nun daran, das egal wo ein vim Dokument gespeichert werden würde, bzw. bereits gespeichert ist dieses mittels file+find (oder halt irgendwie anders) aufzuspüren und dann .txt an dessen Dateinamen zu hängen, also ohne jedes Verzeichniss selbst manuell oder mit find absuchen zu müssen und dann deinen Befehl dort anzuwenden, was dann ja Bezug nehmend auf die angesprochenen config-Datein sehr problematisch wäre, bzw. gar alle mit vim erstellten Dokumente in einen Ordner zu verschieben und deinen Befehl dann dort drüber laufen zu lassen um sie anschließend wieder zurück zu verschieben (was umständlich und noch viel zeitraubender wäre als die zig 4-Tastenanschläge summiert...).

Eigentlich hatte ich bevor ich diesen Thread eröffnete auch schon an die config-Dateien gedacht, weshalb ich ja (wie der Name des Threads ja auch ausdrückt) "An neue vim bzw. vim.tiny Dokumente automatisch .txt anhängen" wollte und allen bereits erstellten nachträglich händisch dann .txt anhängt hätte.
scientific hat geschrieben: ↑ zum Beitrag ↑
15.08.2017 07:38:29
:w umzudefinieren halte ich für nicht klug. Das benennt dann ja auch Shellscripts um. Oder?
Viel Spaß, wenn du mal am System schraubst...
Deshalb sah ich dann davon ab und hoffte auf eine andere nachträgliche Lösung.

Das mit der Groß-, Kleinschreibung war ja nur ein Nebengedanke, der mir während des Threads hier kam und du hast mir dafür ja auch direkt ein klasse Lösung angeboten, die ich ab nun nutzen werde. ;) :THX:

Ein ganz großes Dankeschön an dich, dass du mir so intensiv versuchst zu helfen und mir auch tolle Lösungen aufzeigst!
Ich denke immer an irgendwas und dann steh' ich plötzlich vor Schwierigkeiten die ich nicht mal ahnen konnte, weil ich nicht weiß womit eine Änderung dann evtl. kollidiert und ich deshalb auf andere Methoden ausweichen muss, oder es einfach immer komplizierter wird... :mrgreen:

@maroc:
Ich möchte doch noch mal kurz auf deinen Vorschlag zurück kommen:
maroc hat geschrieben: ↑ zum Beitrag ↑
14.08.2017 22:39:40
Du könntest eine passende Funktion mit zugehörigem Befehl definieren. Ich habe das mal eben getestet, indem ich den Abschnitt

Code: Alles auswählen

function! Txt(filename) range
    execute "save " . a:filename . ".txt"
endfunction
command! -nargs=1 WT call Txt( <q-args> )
in meine ~/.vimrc eingefügt habe.

Beim Speichern mit

Code: Alles auswählen

:WT DATEINAME
wird automatisch die Endung .txt an DATEINAME angehängt.


EDIT:
Wenn Du wirklich willst, kannst Du zusätzlich auch den eingebauten vim-Befehl w entsprechend umwidmen:

Code: Alles auswählen

function! Txt(filename) range
    execute "save " . a:filename . ".txt"
endfunction
command! -nargs=1 WT call Txt( <q-args> )
cabbrev w WT
Ich hätte das direkt gefragt wenn ich direkt darauf gekommen wäre :lol:
Bedeutet

Code: Alles auswählen

:WT DATEINAME
das ich :WT anstatt :w schreibe oder schreiben kann?
Denn letzteres würde scientific's Einwand dann ja entkräftet, da vim bei :w wie immer abspeichern würde, also ohne .DATEIENDUNG, es sei denn sie wird explizit beim speichern eingetippt.
Kurz kann ich zwei verschiedene vim-Befehle die auch unterschiedlich abspeichern zum speichern benutzen?

Nachtrag:
Ich habe das gerade getestet und die Datei ~/.vimrc mit diesem Inhalt angelegt:

Code: Alles auswählen

function! Txt(filename) range
    execute "save " . a:filename . ".txt"
endfunction
command! -nargs=1 WT call Txt( <q-args> )
Dann wollte ich eine neue datei erstellen:

Code: Alles auswählen

vim.tiny testdatei
Error detected while processing /home/USER/.vimrc:
line    1:
E319: Sorry, the command is not available in this version: function! Txt(filename) range
line    2:
E319: Sorry, the command is not available in this version:     execute "save " . a:filename . ".txt"
line    3:
E319: Sorry, the command is not available in this version: endfunction
line    4:
E319: Sorry, the command is not available in this version: command! -nargs=1 WT call Txt( <q-args> )
Press ENTER or type command to continue
Wenn ich ENTER drücke komme ich in's leere Dokument, wenn ich dieses dann aber mit abspeichern will erscheint:

Code: Alles auswählen

E492: Not an editor command: WT
NACHTRAG 2:
ok Problem gelöst und die Frage mir selbst beantwortet.
Es geht jetzt und es geht zwei verschiedene Speicherkommandos zu haben die unterschiedlich abspeichern!
Allerdings nicht mit vim.tiny sondern nur mit dem 30Mb großen vim.

Vielen lieben Dank an alle die gepostet und geholfen haben, ich hoffe das dieser Thread auch anderen hilft!
:D

Antworten